在运行别人的的px4代码时,比如一个包Base_control中,终端提示了MODE: Unsupported FCU,该错误主要是因为端口不正确,mavros没能正确的连接到px4固件,如果用rostopic echo /mavros/state会发现连接状态是false。
rostopic echo /mavros/state
结果为,即connected为false
header:
seq: 0
stamp:
secs: 0
nsecs: 0
frame_id: ''
connected: False
armed: False
guided: False
manual_input: False
mode: ''
而这里原因很多,有可能我们的环境没有添加,但是一般到了这步应该会在~/.bashrc中已经添加了px4固件和gazebo以及sitl之类的环境,所以主要还是在于端口
由于运行的是添加到catkin_ws/src下的包Base_control,也就是运行的是其中的mavros_posix_sitl.launch,而该launch文件在firmware中是同名的,因此可能两个端口是冲突的,也就是说是用别人的launch其中的端口地址与我们本机的可能不同。
我最终查看了我的Firmware目录下的mavros_posix_sitl.launch,发现
<arg name="fcu_url" default="udp://:24540@localhost:34580"/>
而Baes_Control中的为
<arg name="fcu_url" default="udp://:14540@127.0.0.1:14557"/>
所以最终将后者的改为前者即可。