我正在尝试使VISUAL_POSITION_ESTIMATE消息正常工作。经过大量的试验和错误,我最终创建了一个非常基本的示例程序,该程序以VISUAL_POSITION_ESTIMATE消息的形式简单地提供了PX4为无人机报告的位置和方向。我希望这不会发生,因为发送到PX4的视觉位置与它已经计算出的相同。
结果是在这样的设置下,甚至无法武装无人机。
如果一个人在不考虑VISUAL_POSITION_ESTIMATE消息的情况下武装无人机并起飞,则在无人机空降之后开始考虑它们,无人机最终会翻滚和移动不正常。
我想知道我在做错什么,以及如何使VISUAL_POSITION_ESTIMATE消息正常工作。任何帮助表示赞赏。
实验细节:
我有一个使用AirSim的PX4 SITL设置,如此处所述: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消息的简单虚拟样本的最简单方法是什么。
Akos