Настройка Optical Flow для ArduPilot

Все статьи

Содержание

  1. Выбор Optical Flow сенсора
  2. Подключение PX4FLOW
  3. Подключение PMW3901 (UART)
  4. Подключение MTF-01 (Optical Flow + LiDAR)
  5. Подключение ARK Flow (CAN)
  6. Настройка параметров
  7. Калибровка и тестирование
  8. Использование в полёте

1. Выбор Optical Flow сенсора

МодельИнтерфейсДальностьРазрешениеПрименение
PX4FLOWI2C0.8-15м752×480Indoor позиционирование, без GPS
PMW3901UART0.5-10м30×30 пиксIndoor позиционирование, посадка
MTF-01UART0.3-12м + LiDAR30×30 пиксIndoor позиционирование + высота
ARK Flow MRCAN0.08-50м + LiDARPAA3905Профессиональное применение
HereFlowCAN0.5-10м30×30 пиксIndoor позиционирование

2. Подключение PX4FLOW (I2C)

PX4FLOW подключение к Pixhawk

Схема подключения к Pixhawk:

Пин PX4FLOWЦветPixhawk I2C
GNDЧёрныйGND
5VКрасный5V
SDAБелыйSDA
SCLЖёлтыйSCL

⚠️ Используется 4-пин I2C порт, Serial порт (6 пинов) не используется

Ориентация монтажа:

PX4FLOW ориентация

Параметры:

FLOW_TYPE = 1              # PX4FLOW
FLOW_POS_X = 0             # Смещение по X (м)
FLOW_POS_Y = 0             # Смещение по Y (м)
FLOW_POS_Z = 0.1           # Смещение по Z (м)
EK3_SRC1_POSXY = 3         # Optical Flow для позиции XY
EK3_SRC1_VELXY = 3         # Optical Flow для скорости XY

📖 Официальная документация PX4FLOW


3. Подключение PMW3901 (UART)

PMW3901 сенсор
PMW3901 подключение к Pixhawk 6C

Схема подключения к SERIAL:

Пин PMW3901ЦветPixhawk SERIAL
GNDЧёрныйGND
5VКрасный5V
TXЖёлтыйRX
RXСинийTX

Параметры (для SERIAL5):

SERIAL5_PROTOCOL = 18      # Optical Flow
SERIAL5_BAUD = 115         # 115200 baud
FLOW_TYPE = 4              # PMW3901-Serial
FLOW_POS_X = 0             # Смещение по X (м)
FLOW_POS_Y = 0             # Смещение по Y (м)
FLOW_POS_Z = 0.1           # Смещение по Z (м)
EK3_SRC1_POSXY = 3         # Optical Flow для позиции
EK3_SRC1_VELXY = 3         # Optical Flow для скорости

📖 Holybro PMW3901 руководство


4. Подключение MTF-01 (Optical Flow + LiDAR)

MTF-01 сенсор
MTF-01 ориентация

Схема подключения к UART:

Пин MTF-01ЦветPixhawk SERIAL
GNDЧёрныйGND
5VКрасный5V
RxЖёлтыйTX
TxЗелёныйRX

Параметры (для SERIAL4):

SERIAL4_PROTOCOL = 10      # Optical Flow
SERIAL4_BAUD = 115         # 115200 baud
FLOW_TYPE = 10             # MTF-01
RNGFND1_TYPE = 20          # Benewake LiDAR (встроенный)
RNGFND1_MIN = 0.3          # Мин. дальность LiDAR
RNGFND1_MAX = 10           # Макс. дальность LiDAR
EK3_SRC1_POSXY = 3         # Optical Flow для позиции
EK3_SRC1_VELXY = 3         # Optical Flow для скорости

📖 MicoAir MTF-01 гайд


5. Подключение ARK Flow (CAN)

ARK Flow ориентация

Монтаж:

  • Разъёмы направлены к задней части дрона
  • Подключение через CAN порт Pixhawk
  • Можно подключить несколько сенсоров через второй CAN разъём

Параметры:

FLOW_TYPE = 6              # DroneCAN
CAN_P1_DRIVER = 1          # Включить DroneCAN
CAN_D1_PROTOCOL = 1        # DroneCAN протокол
RNGFND1_TYPE = 24          # DroneCAN LiDAR
RNGFND1_MAX = 30           # Макс. дальность 30м
FLOW_POS_X = 0.02          # Смещение вперёд 2см
FLOW_POS_Z = 0.05          # Смещение вниз 5см
EK3_SRC1_POSXY = 3         # Optical Flow для позиции
EK3_SRC1_VELXY = 3         # Optical Flow для скорости

📖 ARK Flow документация


6. Настройка параметров ArduPilot

Основные параметры Optical Flow

ПараметрЗначениеОписание
FLOW_TYPE1/4/6/10Тип сенсора (PX4FLOW/PMW3901/DroneCAN/Serial)
FLOW_POS_X-0.5~0.5Смещение по X от центра (м)
FLOW_POS_Y-0.5~0.5Смещение по Y от центра (м)
FLOW_POS_Z0.05~0.3Высота от центра вращения (м)
FLOW_ORIENT_YAW0-3Ориентация (0=вперёд, 1=право, 2=назад, 3=влево)
EK3_SRC1_POSXY3Источник позиции XY (3=Optical Flow)
EK3_SRC1_VELXY3Источник скорости XY (3=Optical Flow)
EK3_SRC1_YAW1Источник курса (1=компас)

Параметры EKF3 для Indoor полётов

EK3_SRC1_POSXY = 3         # Optical Flow для позиции
EK3_SRC1_VELXY = 3         # Optical Flow для скорости
EK3_SRC1_POSZ = 1          # Барометр для высоты
EK3_SRC1_VELZ = 1          # Барометр для скорости Z
EK3_SRC1_YAW = 1           # Компас для курса
GPS_TYPE = 0               # Отключить GPS (для indoor)

Для совместной работы с LiDAR

RNGFND1_TYPE = 20/24       # LiDAR тип
RNGFND1_MIN = 0.3          # Мин. дальность
RNGFND1_MAX = 10           # Макс. дальность
RNGFND1_GNDCLR = 0.1       # Клиренс при посадке

📖 ArduPilot Optical Flow документация


7. Калибровка и тестирование

Включение Optical Flow в Mission Planner

Mission Planner Optical Flow настройка
  1. Initial SetupOptional HardwareOptical Flow
  2. Поставьте галочку Enable
  3. Нажмите Write Params

Проверка данных в реальном времени

Mission Planner Status экран

В Mission Planner:

  1. Перейдите на вкладку FLIGHT DATAStatus
  2. Найдите параметры:
  • opt_m_x — скорость по X
  • opt_m_y — скорость по Y
  • opt_qua — качество сигнала (0-255)
  • opt_x, opt_y — позиция

⚠️ opt_qua должен быть > 50 для надёжной работы

Настройка Arming Check для Indoor

Arming Check настройки
ARMING_CHECK = 1           # Включить проверки
# В Mission Planner: CONFIG/TUNING → Standard Params
# Снимите галочки: ALL и GPS (для indoor без GPS)

Графики для проверки калибровки

Проверка в логах:

  • flowY — данные оптического потока
  • bodyY — данные IMU
  • GyrY — данные гироскопа

Линии должны совпадать при движении дрона

📖 Optical Flow тестирование и калибровка


8. Использование в полёте

Режимы полёта с Optical Flow

РежимОписаниеТребуется
LOITERУдержание позицииOptical Flow + LiDAR/Baro
PosHoldУдержание позицииOptical Flow + LiDAR/Baro
ALT_HOLDУдержание высотыBarometer
StabilizeРучной режимНе требуется
FlowHoldТолько Optical FlowOptical Flow

Рекомендуемые настройки для Indoor

# Режимы полёта (Channel 5)
FLTMODE1 = 6               # Stabilize
FLTMODE2 = 2               # AltHold
FLTMODE3 = 7               # Loiter
FLTMODE4 = 9               # PosHold

# Скорости
PILOT_VELZ_MAX = 2.5       # Макс. вертикальная скорость
PILOT_SPEED_XY = 5         # Макс. горизонтальная скорость
LAND_SPEED = 0.5           # Скорость посадки

# EKF настройки
EK3_POSNE_MNMSE = 0.1      # Мин. ошибка позиции
EK3_VELNE_MNMSE = 0.1      # Мин. ошибка скорости

Проверка перед полётом

Чеклист:

  • opt_qua > 50
  • opt_m_x, opt_m_y реагируют на движение
  • ✅ EKF статус зелёный (нет ошибок)
  • ✅ LiDAR показывает корректную высоту
  • ✅ Моторы заблокированы до арминга

⚠️ Важные замечания

Питание 5V от отдельного BEC для стабильности
После изменения параметров — перезагрузка обязательна
Для UART: TX→RX, RX→TX (перекрёстное подключение)
Требуется хорошее освещение для работы сенсора
Избегайте однотонных поверхностей (нет текстуры)
Не размещайте рядом с моторами (вибрации)
Минимальная высота работы: 0.5-1м от поверхности

Источники

ДокументацияСсылка
ArduPilot Optical Flowardupilot.org/copter/docs/common-opticalflow.html
ArduPilot PX4FLOWardupilot.org/copter/docs/common-px4flow.html
ArduPilot ARK Flowardupilot.org/copter/docs/common-arkflow.html
Holybro PMW3901docs.holybro.com
MicoAir MTF-01micoair.com/docs

После настройки обязательно проведите наземные тесты перед первым полётом в помещении.

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