Обзор облака точек SLAM

point cloud является набором точек в трехмерном пространстве. Облака точек обычно получаются из 3-D сканеров, таких как лидар или Kinect® устройство. Они имеют приложения в навигации и восприятии робота, оценке глубины, видении стерео, визуальной регистрации и передовых системах помощи драйверу (ADAS).

Point cloud registration - это процесс выравнивания двух или более 3-D облаков точек одной сцены в общую систему координат. Mapping - процесс создания карты окружения вокруг робота или датчика. Вы можете использовать регистрацию и картографию, чтобы восстановить 3-D сцену или создать карту дорожного полотна для локализации. Хотя регистрация обычно предшествует отображению, существуют другие приложения для регистрации, которые могут не потребовать отображения, такие как деформируемое отслеживание движения. Алгоритмы Computer Vision Toolbox™ обеспечивают функции для выполнения регистрации и отображения облака точек. Рабочий процесс состоит из предварительной обработки, регистрации, коррекции дрейфа и выравнивания облаков точек.

Рабочий процесс отображения и локализации

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

  1. Предварительная обработка облаков точек - Чтобы подготовить облака точек к регистрации, понижайте их и удаляйте нежелательные функции и шум.

  2. Регистрируйте облака точек - регистрируйте каждое облако точек относительно предшествующего облака. Эти регистрации используются в odometry, которая является процессом накопления оценки регистрации в последующих системах координат. Использование одометрии может привести к дрейфу между измеренным и основная истина положений.

  3. Обнаружение циклов - Выполните обнаружение замыкания цикла, чтобы минимизировать дрейф. Loop closure detection является процессом идентификации возврата датчика в ранее посещенное место, который образует цикл в траектории датчика.

  4. Правильный дрейф - Используйте обнаруженные петли, чтобы минимизировать дрейф через pose graph optimization, который состоит из пошагового создания графика положения путем добавления узлов и ребер, а затем оптимизации графа положения, когда вы нашли достаточное количество циклов. Оптимизация графика положения приводит к набору оптимизированных абсолютных положений.

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

  6. Localize - Найти положение транспортного средства на основе собранной карты.

Управление данными для отображения и локализации

Используйте эти объекты для управления данными, связанными с рабочим процессом регистрации и отображения облака точек:

  • pointCloud объект - Объект облака точек хранит набор точек, расположенных в трехмерном пространстве. Он использует эффективные стратегии индексации для выполнения поиска по ближайшему соседу, которые используются функциями предварительной обработки и регистрации облака точек.

  • rigid3d объект - Объект твердого 3-D сохраняет 3-D твердое геометрическое преобразование. В этом рабочем процессе он представляет относительное и абсолютное положения.

  • pcviewset объект - Объект набора представлений облака точек управляет данными, связанными с процессом одометрии и отображения. Он организует данные как набор представлений и парных связей между представлениями. Он также создает и обновляет график положения.

    • Каждый view состоит из облака точек и связанного преобразования абсолютного положения. Каждое представление имеет уникальный идентификатор в наборе представлений и образует узел графика положения.

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

  • pcmapndt объект - Объект карты NDT хранит сжатое, эффективное для памяти представление карты для локализации. Объект преобразует карту облака точек в набор вокселей (3-D ящиков), каждый воксель представлен 3-D нормальным распределением.

Предварительная обработка облаков точек

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

  • pcdownsample - Понижайте значение облака точек.

  • pcsegdist или segmentLidarData - Сегментируйте данные облака точек в кластеры, затем используйте select функция для выбора нужных точек.

  • pcfitplane или segmentGroundFromLidarData - Сегментируйте наземную плоскость, затем используйте select функция для выбора нужных точек.

  • pcdenoise - Удалите нежелательный шум из облака точек.

Регистрируйте облака точек

Вы можете использовать pcregisterndt, pcregistericp, pcregistercorr, или pcregistercpd функция для регистрации движущееся облако точек в фиксированное облако точек. Алгоритмы регистрации, используемые этими функциями, основаны на алгоритме преобразования нормальных распределений (NDT), итерационном алгоритме ближайшей точки (ICP), алгоритме корреляции фазы и алгоритме когерентного дрейфа точки (CPD), соответственно. Для получения дополнительной информации об этих алгоритмах см. «Ссылки».

При регистрации облака точек выберите тип преобразования, которое представляет изменение объектов в сцене между облаками фиксированных и движущихся точек.

ПреобразованиеОписание
ТвердыйТвердое преобразование сохраняет форму и размер объектов в сцене. Объекты в сцене могут подвергаться перемещениям, вращениям или обоим. То же преобразование применяется ко всем точкам.
АффинноПреобразование аффина позволяет объектам сдвигать и изменять шкалу в дополнение к перемещениям и вращениям.
НетвердыйНеригидное преобразование позволяет изменять форму объектов в сцене. Точки претерпевают отдельные преобразования. Поле перемещения представляет преобразование.

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

Метод регистрации (функция)Тип преобразованияОписаниеЭффективность
pcregisterndtТвердый
  • Локальный метод регистрации, который полагается на начальную оценку преобразования.

  • Крепкий к выбросам.

  • Лучше с облаками точек с различными разрешениями и плотностями.

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

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

pcregistercorrТвердый
  • Метод регистрации, который полагается на сетку заполнения, присваивая значения вероятностей сетке на основе Z значений координат точек в каждой камере сетки.

  • Лучше всего подходит для наземного транспортного средства навигации

Уменьшите размер сетки заполнения, чтобы уменьшить вычислительные требования функции.
pcregistercpdТвердый, аффинный и неригидый

Глобальный метод, который не полагается на начальную оценку преобразования

Самый медленный метод регистрации. Не рекомендуемый для создания карты.

Регистрация текущего (скользящего) облака точек относительно предыдущего (фиксированного) облака точек возвращает rigid3d преобразование, которое представляет расчетное относительное положение движущееся облако точек в системе координат фиксированного облака точек. Составление этого относительного преобразования положения со всеми ранее накопленными относительными преобразованиями положения дает оценку абсолютного преобразования положения.

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

Добавьте odometry edge, ребро, заданную связью между последовательными представлениями, образованную относительным преобразованием положения между фиксированными и движущимися облаками точек к pcviewset использование объекта addConnection функция.

Советы по регистрации

  • Локальные методы регистрации, такие как те, которые используют NDT или ICP (pcregisterndt или pcregistericp, соответственно), требуют первоначальных оценок для повышения эффективности. Чтобы получить начальную оценку, используйте другой датчик, такой как инерциальный измерительный блок (IMU) или другие формы одометрии.

  • Для повышения точности результатов регистрации увеличьте значение для 'MaxIterations' аргумент или уменьшите значение для 'Tolerance' аргумент. Изменение этих значений таким образом, следовательно, замедляет скорость регистрации.

  • Рассмотрите понижение дискретизации облаков точек с помощью pcdownsample, перед использованием pcregisterndt, pcregistericp, или pcregistercpd, для повышения эффективности и точности регистрации.

  • Шумоподавление с использованием pcdenoise прежде чем регистрация может улучшить точность регистрации, но это может замедлить время выполнения рабочего процесса создания карты.

Обнаружение циклов

Использование одометрии приводит к дрейфу из-за накопления ошибок. Эти ошибки могут привести к серьезным неточностям на больших расстояниях. Использование на основе графа одновременной локализации и картографии (SLAM) исправляет дрейф. Для этого обнаружите замыкания цикла путем нахождения местоположения, посещенного в предыдущем облаке точек, используя соответствие дескриптора. Закройте цикл, чтобы исправить дрейф. Выполните следующие шаги для обнаружения и закрытия цикла:

  1. Используйте scanContextDescriptor функция для извлечения дескрипторов контекста скана, которые фиксируют отличительность представления, из двух облаков точек в наборе представлений.

  2. Используйте scanContextDistance функция для вычисления расстояния дескриптора между двумя контекстными дескрипторами скана. Если расстояние между двумя дескрипторами ниже заданного порога, то это потенциальное закрытие цикла.

  3. Зарегистрируйте облака точек, чтобы определить относительное преобразование положения между видами и среднеквадратичной ошибкой (RMSE) евклидова расстояния между выровненными облаками точек. Используйте RMSE для фильтрации недопустимых закрытий цикла. Относительное преобразование положения представляет связь между этими двумя видами. Ребро, образованный связью между нескучными взглядами, называется loop closure edge. Вы можете добавить соединение к pcviewset использование объекта addConnection функция.

Для альтернативного подхода к обнаружению замыкания цикла на основе соответствия сегментов смотрите findPose (Lidar Toolbox) функция.

Правильный дрейф

The pcviewset объект внутренне обновляет график положения при добавлении представлений и соединений. Чтобы минимизировать дрейф, выполните оптимизацию графика положения с помощью optimizePoses функция, после обнаружения достаточного количества замыканий цикла. optimizePoses функция возвращает pcviewset объект с оптимизированными преобразованиями абсолютного положения для каждого вида.

Вы можете использовать createPoseGraph функция для возврата графика положения в виде MATLAB® digraph объект. Можно использовать алгоритмы графа в MATLAB, чтобы просмотреть, просмотреть или изменить график положения. Используйте optimizePoseGraph (Navigation Toolbox) функция для оптимизации измененного графика положения, а затем используйте updateView функция для обновления положений в наборе видов.

Сборка карты

Используйте pcalign функция для создания карты облака точек с помощью облаков точек из набора представлений и их оптимизированных преобразований абсолютного положения. Теперь эта карта облака точек может использоваться для локализации в режиме онлайн с помощью алгоритма локализации NDT.

Локализация транспортного средства на карте

Преобразуйте предварительно построенную карту облака точек в формат карты NDT с помощью pcmapndt объект. The pcmapndt объект сохраняет карту в сжатой воксели представлении, которое можно сохранить на диск и использовать для локализации в Интернете. Используйте findPose функция для локализации в карте.

Альтернативные рабочие процессы

Альтернативные рабочие процессы для создания карты и локализации доступны в Computer Vision Toolbox, Navigation Toolbox™ и Lidar Toolbox™.

  • Визуальный SLAM с использованием функций Computer Vision Toolbox - Вычислите положение и ориентацию камеры относительно ее окружения, одновременно отображая среду. Для получения дополнительной информации см. Обзор Visual SLAM.

  • Создайте карту заполнения с помощью функций Navigation Toolbox - Создайте карту заполнения из облаков точек. Для получения дополнительной информации смотрите Выполнение SLAM Использование облаков точек 3-D лидар (Navigation Toolbox).

  • Соответствие сегментов с использованием функций Lidar Toolbox - создайте представление карты сегментов и элементов с помощью pcmapsegmatch (Lidar Toolbox) объект. Используйте findPose (Lidar Toolbox) функция для обнаружения замыкания цикла и локализации. Пример этого подхода см. в примерах Build Map и Localize Using Segment Matching (Lidar Toolbox). Таблица подчеркивает сходства и различия между pcmapndt и pcmapsegmatch (Lidar Toolbox) представления карты.

    Рабочий процессpcmapndtpcmapsegmatch
    АлгоритмПреобразование нормальных распределений (NDT)SegMatch - подход соответствия сегментов
    ОтображениеСоздайте карту сначала - пошагово создайте карту используя pcviewset. Затем используйте pcalign чтобы собрать карту и преобразовать предварительно построенную карту в представление карты NDT.Создайте карту пошагово, используя pcmapsegmatch (Lidar Toolbox) - добавить представления в pcviewset (использование addView) и к pcmapsegmatch (Lidar Toolbox) (использование addView (Lidar Toolbox)) для каждого скана облака точек. Обнаружение закрытий цикла с помощью findPose (Lidar Toolbox) и исправить для накопленного дрейфа с optimizePoses.
    Подобие локализации

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

    Локализация РазличияПолагается на оценку положения.Не полагается на оценку положения.
    ВизуализацияВизуализируйте карту или выбранную подкарту с помощью show функция pcmapndt объект или show (Lidar Toolbox) функция pcmapsegmatch (Lidar Toolbox) объект.

Ссылки

[1] Мыроненко, Андрей и Сюбо Сон. «Регистрация набора точек: когерентный дрейф точек». Транзакции IEEE по анализу шаблонов и машинной разведке 32, № 12 (декабрь 2010): 2262-75. https://doi.org/10.1109/TPAMI.2010.46

[2] Chen, Yang, and Gérard Medioni. Моделирование объекта путем регистрации изображений нескольких областей значений. Image and Vision Computing 10, № 3 (апрель 1992): 145-55. https://doi.org/10.1016/0262-8856 (92) 90066-C.

[3] Besl, P.J., and Neil D. McKay. «Метод регистрации 3-D фигур». Транзакции IEEE по анализу шаблонов и машинной разведке 14, № 2 (февраль 1992 года): 239-56. https://doi.org/10.1109/34.121791.

[4] Biber, P., and W. Strasser. Преобразование нормальных распределений: новый подход к лазерному Сопоставлению сканов. В Трудах 2003 IEEE/RSJ Международная конференция по интеллектуальным роботам и системам (IROS 2003) (Кат. № 03CH37453), 3:2743–48. Лас-Вегас, Невада, США: IEEE, 2003. https://doi.org/10.1109/IROS.2003.1249285.

[5] Магнуссон, Мартин. Трехмерное преобразование нормальных распределений: эффективное представление для регистрации, анализа поверхности и обнаружения цикла. Докторская диссертация, университет Эребру, 2009. http://urn.kb.se/resolve?urn=urn: nbn: se: oru: diva-8458 urn: nbn: se: oru: diva-8458

[6] Димитриевский, Мартин, Дэвид Ван Хамме, Питер Веэлэрт и Уилфрид Филипс. «Устойчивое соответствие карт заполнения для одометрии в автономных транспортных средствах». В трудах 11-й Совместной конференции по теории и применениям компьютерного зрения, визуализации и компьютерной графики, 626-33. Рим, Италия: SCITEPRESS - Научно-технические публикации, 2016. https://doi.org/10.5220/0005719006260633.

См. также

Функции

Объекты

Похожие темы