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

Visual-Inertial Odometry

Visual-Inertial Odometry (VIO, визуально-инерциальная одометрия) — это метод оценки положения и ориентации (позы) движущегося объекта в пространстве, основанный на совместной обработке данных с камеры (визуальный сенсор) и инерциального измерительного блока (IMU, акселерометр и гироскоп). VIO относится к классу алгоритмов счисления пути (dead reckoning) и позволяет определять траекторию движения робота, беспилотного летательного аппарата (БПЛА), смартфона или другого устройства без использования внешних навигационных систем, таких как GPS или спутниковая навигация. Ключевой особенностью VIO является комплементарность сенсоров: камера обеспечивает точную информацию об относительном перемещении и структуре сцены, но страдает при быстрых движениях или в условиях низкой освещённости, в то время как IMU работает с высокой частотой и устойчив к кратковременным динамическим изменениям, но подвержен дрейфу из-за накопления ошибок интегрирования.

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

VIO объединяет два основных подхода к навигации: визуальную одометрию (VO) и инерциальную навигацию (INS). Визуальная одометрия оценивает движение по последовательности изображений, отслеживая характерные точки (features) на кадрах. Инерциальная навигация использует данные акселерометра и гироскопа для вычисления ускорения и угловой скорости, из которых интегрированием получают скорость и положение. Однако инерциальные данные содержат шумы и смещения (bias), которые приводят к экспоненциальному росту ошибки со временем. VIO решает эту проблему, используя визуальные наблюдения для коррекции дрейфа IMU и оценки его смещений.

Основные этапы алгоритма VIO

  1. Сбор данных: Камера (обычно монокулярная, стерео или RGB-D) захватывает изображения с частотой 10–60 Гц, а IMU измеряет ускорение и угловую скорость с частотой 100–1000 Гц.
  2. Предобработка: Изображения подвергаются коррекции искажений (дисторсии объектива), а данные IMU — калибровке (устранение систематических ошибок, определение масштабных коэффициентов и осей чувствительности).
  3. Выделение и сопоставление признаков: На каждом изображении детектируются ключевые точки (например, углы Харриса, SIFT, ORB, FAST). Затем для последовательных кадров выполняется сопоставление (matching) этих точек, что позволяет вычислить фундаментальную или существенную матрицу и оценить относительное движение камеры.
  4. Инерциальное интегрирование: Данные IMU интегрируются в промежутках между кадрами, предоставляя начальную оценку движения (предикцию). Этот этап выполняется с высокой частотой, обеспечивая низкую задержку вывода позы.
  5. Слияние данных (Fusion): Наиболее критичный этап. Существует два основных подхода к слиянию:
  • Фильтрация на основе расширенного фильтра Калмана (EKF): IMU используется для прогнозирования состояния (поза, скорость, смещения), а визуальные наблюдения — для коррекции. Этот подход требует меньших вычислительных ресурсов, но менее точен при длительных периодах без визуальных наблюдений.
  • Оптимизация на графе факторов (Factor Graph Optimization): Вся история измерений (как визуальных, так и инерциальных) представляется в виде графа, где узлы — состояния в разные моменты времени, а рёбра — факторы (наблюдения). Задача сводится к минимизации ошибки всех факторов. Этот метод (например, VINS-Mono, ORB-SLAM3) обеспечивает более высокую точность и глобальную согласованность, но требует больше вычислительных ресурсов.
  1. Вывод позы: В результате вычисляется шестимерная поза (3 координаты положения + 3 угла ориентации) и, часто, карта трёхмерных точек (в случае SLAM-подобных реализаций).

Классификация VIO

VIO-алгоритмы можно классифицировать по нескольким признакам.

По типу визуального сенсора

  • Монокулярная VIO (Mono-VIO): Использует одну камеру. Не может определить абсолютный масштаб сцены (scale ambiguity), поэтому масштаб траектории оценивается по данным IMU. Примеры: VINS-Mono, OKVIS.
  • Стерео VIO (Stereo-VIO): Использует две камеры с известным базисом (расстоянием между ними). Позволяет сразу оценить глубину и масштаб, что повышает точность и робастность. Примеры: VINS-Fusion (stereo mode), ROVIO.
  • RGB-D VIO: Использует камеру, которая предоставляет как цветное изображение, так и карту глубины (например, Microsoft Kinect, Intel RealSense). Глубина измеряется напрямую (структурированным светом или ToF), что упрощает задачу, но ограничивает дальность работы.

По архитектуре обработки

  • Фильтрующие (Filter-based): Оценивают состояние рекурсивно, обрабатывая каждое новое измерение последовательно. Типичный представитель — MSCKF (Multi-State Constraint Kalman Filter), который поддерживает скользящее окно из нескольких последних состояний камеры.
  • Оптимизационные (Optimization-based): Накопляют измерения в окне (или в полном графе) и решают задачу минимизации ошибки нелинейным методом (например, Levenberg-Marquardt). Обеспечивают лучшую точность, но требуют больше памяти и вычислений. Примеры: VINS-Mono, ORB-SLAM3, Kimera.
  • Гибридные: Сочетают элементы обоих подходов, например, используют фильтр для оценки смещений IMU, а оптимизацию — для позы.

По наличию обратной связи с картой

  • VIO (чистая одометрия): Оценивает только относительное движение между последовательными кадрами. Дрейф накапливается, и глобальная траектория может быть несогласованной.
  • VIO с SLAM (Simultaneous Localization and Mapping): Помимо оценки движения, алгоритм строит и поддерживает карту окружающей среды. При повторном посещении той же области (loop closure) происходит коррекция дрейфа и глобальная оптимизация карты. Примеры: ORB-SLAM3, Kimera.

Применение

VIO получила широкое распространение в областях, где требуется автономная навигация в условиях отсутствия или недоступности глобальных навигационных спутниковых систем (ГНСС).

Робототехника и БПЛА

  • Беспилотные летательные аппараты (БПЛА, дроны): VIO является основным методом навигации для малых и средних дронов в помещениях, под мостами, в туннелях и в городских каньонах, где GPS-сигнал слаб или отсутствует. Алгоритмы VIO позволяют дронам выполнять сложные манёвры, зависать на месте и строить карты местности.
  • Наземные роботы: Используется для навигации мобильных роботов на складах, в офисах, на производственных площадках. VIO обеспечивает точное счисление пути, особенно в сочетании с одометрией колёс.
  • Подводные аппараты: В условиях, где GPS недоступен, VIO с камерами, работающими в видимом или инфракрасном диапазоне, применяется для навигации подводных роботов.

Потребительская электроника

  • Смартфоны и планшеты: Современные мобильные устройства (например, iPhone, устройства на Android) используют VIO для приложений дополненной реальности (AR), таких как ARKit (Apple) и ARCore (Google). Алгоритмы VIO позволяют виртуальным объектам стабильно удерживаться в реальном пространстве, отслеживая движение камеры.
  • VR/AR-гарнитуры: Гарнитуры виртуальной и дополненной реальности (например, Meta Quest, Microsoft HoloLens) оснащены камерами и IMU для отслеживания положения головы и контроллеров в пространстве. VIO обеспечивает низкую задержку и точность, необходимые для погружения.

Автомобильная промышленность

  • Системы помощи водителю (ADAS): VIO используется как дополнительный сенсор для определения положения автомобиля в условиях плохой видимости или при проезде через туннели. В комбинации с данными от колёсных датчиков и GPS она повышает надёжность навигации.
  • Автономные автомобили: Хотя основным методом навигации для автономных автомобилей является комбинация GPS, LiDAR и радаров, VIO может служить резервным каналом для оценки движения в городских условиях с высокими зданиями, блокирующими спутниковый сигнал.

Преимущества и недостатки

Преимущества

  • Автономность: Не требует внешней инфраструктуры (спутников, маяков, Wi-Fi).
  • Низкая стоимость: Камеры и MEMS-IMU (микроэлектромеханические системы) являются относительно недорогими и компактными сенсорами.
  • Высокая частота вывода: IMU позволяет получать оценки позы с частотой до 1 кГц, что важно для управления быстрыми движениями.
  • Комплементарность: Визуальные данные корректируют дрейф IMU, а IMU компенсирует недостатки визуального отслеживания (например, при быстрых поворотах или размытии движения).

Недостатки

  • Чувствительность к условиям освещения: Визуальные алгоритмы плохо работают в полной темноте, при ярком солнечном свете, вызывающем блики, или при резких изменениях освещённости.
  • Зависимость от текстуры: Для надёжного сопоставления признаков сцена должна содержать достаточное количество текстурных деталей. Однородные стены, полы или небо могут привести к потере отслеживания.
  • Дрейф: Несмотря на коррекцию, VIO подвержена долговременному дрейфу, особенно при отсутствии петель обратной связи (loop closure). Дрейф может составлять от 0.1% до 5% от пройденного пути в зависимости от качества сенсоров и алгоритма.
  • Вычислительная сложность: Оптимизационные VIO-алгоритмы требуют значительных вычислительных ресурсов, что может быть проблемой для встраиваемых систем с ограниченным энергопотреблением.

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

МетодТочностьЗависимость от внешних условийСтоимостьТипичное применение
VIOВысокая (относительная)Освещение, текстураНизкая-средняяДроны, AR, роботы в помещениях
GPS/ГНСССредняя (2–10 м)Погода, препятствия (здания)НизкаяОткрытые пространства, автомобили
LiDAR OdometryОчень высокаяПогода (дождь, туман)ВысокаяАвтономные автомобили, картография
Wi-Fi/BluetoothНизкая (5–20 м)Плотность точек доступаНизкаяВнутрипомещенческая навигация людей
Dead Reckoning (IMU)Очень низкая (дрейф)НетНизкаяКратковременная навигация, резерв

Известные реализации

  • VINS-Mono / VINS-Fusion (Vision-aided Inertial Navigation System): Открытая реализация от Хуанга и др. (Гонконгский университет науки и технологий). Поддерживает монокулярный, стерео и GPS-режимы. Основана на оптимизации графа факторов.
  • ORB-SLAM3 (Raúl Mur-Artal, Juan D. Tardós): Одна из наиболее точных и популярных реализаций VIO-SLAM. Поддерживает монокулярный, стерео и RGB-D режимы, а также loop closure.
  • OKVIS (Open Keyframe-based Visual-Inertial SLAM): Ранняя открытая реализация, основанная на оптимизации ключевых кадров.
  • ROVIO (Robust Visual Inertial Odometry): Фильтрующий алгоритм (MSCKF) от ETH Zurich, отличающийся высокой робастностью.
  • Kimera (MIT): Модульная система, объединяющая VIO, SLAM, построение карты (mesh) и семантическую сегментацию.

Источники

  1. Scaramuzza, D., & Fraundorfer, F. (2011). Visual odometry: Part I: The first 30 years and fundamentals. IEEE Robotics & Automation Magazine.
  2. Fraundorfer, F., & Scaramuzza, D. (2012). Visual odometry: Part II: Matching, robustness, optimization, and applications. IEEE Robotics & Automation Magazine.
  3. Qin, T., Li, P., & Shen, S. (2018). VINS-Mono: A robust and versatile monocular visual-inertial state estimator. IEEE Transactions on Robotics.
  4. 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.
  5. Leutenegger, S., Lynen, S., Bosse, M., Siegwart, R., & Furgale, P. (2015). Keyframe-based visual-inertial odometry using nonlinear optimization. The International Journal of Robotics Research.
  6. Bloesch, M., Omari, S., Hutter, M., & Siegwart, R. (2015). Robust visual inertial odometry using a direct EKF-based approach. IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).

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

На главную BFOmetr →