Обзор визуального SLAM

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

Алгоритмы Visual SLAM широко классифицируются по двум категориям, в зависимости от того, как они оценивают движение камеры. Косвенный метод на основе признаков использует функцию точки изображений, чтобы минимизировать ошибку репроекции. Прямой метод использует общую яркость изображений, чтобы минимизировать фотометрическую ошибку. Алгоритмы Computer Vision Toolbox™ обеспечивают функции для выполнения визуального SLAM на основе признаков. Рабочий процесс состоит из инициализации карты, отслеживания, локального отображения, обнаружения цикла и коррекции дрейфа.

Примечание

Рабочий процесс, описанный в этом обзоре, применяется к изображениям, сделанным камерой pinhole. Чтобы использовать визуальный рабочий процесс SLAM с изображениями, сделанными fisheye-камерой, преобразуйте fisheye-камеру в виртуальную камеру pinhole с помощью undistortFisheyeImage функция.

Термины, используемые в Visual SLAM

В литературе Visual SLAM используются следующие общие термины:

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

  • Точки карты - список 3-D мировых точек, которые представляют карту окружения, восстановленную из ключевых систем координат.

  • Covisibility Графика - график ключевых систем координат как узлов. Два ключевых кадра соединяются ребро, если они имеют общие точки карты. Вес ребра - это количество общих точек карты.

  • База данных распознавания - база данных, которая хранит визуальное отображение слова с изображением на основе входного набора признаков. Определите, посещалось ли место в прошлом, путем поиска в базе данных изображения, которое визуально подобно изображению запроса.

Типичный рабочий процесс Visual SLAM на основе функций

Чтобы создать визуальный трубопровод SLAM на основе признаков на последовательности изображений, выполните следующие шаги:

  1. Инициализация карты - Инициализация карты 3-D точек из двух систем координат изображения. Вычислите точки 3-D и относительное положение камеры с помощью триангуляции на основе 2-D соответствий функций.

  2. Характеристики дорожки - Для каждой новой системы координат оцените положение камеры, сопоставив характеристики в текущей системе координат с функциями в последней ключевой системе координат.

  3. Создать локальную карту - Если вы идентифицируете текущую систему координат как ключевая система координат, создайте новую 3-D карту точек. Используйте настройку пучка, чтобы уточнить положение камеры и точки 3-D.

  4. Обнаружение циклов - Обнаружение циклов для каждой ключевой системы координат путем сравнения текущей системы координат со всеми предыдущими ключевыми системами координат с помощью подхода набор признаков.

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

Рисунок иллюстрирует типичный визуальный рабочий процесс SLAM на основе признаков. Он также показывает точки, в которых данные хранятся или извлекаются из объектов, которые управляют данными.

Flow chart diagram showing map initialization, tracking, local mapping, loop detection, and drift correction.

Управление ключевыми системами координат и данными карты

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

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

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

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

    • Использование rigid3d входной параметр объекта с imageviewset для хранения абсолютных положений камеры и относительных положений камеры на ребрах одометрии. Использование affine3d входной параметр объекта с imageviewset для хранения соответствующих положений камеры на ребрах замыкания контура.

  • Используйте worldpointset объект для хранения соответствий между точками карты 3-D и точками 2-D изображения между полями зрения камеры.

    • The WorldPoints свойство worldpointset сохраняет 3-D местоположения точек карты.

    • The Correspondence свойство worldpointset сохраняет идентификаторы видов ключевых систем координат, которые наблюдают точки карты.

Инициализация карты

Чтобы инициализировать отображение, вы должны соответствовать функциям между двумя изображениями, оценить относительное положение камеры и триангулировать начальные точки 3-D мира. Этот процесс обычно использует ускоренные робастные функции (SURF) и ориентированные функции FAST и Rotated BRIEF (ORB). Рабочий процесс инициализации карты состоит из обнаружения, извлечения и соответствия функций, а затем поиска относительной оценки положения камеры, нахождения 3-D местоположений совпадающих функций и уточнения исходной карты. Наконец, сохраните получившиеся ключевые системы координат и сопоставленные точки в наборе видов изображений и наборе мировых точек, соответственно.

Рабочий процессФункцияОписание
ОбнаружитьdetectSURFFeaturesОбнаружение функций SURF и возврат SURFPoints объект.
detectORBFeaturesОбнаружение функций ORB и возврат ORBPoints объект.
ИзвлечениеextractFeaturesИзвлеките векторы функций и их соответствующие местоположения в двоичном изображении или изображении интенсивности.
МатчmatchFeatures Получите индексы совпадающих функций между двумя наборами функций.
Оцените относительное положение камеры из совпадающих точек функцииestimateGeometricTransform2D Вычислите гомографию из совпадающих пар точек.
estimateFundamentalMatrix Оцените фундаментальную матрицу из совпадающих пар точек.
relativeCameraPose Вычислите относительные положения камеры, представленные как rigid3d объект, основанный на гомографии или фундаментальной матрице. Расположение можно вычислить только до масштаба, поэтому расстояние между двумя камерами установлено на 1.
Найти 3-D местоположения совпадающих точек функцииtriangulate Найдите 3-D местоположения совпадающих пар неискаженных точек изображения.
Уточнить начальную картуbundleAdjustment Уточните 3-D точки карты и положения камеры, которые минимизируют ошибки репроекции.
Управляйте данными для начальной карты и ключевых систем координатaddView Добавьте два вида, образованные точками функции, и их абсолютные положения к imageviewset объект.
addConnection Добавьте ребро одометрии, заданный связью между последовательными ключевыми видами, образованной относительным преобразованием положения между камерами, к imageviewset объект.
addWorldPoints Добавьте начальные точки карты к worldpointset объект.
addCorrespondences Добавьте 3-D к 2-D проекционным соответствиям между ключевыми системами координат и точками карты к worldpointset объект.

Отслеживание

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

Рабочий процессФункцияОписание
Совпадение извлечённых функцийmatchFeaturesСопоставьте извлечённые функции из текущей системы координат с функциями в последней ключевой системе координат, которые имеют известные 3-D местоположения.
Оценка положения камерыestimateWorldCameraPoseОцените текущее положение камеры.
Проектируйте точки картыworldToImageПроецируйте точки карты, наблюдаемые последней ключевой системой координат, в текущую систему координат.
Поиск соответствий функцийmatchFeaturesInRadiusПоиск соответствий функций в пространственных ограничениях.
Уточните положение камерыbundleAdjustmentMotionУточните положение камеры с помощью 3-D для 2-D соответствия путем настройки пучка только для движения.
Идентифицируйте локальные точки карты

findWorldPointsInView

findWorldPointsInTracks

Идентифицируйте точки в представлении и точки, которые соответствуют точечным дорожкам.
Поиск дополнительных соответствий функцийmatchFeaturesInRadiusПоиск дополнительных соответствий функций в текущей системе координат, который содержит проективные локальные точки карты.
Уточните положение камеры bundleAdjustmentMotionУточните положение камеры с помощью 3-D для 2-D соответствия путем настройки пучка только для движения.
Сохраните новую ключевую систему координат

addView

addConnection

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

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

  • matchFeatures - Возвращает индексы соответствующих функций в двух входных наборах функций.

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

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

Локальное отображение

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

Рабочий процессФункцияОписание
Соедините ключевые системы координат connectedViewsНайдите завидные ключевые системы координат текущего ключевого кадра.
Поиск совпадений в связанных системах координатmatchFeaturesДля каждой несопоставленной точки функции в текущей ключевой системе координат используйте matchFeatures функция для поиска соответствия с другими несопоставленными точками в завидимых системах координат.
Вычислите местоположение для новых совпаденийtriangulateВычислите 3-D местоположения совпадающих точек функции.
Храните новые точки картыaddWorldPointsДобавьте новые точки карты к worldpointset объект.
Сохраните 3-D для 2-D соответствийaddCorrespondencesДобавьте новые 3-D к 2-D соответствиям worldpointset объект.
Обновление соединения одометрииupdateConnectionОбновите соединение между текущей ключевой системой координат и его ковисабельными системами координат с большим количеством совпадений функций.
Уточнить положениеbundleAdjustment

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

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

Удалите выбросыremoveWorldPointsУдалите точки карты выбросов с большими ошибками репроекции из worldpointset объект. Связанное с 2-D 3-D соответствия удаляется автоматически.

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

ФункцияПоложения фотоаппаратаТочки картыКоличество камер
bundleAdjustmentОптимизированныйОптимизированныйНесколько
bundleAdjustmentMotionОптимизированныйФиксированныйОдин
bundleAdjustmentStructureФиксированныйОптимизированныйНесколько

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

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

Рабочий процессФункцияОписание
Создайте сумку визуальных словbagOfFeaturesСоздайте пакет визуальных слов для распознавания места.
Создайте базу данных распознаванияindexImagesСоздайте базу данных распознавания, invertedImageIndex, для сопоставления визуальных слов с изображениями.
Идентифицируйте кандидатов на закрытие циклаretrieveImagesПоиск изображений, которые аналогичны текущей ключевой системе координат. Идентифицируйте последовательные изображения как кандидаты замыкания цикла, если они аналогичны текущей системе координат. В противном случае добавьте текущую ключевую систему координат в базу данных распознавания.
Вычислите относительное положение камеры для кандидатов замыкания циклаestimateGeometricTransform3DВычислите относительное положение камеры между ключевой системой координат кандидата и текущей ключевой системой координат для каждого кандидата на закрытие цикла
Замкнутый циклaddConnectionЗакройте цикл, добавив ребро замыкания цикла с относительным положением камеры к imageviewset объект.

Коррекция дрейфа

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

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

Визуализация

Для разработки визуальной системы SLAM можно использовать следующие функции визуализации.

ФункцияОписание
imshowОтобразите изображение
showMatchedFeaturesОтобразите совпадающие точки функции на двух изображениях
plotПостройте графики наборов видов изображений и соединений
plotCameraПостройте график камеры в 3-D координатах
pcshowПостройте график 3-D облаке точек
pcplayerВизуализация потоковых данных 3-D облака точек

Ссылки

[1] Хартли, Ричард и Эндрю Зиссерман. Несколько видов геометрии в Компьютерное Зрение. Cambridge: Cambridge University Press, 2003.

[2] Фраундорфер, Фридрих и Давиде Скарамуцца. Визуальная одометрия: Часть II: Совпадение, робастность, оптимизация и приложения. IEEE Robotics & Automation Magazine 19, № 2 (июнь 2012): 78-90. https://doi.org/10.1109/MRA.2012.2182810.

[3] Mur-Artal, Raul, J. M. Montiel, and Juan D. Tardos. ORB-SLAM: универсальная и точная монокулярная система SLAM. Транзакции IEEE по робототехнике 31, № 5 (октябрь 2015): 1147-63. https://doi.org/10.1109/TRO.2015.2463671.

[4] Kümmerle, Rainer, Giorgio Grisetti, Hauke Strasdat, Kurt Konolige и Wolfram Burgard. "G2o: Общая среда для оптимизации графика ". В 2011 году Международная конференция IEEE по робототехнике и автоматизации (ICRA 2011), Шанхай, 9-13 мая 2011 года, 3607-13. Нью-Йорк: Институт инженеров по электротехнике и электронике. https://doi.org//10.1109/ICRA.2011.5979949 .

См. также

Функции

Объекты

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте