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 основан на трёх параллельных потоках (тредах), работающих в реальном времени:
- Поток отслеживания (Tracking) — на каждом новом кадре детектирует ключевые точки с помощью алгоритма FAST (Features from Accelerated Segment Test) и вычисляет их дескрипторы с помощью BRIEF (Binary Robust Independent Elementary Features). Затем система сопоставляет эти точки с картой, используя метод PnP (Perspective-n-Point) для оценки положения камеры. Если сопоставление теряется, запускается процедура повторной локализации.
- Поток локального построения карты (Local Mapping) — обрабатывает новые ключевые кадры (keyframes), добавляет в карту новые трёхмерные точки (map points) и выполняет локальную оптимизацию (Bundle Adjustment) для уточнения положения камер и точек.
- Поток глобального оптимизатора (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-SLAM3 | Mono, Stereo, RGB-D | Да | Да | Да (GPLv3) |
| LSD-SLAM | Mono | Нет | Да | Да (GPLv3) |
| DSO (Direct Sparse Odometry) | Mono | Нет | Нет | Да (GPLv3) |
| VINS-Mono | Mono | Да | Да | Да (BSD) |
| RTAB-Map | Stereo, 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 →


