Реализуйте облако точек SLAM в MATLAB

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

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

Одновременная локализация и картография (SLAM) относится к процессу вычисления положения и ориентации транспортного средства, относительно его среды, одновременно сопоставляя среду. Процесс использует только входные параметры облака точек от датчика. Приложения для облака точек SLAM включают робототехнику и автономное управление автомобилем. Для общего описания на том, почему SLAM имеет значение и как он работает на различные приложения, смотрите то, Что SLAM?

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

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

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

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

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

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

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

  6. Локализуйте — Находят положение транспортного средства на основе собранной карты.

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

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

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

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

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

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

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

  • scanContextLoopDetector объект — объектно-ориентированная память обнаружения закрытия цикла сканирует дескрипторы контекста с соответствующим представлением ID. ID сопоставляет обнаруженное закрытие цикла к представлению в pcviewset.

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

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

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

  1. pcdownsample — Downsample облако точек.

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

  3. pcfitplane, segmentGroundFromLidarData, или segmentGroundSMRF (Lidar Toolbox) — Сегментируйте наземную плоскость, затем используйте select функционируйте, чтобы выбрать желаемые точки.

  4. 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. Добавьте дескрипторы контекста скана в scanContextLoopDetector использование addDescriptor.

  3. Используйте detectLoop функционируйте, чтобы найти потенциальные закрытия цикла.

  4. Укажите облака точек, чтобы определить относительное преобразование положения между представлениями и среднеквадратичной ошибкой (RMSE) Евклидова расстояния между выровненными облаками точек. Используйте RMSE, чтобы отфильтровать недопустимые закрытия цикла. Относительное преобразование положения представляет связь между двумя представлениями. Ребро, сформированное связью между непоследовательными представлениями, называется loop closure edge. Можно добавить связь с pcviewset объект с помощью addConnection функция.

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

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

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

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

Соберите карту

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

Локализуйте транспортное средство в карте

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

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

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

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

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

  • Сегмент, соответствующий с использованием функций Lidar Toolbox — Сборка представление карты сегментов и функций с помощью pcmapsegmatch Объект (Lidar Toolbox). Используйте findPose (Lidar Toolbox) обнаружение закрытия цикла for функции и локализация. Этот подход устойчив к динамическим препятствиям и рекомендуется для крупномасштабных сред. Для примера этого подхода см. Карту Сборки и Локализуйте Используя Сегмент, Совпадающий (с 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] Чен, Янг и Жерар Медьони. “Объектное моделирование Регистрацией Нескольких Изображений Области значений”. Изображение и Видение, Вычисляя 10, № 3 (апрель 1992): 145–55. https://doi.org/10.1016/0262-8856 (92) 90066-C.

[3] Besl, P.J., и Нил Д. Маккей. “Метод для Регистрации 3-D Форм”. Транзакции IEEE согласно Анализу Шаблона и Искусственному интеллекту 14, № 2 (февраль 1992): 239–56. https://doi.org/10.1109/34.121791.

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

[5] Магнуссон, Мартин. “3D Преобразование Нормальных распределений: Эффективное Представление для Регистрации, Поверхностного Анализа и Обнаружения Цикла”. Диссертация, Örebro universitet, 2009. http://urn.kb.se / твердость? 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.

Смотрите также

Функции

Объекты

Похожие темы