matchScansGrid

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

Описание

пример

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

[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. The axes 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. The axes with title LiDAR Scan contains 2 objects of type line.

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

свернуть все

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

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

Ссылки

[1] Гесс, Вольфганг, Деймон Колер, Хольгер Рапп и Дэниел Андор. Закрытие цикла в реальном времени в 2D LIDAR SLAM. 2016 IEEE International Conference on Robotics and Automation (ICRA). 2016.

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

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

.

См. также

Функции

Классы

Введенный в R2020b