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)

Проверяйте заполнение пятна непосредственно перед транспортным средством.

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

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

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

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

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

свернуть все

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

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

Лоцируйте показания сканирования в виде lidarScan объект.

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

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

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

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

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

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

Больше о

свернуть все

Обратная модель датчика

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

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

Введенный в R2019b