matchScansGrid

Оцените положение между двумя сканированиями лидара с помощью основанного на сетке поиска

Описание

пример

pose = matchScansGrid(currScan,refScan) находит относительное положение между ссылочным lidarScan и текущий lidarScan объект с помощью основанного на сетке поиска. matchScansGrid преобразует пары сканирования лидара в вероятностные сетки и находит положение между двумя сканированиями путем корреляции их сеток. Функция использует стратегию метода ветвей и границ ускорить расчет по большим дискретизированным окнам поиска.

[pose,stats] = matchScansGrid(___) возвращает дополнительную статистику о результате соответствия сканирования с помощью предыдущих входных параметров.

[___] = matchScansGrid(___,Name,Value) задает опции с помощью одного или нескольких Name,Value парные аргументы. Например, 'InitialPose',[1 1 pi/2] задает начальную оценку положения для соответствия сканирования.

Примеры

свернуть все

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

Загрузите лазерные данные сканирования. Эти два сканирования от фактического датчика лидара с изменениями в роботе, позируют и хранятся как lidarScan объекты.

load laserScans.mat scan scan2
plot(scan)
hold on
plot(scan2)
hold off

Используйте matchScansGrid оценить положение между двумя сканированиями.

relPose = matchScansGrid(scan2,scan);

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

scan2Tformed = transformScan(scan2,relPose);

plot(scan)
hold on
plot(scan2Tformed)
hold off

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

свернуть все

Текущие показания сканирования лидара, заданные как lidarScan объект.

Ваше сканирование лидара может содержать Inf и NaN значения, но алгоритм игнорирует их.

Ссылочные показания сканирования лидара, заданные как lidarScan объект.

Ваше сканирование лидара может содержать Inf и NaN значения, но алгоритм игнорирует их.

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'InitialPose',[1 1 pi/2]

Исходное предположение текущего положения относительно ссылочного лазерного сканирования, заданного как разделенная запятой пара, состоящая из 'InitialPose' и [x y theta] вектор. [x y] перевод в метрах и theta вращение в радианах.

Ячейки сетки на метр, заданный как разделенная запятой пара, состоящая из 'Resolution' и положительное целое число. Точность результата соответствия сканирования точна до размера ячейки сетки.

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

Поисковая область значений для перевода, заданного как разделенная запятой пара, состоящая из 'TranslationSearchRange' и [x y] вектор. Эти значения задают окно поиска в метрах вокруг начальной оценки перевода, данной в InitialPose. Если InitialPose дан как [x0 y0], затем координатами окна поиска является [x0-x x0+x] и [y0-y y0+y]. Этот параметр используется только когда InitialPose задан.

Поисковая область значений для вращения, заданного как разделенная запятой пара, состоящая из 'RotationSearchRange' и положительная скалярная величина. Это значение задает окно поиска в радианах вокруг начальной оценки вращения, данной в InitialPose. Если InitialPose вращение дано как th0, затем окном поиска является [th0-a th0+a], где a область значений поиска вращения. Этот параметр используется только когда InitialPose задан.

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

свернуть все

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

Отсканируйте соответствие со статистикой, возвращенной как структура со следующим полем:

  • Score — Числовой скаляр, представляющий счет при выполнении соответствия сканирования. Этот счет является оценкой вероятности, что преобразованное текущее сканирование совпадает со ссылочным сканированием. Score является всегда неотрицательным. Большие баллы указывают на лучшее соответствие, но значения варьируются в зависимости от используемых данных о лидаре.

Ссылки

[1] Гесс, Вольфганг, Дэймон Колер, Хольгер Рапп и Дэниел Андор. "Закрытие цикла в реальном времени в 2D ЛИДАРЕ SLAM". 2 016 международных конференций IEEE по вопросам робототехники и автоматизации (ICRA). 2016.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2019b