VIO или Optical Flow + LiDAR: что выбрать для навигации БПЛА без GNSS

Все статьи

Потеря сигнала спутников — реальная проблема для автономных систем: полёты в помещениях, между высотными зданиями, под кронами деревьев или в условиях РЭБ. В таких сценариях на первый план выходят альтернативные методы позиционирования.

Два наиболее популярных подхода:

  1. VIO (Visual-Inertial Odometry) — визуальная инерциальная одометрия, объединяющая данные камер и IMU.
  2. Optical Flow + LiDAR — комбинация оптического потока (нижняя камера) и лазерного дальномера.

В этой статье сравним обе технологии, разберём их сильные и слабые стороны, и дадим практические рекомендации для интеграции с полётными контроллерами ArduPilot и PX4.


Краткий глоссарий

ТерминОписание
VIOАлгоритм, оценивающий 6-DoF позу дрона (позиция + ориентация) по последовательности изображений и данным инерциального блока
Optical FlowМетод оценки скорости по смещению текстуры поверхности в кадре нижней камеры
LiDAR (1D)Лазерный дальномер, измеряющий расстояние до поверхности по времени пролёта импульса
SLAMSimultaneous Localization and Mapping — одновременное построение карты и локализация в ней

Как это работает: физика и алгоритмы

VIO: камера + IMU = 6 степеней свободы

VIO-системы (например, Intel RealSense T265, Stereo Camera + VINS-Fusion) используют две или более камеры и высокочастотный IMU для оценки полного вектора состояния аппарата.

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

  1. Стереокамера строит карту визуальных особенностей (feature points) в 3D-пространстве.
  2. IMU компенсирует быстрые движения и дрожание, которые «размывают» визуальные данные.
  3. Алгоритм (OKVIS, VINS-Mono, ROVIO) выполняет нелинейную оптимизацию, минимизируя ошибку репроекции точек между кадрами.

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

  • ✅ Полная 6-DoF оценка: позиция (X, Y, Z) + ориентация (roll, pitch, yaw)
  • ✅ Работает в любых направлениях: вперёд, назад, вверх, боком
  • ✅ Не требует текстурированной поверхности под дроном
  • ✅ Масштабируемость: точность не деградирует с высотой (в пределах видимости объектов)

Ограничения:

  • ❌ Высокие вычислительные требования: нужен companion computer (Jetson, Raspberry Pi 4+)
  • ❌ Чувствительность к вибрациям: T265 требует мягкого крепления с демпфированием
  • ❌ Зависимость от освещения: в темноте или при быстром изменении освещённости трек может «потеряться»
  • ❌ Дрейф: без внешней коррекции (UWB, маяки) ошибка накапливается ~1–3% от пройденного пути

Факт: В независимых тестах Intel RealSense T265 показала точность позиционирования ~0.5–1.5% от пройденного расстояния в помещении, что уступает только решениям на базе Google ARCore.


Optical Flow + LiDAR: простота и надёжность для низких высот

Эта комбинация — классика для стабилизации вблизи земли без GNSS. Optical Flow оценивает горизонтальную скорость по смещению текстуры, а LiDAR предоставляет точную высоту для масштабирования.

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

Горизонтальная скорость = (Смещение пикселей × Высота) / (Фокусное расстояние × Δt)

Типичная конфигурация:

  • Камера: PMW3901, PAW3902, MT9V034 (разрешение 30–100 кпикс, частота 200–400 Гц)
  • Дальномер: Benewake TF-Luna, Garmin LIDAR-Lite, Broadcom AFBR-S50LV85D (точность ±2 см)
  • Модули: ARK Flow, Holybro H-Flow, Matek 3901-L0X

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

  • ✅ Низкая вычислительная нагрузка: работает напрямую с полётным контроллером (без companion computer)
  • ✅ Компактность и вес: модуль 20–40 г, потребление <1 Вт
  • ✅ Отличная точность на высотах 0.3–5 м: идеален для зависания, облёта препятствий, посадки
  • ✅ Устойчивость к вибрациям при правильном демпфировании

Ограничения:

  • ❌ Только горизонтальная скорость: не даёт абсолютной позиции (требует интеграции с другими сенсорами)
  • ❌ Зависимость от текстуры: не работает над водой, снегом, однородным асфальтом
  • ❌ Ограниченная высота: эффективен до 10–15 м (выше — падает разрешение текстуры)
  • ❌ Только «вниз»: не обнаруживает препятствия спереди/сбоку без дополнительных датчиков

Сравнительная таблица

КритерийVIOOptical Flow + LiDAR
Точность позицииВысокая (0.5–2% дрейф)Средняя (зависит от калибровки)
Рабочая высота0.5–30+ м0.3–15 м (оптимально 1–5 м)
Требования к освещениюУмеренные (нужен контраст)Высокие (нужна текстура + свет)
Вычислительная нагрузкаВысокая (companion computer)Низкая (работает на FC)
Вес и габариты100–300 г + компьютер20–50 г (всё в одном модуле)
Стоимость$150–500+$30–150
Интеграция с ArduPilot/PX4Через MAVROS / DroneCANНативная поддержка (FLOW_TYPE, RNGFND)
Работа в темнотеТолько с ИК-подсветкойТолько с активной ИК-подсветкой камеры
Обнаружение препятствий360° (со стерео/360-камерой)Только вниз (нужны доп. датчики)

Практические примеры

Пример 1: Инспекция помещений (VIO)

Задача: Автономный облёт склада для инвентаризации. Требуется точное удержание позиции между стеллажами, работа без GNSS.

Решение:

  • Платформа: Holybro Kakute H7 + Jetson Nano
  • Сенсор: Intel RealSense T265 (VIO)
  • ПО: PX4 + ROS + realsense-ros драйвер
  • Настройка: публикация одометрии в MAVROS через тему /mavros/visual_odometry

Результат: Дрон стабильно удерживает позицию с точностью ±5 см, строит карту помещения для планирования маршрута.

⚠️ Важно: Камера T265 снята с производства [[33]], но аналоги на базе OV9282 + VINS-Fusion доступны в open-source.

Пример 2: Сельскохозяйственный дрон (Optical Flow + LiDAR)

Задача: Точное зависание над культурой для точечного опрыскивания, работа на высоте 1.5–3 м.

Решение:

  • Платформа: Pixhawk 6C (ArduPilot)
  • Сенсор: ARK Flow (DroneCAN: оптический поток + LiDAR 30 м + IMU)
  • Настройка:
  FLOW_TYPE = 7        # ARK Flow
  FLOW_ENABLE = 1
  RNGFND1_TYPE = 30    # DroneCAN rangefinder
  EK3_SRC1_VELXY = 5   # Optical Flow как источник скорости
  EK3_SRC1_POSZ = 1    # Барометр для высоты

Результат: Стабильное зависание ±10 см даже над рядами культур, автоматическое следование рельефу (terrain following).

Пример 3: Гибридный подход (максимальная надёжность)

Задача: Дрон для поисково-спасательных операций в завалах: работа как в помещениях (без GNSS), так и на открытой местности.

Решение:

  • Основной сенсор: VIO (стереокамера + companion computer) для 3D-навигации
  • Резерв: Optical Flow + LiDAR для точного зависания при посадке и вблизи земли
  • Алгоритм: EKF3 (ArduPilot) или EKF2 (PX4) с переключением источников в зависимости от доступности [[10]]

Преимущество: Отказоустойчивость — при потере визуального трека (дым, пыль) система переходит на оптический поток, и наоборот.


Настройка в ArduPilot и PX4

ArduPilot: Optical Flow

  1. Подключите модуль (I2C, UART или DroneCAN).
  2. Установите параметры:
   FLOW_TYPE = <тип сенсора>
   FLOW_ORIENT_YAW = <ориентация, градусы>
   FLOW_ENABLE = 1
   RNGFND1_TYPE = <тип дальномера>
   EK3_SRC1_VELXY = 5  # Optical Flow для скорости
  1. Откалибруйте в полёте: поднимитесь на 1–2 м, включите LOITER, активируйте калибровку переключателем (RCx_OPTION = 158).

🔗 Официальная документация ArduPilot по Optical Flow

PX4: VIO с T265 (пример)

  1. Установите realsense-ros драйвер на companion computer.
  2. Настройте статический трансформ между base_link и камерой:
   <node pkg="tf" type="static_transform_publisher" name="tf_baseLink_cameraPose"
         args="0.1 0 0.04 0 1.5708 0 base_link camera_pose_frame 1000"/>
  1. В PX4 включите:
   EKF2_OF_CTRL = 1
   SENS_FLOW_SCALE = 1.0  # при необходимости корректировать

🔗 PX4 Guide: Intel RealSense T265 (VIO)

Общие рекомендации по монтажу

  • Демпфирование: И VIO-камеры, и оптические сенсоры критичны к вибрациям. Используйте мягкие крепления с частотой среза 20–40 Гц.
  • Ориентация: Optical Flow должен смотреть строго вниз; отклонение >5° вносит ошибку в оценку скорости.
  • Калибровка: Обязательно проводите in-flight калибровку масштаба (FLOW_FXSCALER / FLOW_FYSCALER) для вашего конкретного модуля.

Что выбрать? Чек-лист

Выбирайте VIO, если:

  • Нужна полная 3D-навигация в помещении или сложной среде
  • Есть место и весовой бюджет для companion computer
  • Требуется работа на высотах >10 м без потери точности
  • Бюджет позволяет ($150+ за сенсор + вычислитель)

Выбирайте Optical Flow + LiDAR, если:

  • Основная задача — стабильное зависание и полёт вблизи земли (до 5–10 м)
  • Критичны вес, энергопотребление и простота интеграции
  • Бюджет ограничен (<$100 за сенсорный модуль)
  • Работаете на текстурированных поверхностях (трава, асфальт, грунт)

Рассмотрите гибрид, если:

  • Миссия включает как низкие, так и высокие высоты
  • Требуется максимальная отказоустойчивость
  • Есть возможность обработки данных на борту (companion computer)

Полезные ссылки

  1. ArduPilot: Optical Flow Sensors — настройка, калибровка, параметры
    🔗 ardupilot.org/copter/docs/common-optical-flow-sensors-landingpage.html
  2. PX4 Guide: Optical Flow — интеграция с оценщиком EKF2
    🔗 docs.px4.io/main/en/sensor/optical_flow
  3. PX4 Guide: VIO with RealSense T265 — пошаговая настройка
    🔗 docs.px4.io/main/en/camera/camera_intel_realsense_t265_vio
  4. ARK Flow (DroneCAN) — модуль «всё-в-одном» от CubePilot
    🔗 ardupilot.org/copter/docs/common-arkflow.html
  5. LOFF: LiDAR and Optical Flow Fusion — исследование по слиянию данных (MDPI, 2024)
    🔗 mdpi.com/2504-446X/8/8/411
  6. DroneCAN Specification — протокол для подключения умных сенсоров
    🔗 dronecan.org

Заключение

Нет «универсального» решения: VIO даёт полную 3D-навигацию ценой сложности и ресурсов, Optical Flow + LiDAR — простая и надёжная работа «у земли».

Для большинства прикладных задач БПЛА (инспекция, сельское хозяйство, доставка) комбинация обоих подходов с интеллектуальным переключением в EKF даёт наилучший баланс точности, надёжности и стоимости.

Ключ к успеху — не выбор «лучшей» технологии, а понимание её ограничений и грамотная интеграция в общую архитектуру навигации вашего аппарата.


Статья подготовлена для разработчиков автономных систем. При использовании материалов ссылка на источник обязательна.

Прокрутить вверх