在第一篇文章 ros的安装中提到过ros是一个伪分布式系统,允许多台机器合作计算,这篇文章讲一下ros多台机器通信的配置。
首先要搞清楚两个概念 master和host,说ros是伪分布式的系统,是因为各个节点有主次之分,master的地位无可动摇
Ros的分布式大概是这样的:

  1. 整个系统有两种节点构成,master和host。
  2. Host可以有很多,master只能有一个
  3. Host做完计算后数据通过rosout话题发布到master上,由master对机器人发布,进而控制机器人运动
  4. Master也是一个host,也可以进行运算
  5. Host根据bashrc里的配置,通过ip地址找到master

\"\"

在系统中的相关配置:

  1. hosts文件的配置
    host文件是系统的网络配置文件,相当于本地dns,里面的内容是主机名和地址的键值对,配置host文件是为了确保主机名和ip地址对应,此步骤有点玄学的成分在里面,有时候需要配置,有时候不需要配置
    用到的所有电脑:
    先用gedit打开host文件
    sudo gedit /etc/host

将所有用得到的主机名和地址以文件本来内容的格式写上去即可。

  1. 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

  1. 检查网络是否配置成功
    Master上:
    roscore 启动ros

host上:
rostopic list 查看话题,如果出现话题名则成功,报错连接不上ros主机则失败

注:不知道是我机器的问题还是怎么滴,ros的网络非常不稳定,常常出现连接失败的情况

除了使用ros本身的通信机制,还可以使用ssh工具进行远程连接,ssh工具只是远程登录发布命令,并不涉及分布计算,此处不做讲解。关于本文提到的话题节点,之后会讲到。

收藏 打印