不同版本ROS下的多机通信(一台主机、两台及以上从机)

1、不同版本的ROS之间可以进行通讯

安装了不同版本ROS的不同设备之间是可以进行通信的,甚至可以建立一台主机和多台从机之间的联系,但从目前完成的连接来看仅能够支持主机控制一台从机。但从机之间可以获取彼此topic。

2、ROS多机通讯部署过程

2.1、将进行通讯的ROS设备置于同一个局域网内

不同的ROS系统将在同一局域网内进行通信,若通过使用路由器,则需要固定路由器分配给各个设备的IP,通过路由器设置将分配的IP地址与设备的MAC地址绑定,使路由器分配给各个设备的IP地址固定不变。以TP-LINK的易展路由器设置为例。

IP与MAC映射表(TP-LINK路由器易展版)

将路由器分配的IP与对应设备的MAC地址绑定

2.2、查看各个设备的IP地址

在Terminal窗口输入 ifconfig,查看本设备IP地址。

查看本机设备IP地址

2.3、修改hosts文件

使用 sudo gedit /etc/hosts 命令打开hosts文件,分别输入各个设备分配的IP地址以及对应名字,名字可自己命名,如下图,4-5行为补充内容。作为主机的设备要把所有的设备IP以及自己命名的设备名称写入文件。从机只需要填写主机和自己对应的IP、名字。

hosts文件

2.4、修改.bashrc文件

所有设备上使用命令行 sudo gedit ~/.bashrc打开.bashrc文件,在最后分别加入两行代码,如下图119-120行代码:应输入:

export ROS_HOSTNAME=本设备命名

export ROS_MASTER_URI=http://主机设备名:11311

修改.bashrc文件

2.5、远程控制小乌龟模拟

主机控制台窗口输入:roscore,启动ros

从机输入:rosrun turtlesim turtlesim_node

主机再打开新的控制台窗口,输入:rosrun turtlesim turtle_teleop_key,便可以使用主机方向键控制从机中的小乌龟移动。

笔记本为主机进行控制

P.S.本次实验使用一台Dell G5和两台DJI Manifold2-C,笔记本安装了Ubuntu20.04、ROS版本为Noetic,两台Manifold2-C预装Ubuntu16.04,ROS版本为Kinetic。不同ROS版本间不受影响,有其他教程中遇到不同版本ROS在通信时出现问题,在修改文档中设备名后添加.local得到解决。

  • 1
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值