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

Figure contains an axes object. The axes object with title LiDAR Scan contains 2 objects of type line.

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

relPose = matchScansGrid(scan2,scan);

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

scan2Tformed = transformScan(scan2,relPose);

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

Figure contains an axes object. The axes object with title LiDAR Scan contains 2 objects of type line.

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

свернуть все

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

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

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

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары 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 является всегда неотрицательным. Большие баллы указывают на лучшее соответствие, но значения варьируются в зависимости от используемых данных о лидаре.

  • Covariance — Предполагаемая ковариация, представляющая доверие вычисленного относительного положения, возвращенного как 3х3 матрица.

Ссылки

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

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

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

Введенный в R2019b