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] вектор. Положением транспортного средства является 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