Оптический поток
Кратко
Оптический поток (optical flow) — видимое движение картинки: когда наблюдатель и сцена движутся друг относительно друга, яркостный узор изображения «плывёт», и это смещение можно измерить. Для БПЛА это способ чувствовать собственную скорость без спутников: направленная вниз камера следит, как под аппаратом плывёт текстура земли, и вместе с дальномером даёт оценку скорости — основу удержания позиции там, где GNSS недоступна.
Для чего используется
- Полёт без спутников: удержание позиции и висение в помещениях, под мостами, в «тени» зданий — везде, где спутниковой навигации нет или она ненадёжна.
- Визуальная одометрия и навигация роботов: оценка собственного движения по камере — базовый приём робототехники, родственный SLAM.
- За пределами дронов: оценка движения между кадрами используется при сжатии видео, а оптическая компьютерная мышь — самый массовый датчик оптического потока в мире.
Как работает
Идея старше дронов: современная формулировка оптического потока родилась из исследований зрения пилотов во время Второй мировой войны, а термин «optic flow» ввёл психолог Джеймс Гибсон в 1950 году. Классические алгоритмы вычисления — метод Лукаса—Канаде (следит за смещением небольших фрагментов кадра) и метод Хорна—Шанка (строит гладкое поле скоростей для всего изображения); сегодня к ним добавились нейросетевые методы вроде RAFT.
Сенсор оптического потока на дроне устроен просто: маленькая камера смотрит вертикально вниз и измеряет, как смещается картинка между кадрами. Но одного смещения мало — чтобы пересчитать его в скорость аппарата, нужна дистанция до поверхности, поэтому рядом с камерой ставится направленный вниз дальномер. В PX4 эти данные вливаются в общий фильтр оценки состояния EKF2 (параметр EKF2_OF_CTRL) вместе с показаниями IMU; в ArduPilot сенсоры потока работают на коптерах, самолётах и наземных роверах.
У метода есть честные ограничения: камере нужна текстура. Над однородной поверхностью без видимых деталей зацепиться взгляду не за что, и качество оценки падает; освещение тоже имеет значение.
Основные компоненты
- Камера, направленная вниз — источник картинки; в готовых модулях это миниатюрный сенсор.
- Дальномер, направленный вниз — дистанция до поверхности для пересчёта потока в скорость; часто лазерный (лидарного типа).
- Вычислитель — считает поток прямо на модуле или на автопилоте.
- Автопилот — объединяет скорость по потоку с данными IMU в оценке состояния.
Примеры
- PX4FLOW — классический смарт-модуль: камера, обработка на борту модуля.
- Модули на сенсоре PMW3901 — недорогие компактные датчики для малых аппаратов.
- ARK Flow, HereFlow, Cheerson CX-OF — примеры из более чем десятка моделей, поддерживаемых ArduPilot; во многих корпусах камера и дальномер уже собраны вместе.
Связанные темы
Источники
- Wikipedia — Optical flow — определение, история, методы вычисления, применения.
- ArduPilot Documentation — сенсоры потока, скорость относительно земли, поддерживаемые модели.
- PX4 User Guide — камера + дальномер, полёт без GPS, интеграция с EKF2.