exponenta event banner

raycast

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

Описание

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

пример

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

Примеры

свернуть все

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

Создайте пустую карту. Карта с низким разрешением используется для иллюстрации местоположения сетки.

map = occupancyMap(10,10,1);
show(map)

Figure contains an axes. The axes with title Occupancy Grid contains an object of type image.

Получение индексов сетки средних и конечных точек луча из [2 3] кому [8.5 8]. Задайте значения занятости для этих индексов сетки. Средние точки рассматриваются как открытое пространство. Обновление конечных точек с помощью занятого наблюдения.

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

Figure contains an axes. The axes with title Occupancy Grid contains 3 objects of type image, line.

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

свернуть все

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

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

Диапазон лучей, заданный как скаляр в метрах.

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

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

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

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

свернуть все

Индексы конечных точек, возвращаемые в виде матрицы n-by-2 [i j] пар, где n - число индексов сетки. Конечные точки находятся там, где range попадание значения при указанном angle. Если конечная точка находится на границе нескольких ячеек, возвращается несколько индексов.

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

Представлен в R2019b