两台ubuntu18.04电脑ros通信并利用mavros进行PX4-Gazebo仿真
- MAVROS安装
mavros安装有两种方法,一种是二进制安装,一种是源码安装方式。本文推荐二进制安装方式,对于大部分开发者,仅仅使用mavros消息并不需要对其源码进行修改,mavros只作为通信媒介。
执行命令:
sudo apt-get install ros-melodic-mavros ros-melodic-mavros-extras
本人电脑为Ubuntu18.04,ros版本为melodic,16.04ros版本为kinetic,对上述命令行进行相应修改即可。
运行 install_geographiclib_datasets.sh 脚本来安装GeographicLib datasets:
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
bash ./install_geographiclib_datasets.sh
- mavros版本问题
注意:两台电脑上的mavros版本必须保持一致,否则会报错或者警告,例如:
[WARN] [1639473174.588319]: Could not process inbound connection: Client [/mavros] wants topic [/mavros/rc/override] to have datatype/md5sum [mavros_msgs/OverrideRCIn/fd1e1c08fa504ec32737c41f45223398], but our version has [mavros_msgs/OverrideRCIn/73b27a463a40a3eda1f9fbb1fc86d6f3] Dropping connection.{'topic': '/mavros/rc/override', 'tcp_nodelay': '0', 'md5sum': 'fd1e1c08fa504ec32737c41f45223398', 'type': 'mavros_msgs/OverrideRCIn', 'callerid': '/mavros'}
此时运行命令:
rosversion mavros
查看mavros版本,如:
如果发现版本不对应,全部卸载安装最新版,不知道怎么通过二进制安装方式安装对应的mavros版本。
- 两台ubuntu18.04电脑ros通信
(1)两台电脑在同一个局域网下
(2)修改 bashrc文件
执行命令sudo gedit ~/.bashrc
,添加以下内容:
主机中添加:
export ROS_HOSTNAME=主机hostname
export ROS_MASTER_URI=http://主机IP:11311
export ROS_IP=主机IP
注意: 此处主机IP必须是主机ip地址,不可以是localhost,ubuntu查看IP地址命令为ifconfig
,如下图所示:
从机中添加:
export ROS_HOSTNAME=从机hostname
export ROS_MASTER_URI=http://主机IP:11311
export ROS_IP=主机IP
修改**/etc/hosts**文件
执行命令:
sudo gedit /etc/hosts
主机中添加:
从机IP 从机hostname
从机中添加
主机IP 主机hostname
主机名为命令行中@符号后的名字,根据上面图片,此主机名为ubuntu
ros通信测试
在从机中打印话题列表
rostopic list
可看到主机中的话题列表基本上是通信成功了的,或者:
主机运行:
roscore
rosrun turtlesim turtlesim_node
从机运行:
rosrun turtlesim turtle_teleop_key
如果可以通过从机上键盘控制主机上的小乌龟移动,就说明成功了!
参考链接:https://blog.csdn.net/zhanghm1995/article/details/106781954
- 两台ubuntu18.04进行px4-gazebo仿真
从机定位至px4源代码文件夹,终端运行命令:
make px4_sitl gazebo
主机打开ros,终端运行roscore
roscore
从机终端运行:
roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"
其中:127.0.0.1 是指本机地址,14557 一般为默认, 可在px4代码编译终端命令时查看。
主机终端运行:
rostopic list
可以查看所有的话题消息名。
主机终端运行:
rostopic echo /mavros/state
查看mavros通信状态, connected=ture 表示正常连接。
主机终端运行例程,即可启动gazebo仿真中的无人机。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)