参考一下两个链接:
https://github.com/PX4/PX4-Autopilot/issues/12038
https://docs.px4.io/master/en/simulation/ros_interface.html
产生MODE: Unsupported FCU问题的根本原因就是用roslaunch启动仿真时,mavros没能正确的连接到px4固件,如果用rostopic echo /mavros/state会发现连接状态是false。
rostopic echo /mavros/state
header:
seq: 0
stamp:
secs: 0
nsecs: 0
frame_id: ''
connected: False
armed: False
guided: False
manual_input: False
mode: ''
system_status: 0
---
解决这一问题的方法其实px4的官网已经在设置时给出了:
cd <PX4-Autopilot_clone>
make px4_sitl_default gazebo
source ~/catkin_ws/devel/setup.bash # (optional)
source Tools/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)/Tools/sitl_gazebo
roslaunch px4 posix_sitl.launch
这里<PX4-Autopilot_clone>就是复制的px4固件源码的文件夹,$(pwd)是当前终端所在的文件夹。但是上面这个是每次都要输入,比较麻烦。因此,以我的电脑为例,只需要用以下操作就可以实现每次只要打开终端就可以自动实现上面的功能:
#编辑.bashrc文件:
sudo gedit ~/.bashrc
#在.bashrc文件最后加上以下代码:
source ~/PX4-Autopilot/Tools/setup_gazebo.bash ~/PX4-Autopilot ~/PX4-Autopilot/build/px4_sitl_default
export ROS_PACKAGE_PATH=~/PX4-Autopilot:$ROS_PACKAGE_PATH
export ROS_PACKAGE_PATH=~/PX4-Autopilot/Tools/sitl_gazebo:$ROS_PACKAGE_PATH
注意:上面代码中的~/PX4-Autopilot是我电脑上px4固件源代码的文件夹!!!