ROS分布式通信

介绍

ROS是一个分布式计算环境。一个运行中的ROS系统可以包含分布在多台计算机上多个节点。根据系统的配置方式,任何节点可能随时需要与任何其他节点进行通信。简单来说,即一个ROS功能的实现,需要启动多个节点,例如之前的小乌龟案例,需要启动roscore节点、乌龟界面turtlesim_node节点以及键盘控制节点turtlr_teleop_key节点,我们之前进行实现时,是在一台电脑打开三个终端界面,分别键入命令来实现,调用这台电脑的资源,通信也是在这一台电脑上实现,ROS分布式通信可以让你在一台的电脑上启动部分节点,另外几台电脑启动其余节点,保证启动ROS功能所需启动的所有节点即可,不同电脑间可以远程进行不同节点间的通信。即ROS是进程也就是节点是分布式框架,ROS中的进程可分布于不同主机,不同主机协同工作,从而分散计算压力。

网络配置要求

  • 所有端口上的所有机器之间必须有完整的双向连接。

  • 每台计算机必须通过所有其他计算机都可以解析的名称来公告自己

实现

准备

保证不同计算机处于同一网络中,最好分别设置固定的IP地址,如果是在虚拟机中,需要将网络适配器改为桥接模式。

虚拟机将网络适配器改为桥接模式方法:

(在虚拟机软件界面:设置->网络->连接方式,选择桥接网卡)。

b6ec3e879055490ba310bfdfaa24886b.png

设置固定IP地址方法(主从机都要设置):

(在ubuntu系统中:有线设置->网络->有线->IPV4->手动,分别填入IP地址、子网掩码以及网关)

c109bd55333a4a8ea55fda765492d468.png

IP地址与子网掩码查询方式,在终端中键入以下命令:

sudo apt install net-tools
ifconfig

 acbd6478fa0c4e19b0da55d16c5c1759.png

图片中红色框起来的inet后的10.0.2.15为此台电脑的IP地址,netmask为此台电脑的子网掩码。

网关查询方式:

键入以下命令:

route -n

 3a9fb272891343b3a948d760fd142ad1.png

图中红色框起来的10.0.2.2为此台电脑网关。

查询方式不唯一,可以自行查询学习。 

配置文件修改

分别修改不同计算机的 /etc/hosts 文件,在该文件中加入对方的IP地址和计算机名,在主机端加入从机的IP地址和从机的计算机名,在从机端加入主机的IP地址和主机的计算机名。 

键入如下命令:

cd /etc
sudo gedit hosts

 命令解释:cd /etc为进入etc文件夹,sudo gedit hosts命令为编辑hosts文件,键入后会打开hosts文本文件。主机的hosts文件中有主机本身的IP地址和计算机名,如果没有修改过是在第二行,需要在其下面一行添加上从机的IP地址和计算机名。同理从机的hosts文件在本身IP地址和计算机名下一行添加上主机的IP地址和计算机名。

这里需要注意,hosts文件修改后需要重启电脑以使hosts文件生效。

测试主机hosts文件生没生效,可在主机中打开一个终端,键入 ping + 从机IP地址或从机计算机名,若有响应则说明生效;同理从机hosts文件生没生效,在可在从机中打开一个终端,键入 ping + 主机IP地址或主机计算机名,若有响应则说明生效

 配置主机IP

主机为你启动roscore节点的电脑

在主机主文件夹下找到.bashrc文件(.bashrc文件为隐藏文件,需要在主文件夹下ctrl+h显示所有文件才能找到)双击打开.bashrc文件,在最下面加上如下两行内容:

export ROS_MASTER_URI=http://主机IP:11311
export ROS_HOSTNAME=主机IP

注意复制粘贴后需要将主机IP改为你的主机的IP地址。修改后保存退出,打开终端,键入 source .bashrc 使修改的.bashrc文件生效。

配置从机IP

在从机主文件夹下找到.bashrc文件(.bashrc文件为隐藏文件,需要在主文件夹下ctrl+h显示所有文件才能找到)双击打开.bashrc文件,在最下面加上如下两行内容:

export ROS_MASTER_URI=http://主机IP:11311
export ROS_HOSTNAME=从机IP

注意复制粘贴后需要将主机IP和从机IP改为你的主机和从机的IP地址。修改后保存退出,打开终端,键入 source .bashrc 使修改的.bashrc文件生效。从机如果有多台,每一台都需要进行上述从机的所有操作。

测试

以小乌龟案例进行测试,主机打开一个终端,启动roscore节点

roscore

主机再打开一个终端,键入下面命令打开小乌龟订阅节点

rosrun turtlesim turtlesim_node

而后在从机打开一个终端,键入下面命令打开小乌龟发布节点

rosrun turtlesim turtle_teleop_key

将鼠标光标置于从机启动发布节点的终端,通过键盘控制小乌龟运动,主机小乌龟界面响应从机发出的运动控制命令而运动,则说明配置成功。

  • 38
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值