Найдите абсолютное положение на карте, которая выравнивает соответствие сегмента
находит абсолютное положение последнего добавленного вида, которое выравнивает сегмент, соответствующий обнаруженному закрытию цикла. Функция ищет сегмент, соответствующий последнему добавленному виду и функциям сегмента внутри подкарты, заданной absPoseMap
= findPose(sMap
,refPose
)SelectedSubmap
свойство sMap
.
[
возвращает идентификатор представления для представления, содержащего большинство inliers. Использование absPoseMap
,matchViewId
] = findPose(sMap
,refPose
)matchViewId
чтобы добавить закрытие цикла как соединение в pcviewset
, используя addConnection
функция объекта. Правильный для накопленного дрейфа использование optimizePoses
.
находит абсолютное положение, выравнивающее сегменты, соответствующие текущим функциям absPoseMap
= findPose(sMap
,currentFeatures
)currentFeatures
к сегментам в подкарте, заданной как SelectedSubmap
свойство sMap
.
задает сегменты absPoseMap
= findPose(sMap
,currentFeatures
,currentSegments
)currentSegments
которые соответствуют текущим функциям currentFeatures
.
[___,
возвращает функции inlier inlierFeatures
,inlierSegments
] = findPose(___)inlierFeatures
и сегменты inlier inlierSegments
в дополнение к любой комбинации аргументов из предыдущих синтаксисов.
[___] = findPose(___,
задает опции, использующие один или несколько аргументов имя-значение в дополнение к входным параметрам в предыдущих синтаксисах. Для примера, Name,Value
)'MaxThreshold',1.5
устанавливает соответствующий порог равным 1.5
процентов.
Удаление сегментов из карты с помощью deleteSegments
, перед использованием findPose
функция, может улучшить эффективность.
findPose
находит абсолютное положение сегментированного облака точек с помощью алгоритма SegMatch [1] для распознавания места. Функция находит совпадения между интересующими сегментами и сегментами на карте и возвращает абсолютное положение, которое выравнивает совпадения сегментов на карте.
Создание карты: Обнаружение замыкания цикла - Закрытие цикла начинается с нахождения абсолютного положения путем нахождения совпадений сегмента между последним добавленным видом и функциями сегмента в выбранной подкарте, что задано SelectedSubmap
свойство карты.
Последнее добавленное представление соответствует замыканию цикла, когда findPose
функция может оценить допустимое геометрическое преобразование. Если функция не может оценить это преобразование, то функция возвращает пустое значение для absPoseMap
.
Создание карты: Правильный дрейф - Чтобы исправить дрейф, добавьте представление, которое содержит большинство инлиеров для замыкания цикла как соединения с набором представления облака точек pcviewset
объект как соединение, используя addConnection
функция объекта. Используйте optimizePoses
функция для коррекции накопленного дрейфа.
Локализация - Чтобы найти абсолютное положение облака точек на карте, функция ищет сегмент, соответствующий между текущими функциями currentFeatures
и подкарту, заданную как SelectedSubmap
свойство sMap
. Если он не может оценить допустимое геометрическое преобразование, не может быть оценено, функция возвращает пустое значение для absPoseMap
выходной аргумент.
Визуализация - Используйте inlierFeatures
и inlierSegments
выводить аргументы с pcshowMatchedFeatures
функция для визуализации совпадений сегментов между функциями и сегментами, включенными в карту.
[1] Dube, Renaud, Daniel Dugas, Elena Stumm, Juan Nieto, Roland Siegwart, and Cesar Cadena. SegMatch: Segment Based Place Recognition in 3D Облаков точек (неопр.) (недоступная ссылка). В 2017 году IEEE International Conference on Robotics and Automation (ICRA), 5266-72. Сингапур, Сингапур: IEEE, 2017. https://doi.org/10.1109/ICRA.2017.7989618.