Использование Optical Flow
При использовании технологии Optical Flow возможен полет в режиме POSCTL и автономные полеты (режим OFFBOARD) по камере, направленной вниз, за счет измерения сдвигов текстуры поверхности пола.
Включение
СОВЕТ
Для работы Optical Flow необходим подключенный и настроенный лазерный дальномер.
Включите Optical Flow в файле ~/catkin_ws/src/clover/clover/launch/clover.launch:
<arg name="optical_flow" default="true"/>
Optical Flow публикует данные в топик /mavros/px4flow/raw/send. Кроме того, в топик /optical_flow/debug публикуется визуализация, которую можно просмотреть с помощью web_video_server.
СОВЕТ
Для правильной работы модуль камеры должен быть корректно подключен и сконфигурирован.
Настройка полетного контроллера
СОВЕТ
При использовании сборки PX4 для Клевера необходимые параметры PX4 применятся автоматически.
При использовании LPE (параметр SYS_MC_EST_GROUP = local_position_estimator, attitude_estimator_q):
LPE_FUSION– включены флажки fuse optical flow и flow gyro compensation.LPE_FLW_QMIN– 10.LPE_FLW_SCALE– 1.0.LPE_FLW_R– 0.2.LPE_FLW_RR– 0.0.SENS_FLOW_ROT– No rotation (отсутствие поворота).SENS_FLOW_MAXHGT– 4.0 (для дальномера VL53L1X)SENS_FLOW_MINHGT– 0.0 (для дальномера VL53L1X)- Опционально:
LPE_FUSION– включен флажок pub agl as lpos down (см. конфигурирование дальномера.
При использовании 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
