问题描述
依照XTdrone进行仿真平台基础配置,进行至软件在环仿真,运行以下两行命令:
roslaunch px4 mavros_posix_sitl.launch
rostopic echo /mavros/state
倘若connected: True,则说明MAVROS与SITL通信成功。
但是笔者在运行完这两行命令之后显示如下:
header:
seq: 0
stamp:
secs: 0
nsecs: 0
frame_id: ''
connected: False
armed: False
guided: False
manual_input: False
mode: ''
system_status: 0
也就是说,MAVROS与SITL并没有建立有效的通信,而且第一行命令有以下警告:
[ WARN] [1720620938.388903113]: Could not retrive negate_measured_roll parameter value, using default (0)
[ WARN] [1720620938.389277172]: Could not retrive negate_measured_pitch parameter value, using default (0)
[ WARN] [1720620938.389597722]: Could not retrive negate_measured_yaw parameter value, using default (0)
[ WARN] [1720620938.390793007]: Could not retrive debounce_s parameter value, using default (4.000000)
[ WARN] [1720620938.391165733]: Could not retrive err_threshold_deg parameter value, using default (10.000000)
[vehicle_spawn_ubuntu_38705_2814855972253643906-5] process has finished cleanly
log file: /home/liu/.ros/log/09073686-3daa-11ef-8849-9b3a3cf41928/vehicle_spawn_ubuntu_38705_2814855972253643906-5*.log
libcurl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to fuel.ignitionrobotics.org:443
而且启动的GAZEBO仿真界面内的四旋翼无人机的旋翼是转动的,笔者并未解锁四旋翼无人机也并未使四旋翼无人机进入OFFBOARD模式,四旋翼无人机的旋翼是不应该转动。
问题解决
在XTdrone的官方文档中,推荐PX4版本号为1.13、Ubuntu版本为18.04、GAZEBO版本为9。但是由于需求,我需要使用1.15版本的PX4,该版本的PX4在进行源码安装时,默认安装GAZEBO11,这两项均不满足官方文档的要求。
官方文档有提示:
如果是FALSE,一般是因为.bashrc里的路径写的不对,请仔细检查。
在设置路径时,主要是在.bashrc中添加以下路径:
source ~/catkin_ws/devel/setup.bash
source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo
但是需要注意的是,最后一行,由于PX4源码更新,已经变为:
~/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic
另外,设置的GAZEBO路径也要相应变为:
# Gazebo 11 paths
export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:/usr/lib/x86_64-linux-gnu/gazebo-11/plugins
export GAZEBO_MODEL_PATH=${GAZEBO_MODEL_PATH}:/usr/share/gazebo-11/models
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib/x86_64-linux-gnu/gazebo-11/plugins
export PATH=${PATH}:/usr/share/gazebo-11
另外,也要检查文件mavros_posix_sitl.launch中端口号是不是以下:
<arg name="fcu_url" default="udp://:14540@localhost:14557"/>
在设置好以上以后再运行,即可建立通信,也就是以下界面:
另外,对于报错
libcurl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to fuel.gazebosim.org:443
原因在于VPN节点问题,更换一个节点即可。
倘若连接失败后进行以上操作,仍然无法连接,可能是之前打开的GAZEBO或者节点未能正确关闭,重启虚拟机试一下。