主流1.仿真环境下报错 Not arming:geofence RTL requiers valid home;以及Compass Sensors inconsistent等
去年买的跑个仿真还有地理围栏和校准传感器,显然是不合理的。
现象:无法正常解锁arm
解法:将电脑存储的历史仿真参数清空
rm ~/.ros/eeprom/parameters*
rm -rf ~/.ros/sitl*
上面的解法有一定的道理和作用,但仍未能解决问题,实际解法如下
真·解法: 将开启仿真的.launch文件中的 env name="PX4_ESTIMATOR" 的 value 改为 ekf2
原理浅析:查看注释提及的文件~/prometheus_px4/ROMFS/px4fmu_common/init.d-posix/rcS
得知两种模式ekf2和ekf2_vision分别对应GPS和slam作为定位来源(官方注释瞎jb写,哪来的ekf2_gps),没有这个来源自然会报错,因此即使将GF_ACTION改为none或warning也会报错
Arming denied! Global position required

2.mavros无法正常链接主控板和电脑端
现象:一般不会报错,但无人机连不上地面站,当要使用控制节点时,会报错:
MODE: Unsupported FCU
解法:目前还没有太好的解法,但是问题是出在主控板那边,因此重新编译px4即可。
问题的根源是因为build文件夹下的libmav_msgs.so这个动态库丢失或者是和其他包里的动态库文件重名了,因此补上就行了,重新编译就行;如果仍无法解决,可找到并删除其他库的同名文件(反正同一个系统下也不会有重名文件这么低级错误,如果出现这种问题,肯定是另一个用来实现其他功能的project辣)
udp端口号不一致
查看mavros端启动节点的param与px4下的mavros_sitl.launch下的fcu_url是否一致
不一致就改,一般改成:
<arg name="fcu_url" default="udp://:14540@127.0.0.1:14557"/>
默认写法是<arg name="fcu_url" default="udp://:14540@localhost:14557"/>
不灵就改成:
<arg name="fcu_url" default="udp://:14540@127.0.0.1:14557"/>
可能有用
相关链接: