point cloud является набором точек в трехмерном пространстве. Облака точек обычно получаются из 3-D сканеров, таких как устройство Kinect® или лидар. У них есть приложения в навигации робота и восприятии, оценке глубины, видении стерео, визуальной регистрации и продвинутых системах помощи водителю (ADAS).
Point cloud registration является процессом выравнивания двух или больше 3-D облаков точек той же сцены в общую систему координат. Mapping является процессом создания карты среды вокруг робота или датчика. Можно использовать регистрацию и сопоставляющий, чтобы восстановить 3-D сцену или создать карту шоссе для локализации. В то время как регистрация обычно предшествует отображению, существуют другие заявления о регистрации, которые не могут потребовать отображения, такого как деформируемое отслеживание движения. Алгоритмы Computer Vision Toolbox™ обеспечивают функции для выполнения регистрации облака точек и отображения. Рабочий процесс состоит из предварительной обработки, регистрации, коррекции дрейфа и выравнивания облаков точек.
Выполните эти шаги, чтобы выполнить регистрацию облака точек и сопоставляющий на последовательности облаков точек. Затем можно локализовать транспортное средство в предварительно созданной карте.
Предварительно обработайте Облака точек — Чтобы подготовить облака точек к регистрации, проредить их и удалить нежелательные функции и шум.
Укажите Облака точек — Регистр каждое облако точек против того, предшествующего ему. Эта регистрация используется в odometry, который является процессом накопления регистрационной оценки по последовательным системам координат. Используя одну только одометрию может вести, чтобы дрейфовать между измеренными положениями и положениями основной истины.
Обнаружьте Циклы — Выполняют обнаружение закрытия цикла, чтобы минимизировать дрейф. Loop closure detection является процессом идентификации возврата датчика к ранее посещаемому местоположению, которое формирует цикл в траектории датчика.
Правильный Дрейф — Использование обнаруженные циклы, чтобы минимизировать дрейф через pose graph optimization, который состоит из инкрементного создания графика положения путем добавления узлов и ребер, и затем оптимизации графика положения, если вы нашли достаточные циклы. Результаты оптимизации графика положения в наборе оптимизированных абсолютных положений.
Соберитесь Карта — Собирают карту облака точек путем выравнивания зарегистрированных облаков точек с помощью их оптимизированных абсолютных положений. Можно использовать такую предварительно созданную карту облака точек для Localization, который является процессом определения местоположения транспортного средства в рамках карты.
Локализуйте — Находят положение транспортного средства на основе собранной карты.
Используйте эти объекты управлять данными, сопоставленными с рабочим процессом отображения и регистрацией облака точек:
pointCloud
объект — объектно-ориентированная память облака точек набор точек, расположенных в трехмерном пространстве. Это использует эффективные стратегии индексации выполнить самые близкие соседние поисковые запросы, которые усилены функциями предварительной обработки и регистрации облака точек.
rigid3d
объект — твердая 3-D объектно-ориентированная память 3-D твердое геометрическое преобразование. В этом рабочем процессе это представляет относительные и абсолютные положения.
pcviewset
объект — объект набора представления облака точек управляет данными, сопоставленными с процессом отображения и одометрией. Это организует данные в виде набора представлений и попарных связей между представлениями. Это также создает и обновляет график положения.
Каждый view состоит из облака точек и связанного абсолютного преобразования положения. Каждое представление имеет уникальный идентификатор в наборе представления и формирует узел графика положения.
Каждый connection хранит информацию, которая соединяет одно представление с другим представлением. Это включает относительное преобразование между связанными представлениями и неопределенностью, вовлеченной в вычисление измерения. Каждая связь формирует ребро в графике положения.
pcmapndt
объект — объектно-ориентированная память карты NDT сжатое, эффективное памятью представление карты для локализации. Объект преобразует карту облака точек в набор вокселей (3-D поля), каждый воксель, представленный 3-D нормальным распределением.
Предварительная обработка включает удаляющие нежелательные функции и шум от облаков точек, и сегментацию или субдискретизацию их. Предварительная обработка может включать эти функции:
pcdownsample
— Downsample облако точек.
pcsegdist
или segmentLidarData
— Сегментируйте данные об облаке точек на кластеры, затем используйте select
функционируйте, чтобы выбрать желаемые точки.
pcfitplane
или segmentGroundFromLidarData
— Сегментируйте наземную плоскость, затем используйте select
функционируйте, чтобы выбрать желаемые точки.
pcdenoise
— Удалите нежелательный шум из облака точек.
Можно использовать pcregisterndt
, pcregistericp
, pcregistercorr
, или pcregistercpd
функционируйте, чтобы указать движущееся облако точек к облаку фиксированной точки. Регистрационные алгоритмы, используемые этими функциями, основаны на алгоритме нормальных распределений преобразовывают (NDT), алгоритме итеративной самой близкой точки (ICP), алгоритме корреляции фазы и алгоритме когерентного дрейфа точки (CPD), соответственно. Для получения дополнительной информации об этих алгоритмах смотрите Ссылки.
При регистрации облака точек выберите тип преобразования, которое представляет, как объекты в сцене изменяются между фиксированными и движущимися облаками точек.
Преобразование | Описание |
---|---|
Твердый | Твердое преобразование сохраняет форму и размер объектов в сцене. Объекты в сцене могут подвергнуться переводам, вращениям или обоим. То же преобразование применяется ко всем точкам. |
Аффинно | Аффинное преобразование позволяет объектам сдвинуть и изменить шкалу в дополнение к перенесению переводам и вращениям. |
Нетвердый | Нетвердое преобразование позволяет форме объектов в сцене изменяться. Точки подвергаются отличным преобразованиям. Поле смещения представляет преобразование. |
Эта таблица сравнивает опции функции регистрации облака точек, их типы преобразования и их показатели производительности. Используйте эту таблицу, чтобы помочь вам выбрать соответствующую регистрационную функцию для своего варианта использования.
Регистрационный метод (функция) | Тип преобразования | Описание | Показатели производительности |
---|---|---|---|
pcregisterndt | Твердый |
| Обеспечьте первоначальную оценку, чтобы позволить алгоритму сходиться быстрее. |
pcregistericp | Твердый | Локальный регистрационный метод, который использует начальную оценку преобразования. | |
pcregistercorr | Твердый |
| Уменьшите размер сеток заполнения, чтобы уменьшить вычислительные требования функции. |
pcregistercpd | Твердый, аффинно, и нетвердый | Глобальный метод, который не использует начальную оценку преобразования | Самый медленный регистрационный метод. Не рекомендуемый для создания карты. |
Регистрация текущего (движущегося) облака точек против предыдущего (фиксированного) облака точек возвращает rigid3d
преобразование, которое представляет предполагаемое относительное положение движущегося облака точек в системе координат облака фиксированной точки. Создание этого относительного преобразования положения со всеми ранее накопленными относительными преобразованиями положения дает оценку абсолютного преобразования положения.
Добавьте представление, сформированное движущимся облаком точек и его абсолютным преобразованием положения к набору представления. Можно добавить представление в pcviewset
объект с помощью addView
функция.
Добавьте odometry edge, ребро, заданное связью между последовательными представлениями, сформированными относительным преобразованием положения между фиксированными и движущимися облаками точек к pcviewset
объект с помощью addConnection
функция.
Локальные регистрационные методы, такие как те, которые используют NDT или ICP (pcregisterndt
или pcregistericp
, соответственно), потребуйте первоначальных оценок для лучшей эффективности. Чтобы получить первоначальную оценку, используйте другой датчик, такой как инерциальный измерительный блок (IMU) или другие формы одометрии.
Для увеличенной точности в регистрационных результатах увеличьте значение для 'MaxIterations'
аргумент или уменьшение значение для 'Tolerance'
аргумент. Изменение этих значений таким образом, следовательно, замедляет регистрационную скорость.
Рассмотрите использование облаков точек субдискретизации pcdownsample
, перед использованием pcregisterndt
, pcregistericp
, или pcregistercpd
, повышать эффективность и точность регистрации.
Использование шумоподавления pcdenoise
прежде чем регистрация может улучшить регистрационную точность, но это может замедлить время выполнения карты, создающей рабочий процесс.
Используя одну только одометрию ведет, чтобы дрейфовать из-за накопления ошибок. Эти ошибки могут привести к серьезным погрешностям по большим расстояниям. Используя основанную на графике одновременную локализацию и картографию (SLAM) корректирует дрейф. Для этого обнаружьте закрытия цикла путем нахождения местоположения посещаемым в предыдущем облаке точек с помощью соответствия дескриптора. Замкните круг, чтобы откорректировать дрейф. Выполните эти шаги обнаружение цикла for и закрытие:
Используйте scanContextDescriptor
функционируйте, чтобы извлечь дескрипторы контекста скана, которые получают отчетливость представления от двух облаков точек в наборе представления.
Используйте scanContextDistance
функция, чтобы вычислить расстояние дескриптора между двумя дескрипторами контекста скана. Если расстояние между двумя дескрипторами ниже заданного порога, то это - потенциальное закрытие цикла.
Укажите облака точек, чтобы определить относительное преобразование положения между представлениями и среднеквадратичной ошибкой (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.
Создайте карту заполнения, использующую функции Navigation Toolbox — Сборка карта заполнения от облаков точек. Для получения дополнительной информации смотрите, Выполняют SLAM Используя 3-D Облака точек Лидара (Navigation Toolbox).
Сегмент, соответствующий с использованием функций Lidar Toolbox — Сборка представление карты сегментов и функций с помощью pcmapsegmatch
Объект (Lidar Toolbox). Используйте findPose
(Lidar Toolbox) обнаружение закрытия цикла for функции и локализация. Для примера этого подхода см. Карту Сборки и Локализуйте Используя Сегмент, Совпадающий (с Lidar Toolbox) пример. Таблица подсвечивает сходства и различия между pcmapndt
и pcmapsegmatch
(Lidar Toolbox) представления карты.
Рабочий процесс | pcmapndt | pcmapsegmatch |
---|---|---|
Алгоритм | Нормальные распределения преобразовывают (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.
findPose
| pcalign
| pcregistercorr
| pcregistercpd
| pcregistericp
| pcregisterndt
| scanContextDescriptor
| scanContextDistance
| show
pcmapndt
| pcviewset
| pointCloud
| rigid3d