Глоссарий

Оптический поток

Синонимы: датчик оптического потока, optical flow, система визуального позиционирования

Оптический поток — нижняя камера с дальномером считает смещение рисунка земли и держит дрон на точке без спутника: на малой высоте и при свете.

Оптический поток — видимое смещение рисунка поверхности между соседними кадрами камеры, направленной вниз; по нему дрон вычисляет собственную скорость относительно земли. Датчик оптического потока в паре с дальномером и гироскопом удерживает аппарат на месте там, где спутниковый сигнал слаб или недоступен: в цеху, под мостом, во дворе-колодце. Координат он не даёт — только скорость и высоту.

Как датчик оптического потока измеряет скорость

Внутри — маленькая камера с низким разрешением и процессор, который сравнивает соседние кадры и ищет, на сколько сдвинулся рисунок под аппаратом. На выходе не метры, а угловое смещение: в документации PX4 поток описан именно как интеграл угла в радианах вокруг осей сенсора. Разрешение низкое намеренно: считать нужно десятки раз в секунду на слабом процессоре, а детали картинки для этого не нужны.

Чтобы превратить радианы в метры в секунду, прошивке нужна высота: скорость равна угловой скорости потока, умноженной на расстояние до земли. Отсюда главное правило сборки — датчик потока без дальномера бесполезен. В документации ArduPilot это сказано прямо: алгоритму нужна высота, чтобы перевести смещение пикселей в скорость. Ставят лазерный ToF-дальномер (у Bitcraze во Flow Deck v2 это VL53L1x с диапазоном до 4 м) или лидар — PX4 рекомендует именно лидар как более надёжный, чем ультразвук.

  • Камера вниз — жёстко закреплена на раме, объектив ничем не перекрыт. Ходовые сенсоры: PMW3901, PAW3902 в модуле ARK Flow (дальность до 30 м), PAA3905 в ARK Flow MR (до 50 м) и Holybro H-Flow.
  • Дальномер — даёт масштаб для пересчёта потока в скорость и заодно точную высоту на последних метрах перед посадкой.
  • Гироскоп и акселерометринерциальная навигация подсказывает, какая часть потока вызвана наклоном корпуса, а не перемещением.
  • Фильтр состояния (EKF) в полётном контроллере — сводит поток, дальномер, барометр и спутниковый приёмник в одну оценку скорости и положения.

Наклоните аппарат на 10 градусов — рисунок под ним поедет, хотя дрон не сместился ни на сантиметр. Поэтому вращение вычитают по данным гироскопа: в логах ArduPilot для этого сравнивают OF.flowX/flowY с OF.bodyX/bodyY. Если оси перепутаны или масштаб задан неверно, поведение узнаваемое — вместо удержания точки аппарат разгоняется в сторону. Камеру съёмки стабилизирует подвес, а сенсор потока, наоборот, крепят намертво к раме: ему нужна та же система координат, что и гироскопу.

Чем поток отличается от спутника и инерциалки

Коротко: поток измеряет скорость, спутник — координаты, инерциальные датчики — ускорения и угловые скорости. Оптический поток не знает, где вы находитесь: положение он даёт только интегрированием скорости, а ошибка такого счисления копится с каждой секундой. По одному потоку аппарат домой не вернётся.

У спутниковой навигации всё наоборот: абсолютная привязка к местности есть, но под мостом и в ангаре сигнала нет вовсе, а у стеклянных фасадов приёмник ловит отражённый луч и координата начинает прыгать. Именно в этих сценариях поток и вытягивает полёт.

Три источника данных о движении дрона и границы их применимости
ИсточникЧто измеряетГде силёнСлабое место
Спутниковый приёмникабсолютные координаты и высотуоткрытое небо, маршрутные полётынет сигнала в помещении, переотражения у стен, помехи
Инерциальные датчикиускорения и угловые скоростиработают всегда и без внешних условийошибка растёт при интегрировании за секунды
Оптический поток и дальномерскорость относительно грунта и высотумалая высота, помещения, посадкаоднотонная или подвижная поверхность, темнота, высота

В прошивке источники не конкурируют, а расставлены по приоритету. В ArduPilot режим полёта по потоку задают параметрами EK3_SRC1_VELXY = 5 (скорость берём с сенсора потока) и EK3_SRC1_POSXY = 0 (абсолютной позиции нет), в PX4 слияние включает EKF2_OF_CTRL, а масштаб правят через SENS_FLOW_SCALE. Как только спутник снова виден, фильтр опирается на него, а поток остаётся страховкой.

Где оптический поток работает: цифры производителей

Условия простые: малая высота, неподвижная поверхность с различимым рисунком, достаточный свет. Производители эти границы публикуют — их стоит читать до вылета, а не после.

У DJI нижние камеры называются системой визуального позиционирования. В спецификации DJI Mini 4 Pro для нижней системы указан диапазон измерения 0,3–12 м, рабочая скорость до 5 м/с, освещённость выше 15 люкс и поверхности с различимым рисунком при диффузном отражении более 20 %. У Mavic 3 Enterprise диапазон шире — 0,3–18 м и скорость до 6 м/с. Разница в точности заметна: с работающим визуальным позиционированием висение держится в пределах ±0,1 м по вертикали и ±0,3 м по горизонтали, на одном спутниковом сигнале — ±0,5 м по обеим осям.

Практические сценарии: инспекция внутри цехов и ангаров, осмотр моста снизу, полёт во дворе-колодце между высотками, учебные полёты в зале и в защитной сетке. Плюс любая посадка — последние метры идут по нижним камерам, даже когда спутников в избытке.

Посадка и торможение

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

Когда датчик отказывает

Отказ выглядит одинаково: дрон перестаёт стоять и медленно уплывает, иногда с рывками. Причина почти всегда в поверхности или в свете, а не в электронике.

  • Однотонный фон. Свежий снег, ровный песок, залитый бетон, чистая гладкая кровля — сдвигать нечего, сенсор выдаёт нулевое или случайное смещение.
  • Подвижная поверхность. Вода с волной, качающаяся на ветру трава, палуба, кузов едущей машины: датчик честно видит движение и уводит дрон следом за ним.
  • Блики и зеркала. Мокрый асфальт, лужи, стекло, солнечная дорожка на воде дают ложный рисунок, который живёт своей жизнью.
  • Темнота. Ниже 15 люкс у аппаратов DJI визуальное позиционирование отключается; в сумерках и в тени зданий это наступает раньше, чем кажется на глаз.
  • Высота вне диапазона. Выше предела дальномера масштаб брать неоткуда; в PX4 отдельно предупреждают о медленных раскачках на высотах более 20 м из-за низкого разрешения сенсора.
  • Грязный объектив. Пыль, капли, налипший снег и наклейка от продавца — самая банальная причина потери позиционирования.
Если аппарат «поплыл» на висении
Не боритесь стиками против дрейфа вслепую. Переведите дрон в режим без удержания позиции, наберите высоту до уверенного приёма спутника и уводите аппарат в сторону от препятствий. Над водой и снегом заранее считайте, что удержания нет: держите ручное управление и не отпускайте стики в надежде, что автоматика остановит.

Настройка на самосборном дроне

На готовых аппаратах DJI настраивать нечего: система включена по умолчанию, пользователю доступны только калибровка нижних камер в приложении и запрет автоматической посадки. На самосборе с ArduPilot или PX4 всё руками, и порядок такой.

  1. Закрепить сенсор строго по осям аппарата, объективом вниз, вне зоны обзора лап, проводов и антенн.
  2. Задать тип датчика (FLOW_TYPE) и его разворот относительно носа (FLOW_ORIENT_YAW).
  3. Подключить дальномер и убедиться на земле, что он выдаёт правдоподобную высоту, а не шум.
  4. Откалибровать масштаб: покачать аппарат по крену и тангажу в пределах ±15 градусов над текстурной поверхностью, затем сверить в логе OF.flowX/flowY с гироскопом и подправить FLOW_FXSCALER и FLOW_FYSCALER.
  5. Переключить источники EKF на поток и проверить в воздухе на высоте 1–2 м, прежде чем уходить выше.

В ArduPilot есть и отдельный режим FlowHold — удержание по потоку без дальномера. Документация о нём честна: на части сборок он даёт раскачку, а при падении качества потока ниже порога FHLD_QUAL_MIN режим сам сваливается в удержание высоты. Практичнее поставить дальномер и летать в обычном режиме удержания позиции.

Ошибки, из-за которых теряют аппарат

  • Проверять работу потока только дома над ковром, а на объекте выходить на снег или на воду.
  • Считать индикацию визуального позиционирования гарантией: значок горит, а качество потока уже на нуле.
  • Лететь боком быстрее заявленной скорости работы системы — сенсор не успевает сопоставлять кадры.
  • Планировать съёмку так, будто поток заменит координаты: привязка снимков идёт от спутникового приёмника и поправок RTK, а поток к геодезической точности отношения не имеет.
  • Сажать в сумерках на однотонную площадку и удивляться промаху в полметра-метр.

Разбор режимов позиционирования, полёты в зале, отработка взлёта и посадки без спутника входят в базовую программу подготовки операторов БПЛА в учебном центре «Единство»: курс идёт от двух недель, обучение бесплатное, записаться можно через форму заявки на сайте.

Частые вопросы

Может ли оптический поток заменить спутниковую навигацию?

Нет, это разные измерения. Спутниковый приёмник даёт абсолютные координаты: широту, долготу и высоту относительно земного эллипсоида. Датчик оптического потока измеряет только скорость относительно поверхности под аппаратом, а положение из неё получается интегрированием — с ошибкой, которая накапливается непрерывно. Через несколько минут полёта в помещении дрон уже не знает, где точка взлёта.

Практический вывод простой: поток спасает висение и посадку там, где спутника нет, но не заменяет ни маршрутный полёт по точкам, ни автоматический возврат домой, ни привязку снимков к местности. Правильная схема — оба источника в одном фильтре: спутник задаёт абсолютную привязку, поток отвечает за скорость и устойчивость на малой высоте и подхватывает, когда сигнал пропадает под мостом или между высотками.

На какой высоте работает датчик оптического потока?

Верхнюю границу задаёт не сама камера, а дальномер: без известного расстояния до земли поток невозможно перевести в метры в секунду. У бытовых лазерных модулей вроде VL53L1x на Flow Deck v2 предел около 4 м, у специализированных сборок с сенсорами PAW3902 и PAA3905 производители заявляют дальность работы 30 и 50 м соответственно. У аппаратов DJI нижняя система зрения указана в диапазоне 0,3–12 м на Mini 4 Pro и 0,3–18 м на Mavic 3 Enterprise.

Есть и вторая граница — качество. Чем выше аппарат, тем мельче детали рисунка на кадре и тем хуже сенсор их различает. В документации PX4 прямо предупреждают о медленных раскачках при висении выше 20 м из-за низкого разрешения типовых датчиков потока. На практике самый уверенный режим — от полуметра до нескольких метров, то есть ровно тот диапазон, где происходят взлёт, посадка и работа в помещении.

Почему дрон уходит в сторону, когда висит над водой?

Потому что датчик работает ровно так, как задуман, и добросовестно измеряет движение картинки. Только картинка под ним движется сама: волна, рябь, блики и отражение облаков создают смещение рисунка, которого в реальности у аппарата нет. Автопилот получает ложную скорость и начинает её «компенсировать» — то есть уезжать в сторону, иногда всё быстрее.

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

Работает ли оптический поток ночью и в тёмном помещении?

Ограниченно. Пассивный сенсор потока — это камера, и без света ему нечего сравнивать. DJI в спецификациях указывает порог освещённости выше 15 люкс: ниже него визуальное позиционирование отключается, и аппарат остаётся на спутниковом сигнале или в режиме без удержания позиции. Для ориентира: 15 люкс — это сильно темнее обычного офисного освещения, примерно уровень плохо освещённой лестничной клетки.

Частично проблему решают подсветкой. У ряда аппаратов снизу стоит вспомогательный светодиод, который включается при посадке в темноте, а в модулях для самосбора вроде Holybro H-Flow ставят инфракрасную подсветку для слабого света. Но и она добивает лишь на первые метры. Ночные полёты в помещении надёжнее строить на других источниках позиционирования, а посадку планировать на освещённую площадку с различимым рисунком.

Зачем нужен дальномер, если камера уже видит землю?

Потому что камера меряет углы, а не расстояния. Сенсор сообщает, на сколько радиан сместился рисунок за интервал времени, и один и тот же угол на высоте 1 м и на высоте 10 м соответствует совершенно разным скоростям: во втором случае в десять раз большей. Пока прошивка не знает расстояние до земли, у неё нет масштаба, а значит, нет и скорости в метрах в секунду.

Поэтому в связке всегда есть второй прибор — лазерный ToF-дальномер или лидар, направленный вниз. В документации PX4 лидар рекомендуют вместо ультразвукового датчика: он точнее и меньше врёт на мягких поверхностях и при ветре. Заодно дальномер закрывает вторую задачу — даёт истинную высоту над препятствием при посадке, тогда как барометр отсчитывает высоту от точки взлёта и не видит ни забора, ни крыши.

Как перед вылетом проверить, что нижние датчики исправны?

Начните с осмотра: объективы нижних камер и окно дальномера должны быть чистыми, без пыли, капель, налипшего снега и заводских плёнок. Один отпечаток пальца уже режет качество потока. Затем проверьте, что обзор не перекрыт — стойки шасси, провода подвеса, крупная посадочная площадка и защита винтов иногда попадают в поле зрения сенсора.

Дальше — тест в воздухе. Поднимите аппарат на 1–2 м над текстурной поверхностью (трава, асфальт с камешками, плитка) и отпустите стики на 15–20 секунд: исправная система удерживает точку почти без сноса. На самосборе смотрите телеметрию — параметр качества потока и показания дальномера должны быть стабильны, а не скакать. И проверяйте систему в тех условиях, в которых предстоит работать: над снегом и водой домашний тест ничего не гарантирует.

Чем оптический поток отличается от системы обхода препятствий?

Это разные подсистемы, хотя обе построены на камерах. Оптический поток смотрит строго вниз и отвечает на вопрос «с какой скоростью я двигаюсь относительно земли» — то есть занимается позиционированием и удержанием точки. Система обхода препятствий смотрит вперёд, назад, вбок и вверх, строит карту глубины и отвечает на вопрос «что находится у меня на пути».

Отсюда и разная реакция на отказ. Когда слепнет обход препятствий, аппарат продолжает висеть, но перестаёт тормозить перед проводом или веткой. Когда слепнет поток, дрон видит препятствия, но перестаёт стоять на месте и начинает дрейфовать. На аппаратах DJI обе системы отключаются в одних и тех же условиях — темнота, однотонные и зеркальные поверхности, — поэтому оператору стоит воспринимать сигнал об отключении датчиков как повод перейти на ручное управление целиком.

Смежные термины