Optical flow

Технология Optical Flow (оптический поток) обеспечивает возможность полёта в двух режимах:

  • POSCTL — стабилизация и управление позицией

  • OFFBOARD — полностью автономные полёты

Для работы системы используется камера, направленная вниз. Она постоянно анализирует структуру поверхности под дроном, а алгоритм определяет смещения между кадрами. Это даёт возможность вычислять горизонтальное перемещение коптера без использования внешних средств позиционирования.

Активация

Подсказка Для работы Optical Flow необходим подключенный и настроенный лазерный дальномер.

Включите Optical Flow в файле ~/technic_ws/src/technic/technic/launch/technic.launch

<arg name="optical_flow" default="true"/>

Optical Flow публикует данные в топик /mavros/px4flow/raw/send. Кроме того, в топик /optical_flow/debug публикуется визуализация, которую можно просмотреть с помощью web_video_server.

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

Настройка полетного контроллера

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

При использовании EKF2 (параметр SYS_MC_EST_GROUP = ekf2):

  • EKF2_AID_MASK – включен флажок use optical flow.
  • EKF2_OF_DELAY – 0.
  • EKF2_OF_QMIN – 10.
  • EKF2_OF_N_MIN – 0.05.
  • EKF2_OF_N_MAX - 0.2.
  • SENS_FLOW_ROT – No rotation (отсутствие поворота).
  • SENS_FLOW_MAXHGT – 4.0 (для дальномера VL53L1X)
  • SENS_FLOW_MINHGT – 0.0 (для дальномера VL53L1X)
  • Опционально: EKF2_HGT_MODE – range sensor (см. конфигурирование дальномера).

Для проверки правильности всех настроек можно воспользоваться утилитой selfcheck.py.

Полет в POSCTL

Настройте POSCTL как один из полетных режимов PX4. Переведите в режим POSCTL.

Автономный полет

Автономный полет возможен с использованием модуля simple_offboard.

Пример взлета на высоту 1.5 м и удержание позиции:

navigate(z=1.5, frame_id='body', auto_arm=True)

Полет вперед на 1 м:

navigate(x=1, frame_id='body')

Полет назад на 1 м (относительно предыдущей целевой точки):

navigate(x=-1, frame_id='navigate_target')

При использовании Optical Flow возможна также навигация по ArUco-маркерам, в том числе используя VPE.

Дополнительные настройки

Если коптер нестабильно удерживает позицию, попробуйте увеличить коэффициенты P PID-регулятора по скорости – параметры MPC_XY_VEL_P и MPC_Z_VEL_P.

Если коптер нестабильно удерживает высоту, попробуйте увеличить коэффициент MPC_Z_VEL_P или лучше подобрать газ висения – MPC_THR_HOVER.

Если коптер уплывает по рысканью, попробуйте:

  • перекалибровать гироскопы;
  • перекалибровать магнитометр;
  • попробовать разные значения параметра EKF2_MAG_TYPE, который определяет, каким образом данные с магнитометра используются в EKF2;
  • изменять значения параметров EKF2_MAG_NOISE, EKF2_GYR_NOISE, EKF2_GYR_B_NOISE.

Заметки Для более хороших результатов выполняйте перекалибровку гироскопов непосредственно перед взлетом, используя соответствующий сниппет.

Если коптер уплывает по высоте, попробуйте:

  • повысить значение коэффициента MPC_Z_VEL_P;
  • изменить значение параметра MPC_THR_HOVER;
  • выставить MPC_ALT_MODE = 2 (Terrain following).

При использовании Optical Flow максимальная горизонтальная скорость дополнительно ограничивается. За это косвенно отвечает параметр SENS_FLOW_MAXR (максимальная достоверная "угловая скорость" оптического потока). При нормальном полёте горизонтальная скорость будет регулироваться так, чтобы показания Optical Flow не превышали 50% значения данного параметра.

Неисправности

При появлении в QGC ошибок типа EKF INTERNAL CHECKS попробуйте перезагрузить EKF2. Для этого наберите в MAVLink-консоли:

ekf2 stop
ekf2 start

results matching ""

    No results matching ""