Базовые разрывы образцов VISUAL_POSITION_ESTIMATE PX4 EKF2
Я пытаюсь заставить сообщения VISUAL_POSITION_ESTIMATE работать. После долгих проб и ошибок я закончил тем, что создал очень простой пример программы, которая просто передает положение и ориентацию, которые PX4 сообщает для дрона, в форме сообщений VISUAL_POSITION_ESTIMATE. Я ожидал, что это будет зазор, поскольку визуальная позиция, отправленная в PX4, такая же, как она уже рассчитана.
Результатом является то, что в такой установке невозможно даже вооружить дрон.
Если кто-то вооружает беспилотник и взлетает без учета сообщений VISUAL_POSITION_ESTIMATE, а затем начинает рассматривать их после того, как беспилотник находится в воздухе, беспилотник в конечном итоге упадет и начнет двигаться беспорядочно.
Интересно, что я делаю неправильно, и как заставить работать сообщения VISUAL_POSITION_ESTIMATE. Любая помощь приветствуется.
Детали эксперимента:
У меня есть настройка PX4 SITL с использованием AirSim, как описано здесь: https://dev.px4.io/en/simulation/airsim.html. Я использую последний мастер для прошивки PX4. Исполняемый файл./build/posix_sitl_default/bin/px4 запускается из исходного каталога. скрипт запуска PX4: https://pastebin.com/C7ExQzuk
после запуска я запускаю мое минимальное приложение VISUAL_POSITION_ESTIMATE, которое основано на примере кода mavlink_upd.c, вот источник: https://pastebin.com/FfxRkQYJ
если я начну PX4 с учетом визуальных оценок положения, я даже не смогу его вооружить:
pxh> param set EKF2_AID_MASK 25
+ EKF2_AID_MASK: curr: 1 -> new: 25
pxh> INFO [ecl/EKF] EKF commencing external vision position fusion
INFO [ecl/EKF] EKF commencing external vision yaw fusion
pxh> INFO [ecl/EKF] EKF GPS checks passed (WGS-84 origin set, using GPS height)
INFO [ecl/EKF] EKF commencing GPS fusion
pxh> commander arm
WARN [commander_tests] PREFLIGHT FAIL: EKF INTERNAL CHECKS
ERROR [commander] arming failed
Если я запускаю его только с помощью GPS, я могу включить и выключить, но затем время истечения на фьюжн закончится, и дрон упадет / переместится:
pxh> commander arm
pxh> INFO [logger] Start file log
INFO [logger] Opened log file: ./log/2018-08-21/15_11_20.ulg
pxh>
pxh>
pxh> commander takeoff
pxh> INFO [commander] Takeoff detected
pxh> param set EKF2_AID_MASK 25
+ EKF2_AID_MASK: curr: 1 -> new: 25
pxh> INFO [ecl/EKF] EKF commencing external vision position fusion
pxh> WARN [ecl/EKF] EKF GPS fusion timeout - reset to GPS
WARN [ecl/EKF] EKF GPS fusion timeout - reset to GPS
акробатика связана с событиями тайм-аута синтеза, отмеченными выше.
Интересно, что я делаю не так, и каков самый простой способ заставить наивный фиктивный образец сообщений VISUAL_POSITION_ESTIMATE работать.
Акос