在第一篇文章 ros的安装中提到过ros是一个伪分布式系统,允许多台机器合作计算,这篇文章讲一下ros多台机器通信的配置。
首先要搞清楚两个概念 master和host,说ros是伪分布式的系统,是因为各个节点有主次之分,master的地位无可动摇
Ros的分布式大概是这样的:
- 整个系统有两种节点构成,master和host。
- Host可以有很多,master只能有一个
- Host做完计算后数据通过rosout话题发布到master上,由master对机器人发布,进而控制机器人运动
- Master也是一个host,也可以进行运算
- Host根据bashrc里的配置,通过ip地址找到master

在系统中的相关配置:
- hosts文件的配置
host文件是系统的网络配置文件,相当于本地dns,里面的内容是主机名和地址的键值对,配置host文件是为了确保主机名和ip地址对应,此步骤有点玄学的成分在里面,有时候需要配置,有时候不需要配置
用到的所有电脑:
先用gedit打开host文件
sudo gedit /etc/host
将所有用得到的主机名和地址以文件本来内容的格式写上去即可。
- bashrc文件的配置
用gedit打开bashrc
sudo gedit ~/.bashrc
将以下内容添加到bashrc文件的底部
export ROS_MASTER_URI=http:// ip_of_master:11311
export ROS_HOSTNAME=ip_of_host
ip_of_master是master的ip地址,就是和机器人底盘直接相连的那台电脑的ip地址。
Ip_of_host 是host的ip地址,每台电脑都是host,所以每台电脑的ip_of_host都是自己的IP地址
保存退出后source ~/.bashrc
- 检查网络是否配置成功
Master上:
roscore 启动ros
host上:
rostopic list 查看话题,如果出现话题名则成功,报错连接不上ros主机则失败
注:不知道是我机器的问题还是怎么滴,ros的网络非常不稳定,常常出现连接失败的情况
除了使用ros本身的通信机制,还可以使用ssh工具进行远程连接,ssh工具只是远程登录发布命令,并不涉及分布计算,此处不做讲解。关于本文提到的话题节点,之后会讲到。

本文详细介绍了ROS(Robot Operating System)在多台机器间的通信配置,包括理解master和host的角色,如何配置hosts和bashrc文件,以及如何检查网络配置的成功。在实际操作中,可能遇到ROS网络连接的不稳定性,可以通过SSH工具进行远程连接作为补充。
7883

被折叠的 条评论
为什么被折叠?



