raycast

Класс: робототехника. OccupancyGrid
Пакет: робототехника

Вычислите индексы ячейки вдоль луча

Синтаксис

[endpoints,midpoints] = raycast(map,pose,range,angle)
[endpoints,midpoints] = raycast(map,p1,p2)

Описание

[endpoints,midpoints] = raycast(map,pose,range,angle) возвращает индексы ячейки заданного map для всех ячеек, пересеченных лучом, происходящим из заданного pose в заданном angle и значениях range. endpoints содержит все индексы, затронутые к концу луча со всеми другими точками, включенными в midpoints.

пример

[endpoints,midpoints] = raycast(map,p1,p2) возвращает индексы ячейки линейного сегмента между двумя заданными точками.

Примеры

развернуть все

Используйте метод raycast, чтобы сгенерировать индексы ячейки для всех ячеек, пересеченных лучом.

Создайте пустую карту. С низким разрешением карта используется, чтобы проиллюстрировать влияние местоположений сетки.

map = robotics.OccupancyGrid(10,10,1);
show(map)

Получите индексы сетки средних точек и конечные точки луча от p1 до p2. Установите значения заполнения для этих индексов сетки. Средние точки обработаны как открытое пространство. Конечные точки обновляются с занятым наблюдением.

p1 = [2 3];
p2 = [8.5 8];
[endPts,midPts] = raycast(map,p1,p2);
setOccupancy(map,midPts,zeros(length(midPts),1),'grid');
setOccupancy(map,endPts,ones(length(endPts),1),'grid');

Постройте исходный луч по карте. Заметьте, что каждая ячейка сетки, затронутая строкой, обновляется. Отправная точка перекрывает несколько ячеек, и строка касается ребра определенных ячеек, но все ячейки все еще обновляются.

show(map)
hold on
plot([p1(1) p2(1)],[p1(2) p2(2)],'-b','LineWidth',2)
plot(p2(1),p2(2),'or')
grid on

Входные параметры

развернуть все

Сопоставьте представление, заданное как объект robotics.OccupancyGrid. Этот объект представляет среду робота. Объект содержит матричную сетку со значениями, представляющими вероятность заполнения той ячейки. Значения близко к 1 представляют высокую уверенность, что ячейка содержит препятствие. Значения близко к 0 представляют уверенность, что ячейка не занята и свободное препятствие.

Положение и ориентация робота, заданного как вектор [x y theta]. Положением робота является x и положение y с угловой ориентацией (в радианах) измеренный от x - ось.

Значение области значений, заданное как скаляр в метрах.

Угловое значение, заданное как скаляр в радианах. Угловое значение является определенной угловой ориентацией данного range.

Отправная точка луча, заданного как [x y] двухэлементный вектор. Точка задана в кадре координаты робота.

Конечная точка луча, заданного как [x y] двухэлементный вектор. Точка задана в кадре координаты робота.

Выходные аргументы

развернуть все

Индексы конечной точки, возвращенные как матрица [i j]. Конечные точки - то, где значение range нападает на заданный angle. Несколько индексов только даны, если точка пересекает местоположения сетки.

Индексы средней точки, возвращенные как матрица [i j]. Этот аргумент включает все индексы сетки, которые луч пересекает, исключая конечную точку.

Введенный в R2017b

Для просмотра документации необходимо авторизоваться на сайте