0

我正在尝试使 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 消息的幼稚虚拟样本工作的最简单方法是什么。

阿科斯

4

0 回答 0