exponenta event banner

insertRay

Вставить луч от наблюдения лазерного сканирования

Описание

пример

insertRay(map,pose,scan,maxrange) вставляет один или несколько наблюдений датчика сканирования лидара в сетку занятости, map, с использованием входных данных lidarScan объект, scan, чтобы получить конечные точки луча. Конечные точки луча считаются свободным пространством, если диапазоны входного сканирования ниже maxrange. Клетки, наблюдаемые как занятые, обновляют наблюдением 0,7. Все остальные точки вдоль луча рассматриваются как свободные от препятствий и обновляются с наблюдением 0,4. Конечные точки выше maxrange не обновляются. NaN значения игнорируются. Это поведение коррелирует с моделью обратного датчика.

insertRay(map,pose,ranges,angles,maxrange) задает показания диапазона в виде векторов, определяемых вводом ranges и angles.

insertRay(map,startpt,endpoints) вставляет наблюдения между сегментами линии от начальной точки до конечных точек. Конечные точки обновляются с помощью вероятностного наблюдения 0,7. Ячейки вдоль отрезков линии обновляются при наблюдении 0,4.

insertRay(___,invModel) вставляет лучи с обновленными вероятностями, заданными в двухэлементном векторе, invModel, что соответствует свободным от препятствий и занятым наблюдениям. Для ввода лучей используйте любой из предыдущих синтаксисов.

Примеры

свернуть все

Создайте пустую сетку занятости.

map = occupancyMap(10,10,20);

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

pose = [5,5,0];
ranges = 3*ones(100,1);
angles = linspace(-pi/2,pi/2,100);
maxrange = 20;

Создать lidarScan с указанными диапазонами и углами.

scan = lidarScan(ranges,angles);

Вставьте данные лазерного сканирования в карту занятости.

insertRay(map,pose,scan,maxrange);

Отображение карты для просмотра результатов вставки лазерного сканирования.

show(map)

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

Проверьте наличие места непосредственно перед транспортным средством.

getOccupancy(map,[8 5])
ans = 0.7000

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

insertRay(map,pose,scan,maxrange);
show(map)

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

getOccupancy(map,[8 5])
ans = 0.8448

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

свернуть все

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

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

Показания сканирования Lidar, указанные как lidarScan объект.

Значения диапазона из данных сканирования, заданные как вектор элементов, измеренных в метрах. Эти значения диапазона - расстояния от датчика при заданных angles. Вектор должен иметь ту же длину, что и соответствующий angles вектор.

Значения углов из данных сканирования, заданные как вектор элементов, измеренных в радианах. Эти угловые значения соответствуют заданным ranges. Вектор должен иметь ту же длину, что и соответствующий ranges вектор.

Максимальная дальность лазерного датчика дальности, заданная как скаляр в метрах. Значения диапазона больше или равны maxrange считаются свободными по всей длине луча, до maxrange.

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

Конечные точки для лучей, заданные как матрица n-by-2 [x y] пары в мировой координатной рамке, где n - длина ranges или angles. Все лучи являются прямыми сегментами, исходящими из startpt.

Значения обратной сенсорной модели, заданные как двухэлементный вектор, соответствующий свободному от препятствий и занятым вероятностям. Точки вдоль луча обновляются в соответствии с моделью инверсного датчика и показаниями заданного диапазона. NaN значения диапазона игнорируются. Значения диапазона больше maxrange не обновляются. См. раздел Инверсная модель датчика.

Подробнее

свернуть все

Инверсная модель датчика

Инверсная модель датчика определяет, как значения устанавливаются вдоль луча от считывания датчика диапазона до препятствий на карте. Можно настроить эту модель, указав различные вероятности для свободного и занятого расположения в invModel аргумент. NaN значения диапазона игнорируются. Значения диапазона больше maxrange не обновляются.

Расположения сетки, содержащие показания диапазона, обновляются с учетом занятой вероятности. Местоположения перед чтением обновляются со свободной вероятностью. Все расположения после чтения не обновляются.

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