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-на-2 матрица [x y] пары в мировой координатной системе координат, где n - длина ranges или angles. Все лучи являются сегментами линии, которые берут начало в startpt.

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

Подробнее о

свернуть все

Модель обратного датчика

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

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

Введенный в R2019b