Открыть сервис

ORB-SLAM

ORB-SLAM — это библиотека алгоритмов и система визуальной одометрии и одновременной локализации и построения карты (SLAM), работающая на основе детектора и дескриптора ORB (Oriented FAST and Rotated BRIEF). Система позволяет роботу или камере в реальном времени определять собственное положение в трёхмерном пространстве и одновременно строить карту окружающей среды, используя только данные с видеокамеры (монокулярной, стерео или RGB-D). ORB-SLAM является одной из наиболее известных и широко используемых реализаций SLAM в робототехнике и компьютерном зрении.

История

Первая версия системы, ORB-SLAM, была представлена в 2015 году в работе Рауля Мура-Арталя (Raúl Mur-Artal), Хосе Марии Мартинеса Монтьеля (José María Martínez Montiel) и Хуана Доминго Тардоса (Juan Domingo Tardós) из Университета Сарагосы (Испания). Статья была опубликована в журнале IEEE Transactions on Robotics. В 2017 году те же авторы выпустили ORB-SLAM2 — расширенную версию, поддерживающую стереокамеры и RGB-D-камеры, а также содержащую улучшенную систему оптимизации карты. В 2020 году вышла ORB-SLAM3 (авторы — Карлос Кампос, Ричард Эльвира, Хуан Доминго Тардос и др.), которая добавила поддержку инерциальных измерительных модулей (IMU), а также возможность работы с несколькими камерами и визуально-инерциальных SLAM (VI-SLAM). Все версии распространяются с открытым исходным кодом под лицензией GPLv3.

Принцип работы

ORB-SLAM основан на трёх параллельных потоках (тредах), работающих в реальном времени:

  1. Поток отслеживания (Tracking) — на каждом новом кадре детектирует ключевые точки с помощью алгоритма FAST (Features from Accelerated Segment Test) и вычисляет их дескрипторы с помощью BRIEF (Binary Robust Independent Elementary Features). Затем система сопоставляет эти точки с картой, используя метод PnP (Perspective-n-Point) для оценки положения камеры. Если сопоставление теряется, запускается процедура повторной локализации.
  1. Поток локального построения карты (Local Mapping) — обрабатывает новые ключевые кадры (keyframes), добавляет в карту новые трёхмерные точки (map points) и выполняет локальную оптимизацию (Bundle Adjustment) для уточнения положения камер и точек.
  1. Поток глобального оптимизатора (Loop Closing) — детектирует замкнутые циклы (когда камера возвращается в ранее посещённое место) с помощью поиска по словарю визуальных слов (DBoW2). При обнаружении цикла выполняется глобальный Bundle Adjustment, который исправляет накопившуюся ошибку дрейфа.

Все три потока работают асинхронно, что позволяет системе обрабатывать видео в реальном времени (до 30 кадров в секунду на стандартном оборудовании).

Ключевые особенности

  • Использование ORB-дескрипторов — бинарных, быстрых в вычислении и сопоставлении, инвариантных к повороту и частично к масштабу.
  • Надёжная повторная локализация — при потере трека система может восстановить положение камеры, сопоставляя текущий кадр с картой.
  • Детекция замкнутых циклов — позволяет исправлять глобальный дрейф и строить непротиворечивую карту.
  • Автоматическая инициализация — для монокулярной версии используется метод, основанный на вычислении фундаментальной или гомографической матрицы.
  • Поддержка различных типов камер — монокулярных, стерео, RGB-D, а также с инерциальными датчиками (IMU) в версии ORB-SLAM3.

Архитектура

ORB-SLAM использует графовую структуру, где вершинами являются ключевые кадры (keyframes) и трёхмерные точки (map points), а рёбрами — связи видимости (какие точки видны на каких кадрах). Оптимизация положения камер и точек выполняется с помощью метода Bundle Adjustment, реализованного в библиотеке g2o (General Graph Optimization). Для поиска замкнутых циклов применяется библиотека DBoW2 (Bag of Words), которая строит визуальный словарь на основе дескрипторов ORB.

Версии

ORB-SLAM (2015)

  • Поддержка только монокулярных камер.
  • Базовая реализация трёх потоков.
  • Работа в реальном времени на CPU.

ORB-SLAM2 (2017)

  • Добавлена поддержка стереокамер и RGB-D-камер.
  • Улучшена система оптимизации карты.
  • Повышена надёжность при быстрых движениях камеры.

ORB-SLAM3 (2020)

  • Добавлена поддержка инерциальных датчиков (IMU) — визуально-инерциальный SLAM (VI-SLAM).
  • Возможность работы с несколькими камерами (например, стерео + IMU).
  • Поддержка режима «карта-в-карте» (map merging) — возможность объединения карт, построенных в разных сессиях.
  • Улучшенная инициализация и более точная оценка положения.

Применение

ORB-SLAM широко применяется в следующих областях:

  • Робототехниканавигация мобильных роботов, беспилотных летательных аппаратов (дронов), автономных транспортных средств.
  • Дополненная и виртуальная реальность — отслеживание положения головы пользователя или контроллеров.
  • Компьютерное зрение — исследование методов SLAM, тестирование новых алгоритмов.
  • Геодезия и картография — построение трёхмерных моделей помещений и открытых пространств.
  • Археология и культурное наследие — создание цифровых копий памятников и объектов.

Ограничения и критика

  • Зависимость от текстуры — ORB-дескрипторы плохо работают на однородных поверхностях (стены, полы) или в условиях слабого освещения.
  • Чувствительность к быстрым движениям — при резких поворотах или ускорениях система может потерять трек.
  • Вычислительная нагрузка — хотя система работает в реальном времени, на слабых устройствах (например, встраиваемых) возможны задержки.
  • Отсутствие семантической информации — система строит только геометрическую карту, не распознавая объекты или их классы.
  • Лицензионные ограничения — GPLv3 может быть несовместима с коммерческими проектами, использующими проприетарное ПО.

Сравнение с другими системами SLAM

СистемаТип камерПоддержка IMUДетекция цикловОткрытый код
ORB-SLAM3Mono, Stereo, RGB-DДаДаДа (GPLv3)
LSD-SLAMMonoНетДаДа (GPLv3)
DSO (Direct Sparse Odometry)MonoНетНетДа (GPLv3)
VINS-MonoMonoДаДаДа (BSD)
RTAB-MapStereo, RGB-DДаДаДа (BSD)

Влияние и наследие

ORB-SLAM считается одной из наиболее цитируемых и влиятельных работ в области SLAM. По состоянию на 2024 год оригинальная статья 2015 года имеет более 5000 цитирований. Система используется как базовый эталон для сравнения новых алгоритмов SLAM, а её код активно применяется в образовательных и исследовательских целях. Многие коммерческие продукты (например, в области дополненной реальности) заимствуют идеи ORB-SLAM, хотя и не используют его код напрямую из-за лицензионных ограничений.

Источники

  • Mur-Artal, R., Montiel, J. M. M., & Tardós, J. D. (2015). ORB-SLAM: A Versatile and Accurate Monocular SLAM System. IEEE Transactions on Robotics, 31(5), 1147–1163.
  • Mur-Artal, R., & Tardós, J. D. (2017). ORB-SLAM2: An Open-Source SLAM System for Monocular, Stereo, and RGB-D Cameras. IEEE Transactions on Robotics, 33(5), 1255–1262.
  • Campos, C., Elvira, R., Rodríguez, J. J. G., Montiel, J. M. M., & Tardós, J. D. (2021). ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial, and Multimap SLAM. IEEE Transactions on Robotics, 37(6), 1874–1890.
  • Официальный репозиторий ORB-SLAM3 на GitHub (github.com/UZ-SLAMLab/ORB_SLAM3).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →