我正在尝试使 VISUAL_POSITION_ESTIMATE 消息起作用。经过大量的尝试和错误,我最终创建了一个非常基本的示例程序,它只是以 VISUAL_POSITION_ESTIMATE 消息的形式提供 PX4 为无人机报告的位置和方向。我的预期是这将是一个 noop,因为发送到 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
启动后,我启动了基于 mavlink_upd.c 示例代码的最小 VISUAL_POSITION_ESTIMATE 应用程序,这里是源代码: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 消息的幼稚虚拟样本工作的最简单方法是什么。
阿科斯