ROS分布式多机通信(主从机配置)

       由于在我们使用ROS进行机器人开发的时候,比如,调试智能车,硬件资源有限或者不能直接进行开发、计算的时候,我们常常会进行主从机配置。
       节点可以运行在不同的计算平台上,但是ROS中 只允许存在一个Master ,在多机系统中Master只能运行在一台机器上,其他机器需要通过ssh的方式和Master取得联系。
       以两台计算机为例,介绍分布式多机通信的配置步骤:( 主机:ucar_mini,从机:xiaolong-Inspiron-5580

一、设置IP地址

1.首先需要确定ROS多机系统中的所有计算机处于同一网络

ifconfig查看主机地址:

ROS分布式多机通信(主从机配置)_第1张图片
ifconfig查看从机地址:

ROS分布式多机通信(主从机配置)_第2张图片

2.在主机系统的/etc目录下hosts文件中加入从机的IP地址和对应的计算机名:

ROS分布式多机通信(主从机配置)_第3张图片

在从机系统的/etc目录下hosts文件中加入主机的IP地址和对应的计算机名:

ROS分布式多机通信(主从机配置)_第4张图片

3.设置完毕后,分别在两台计算机上使用ping命令测试网络是否连通。
下图表示双向网络都畅通,说明底层网络的通信已经没问题。(ping后面可以加IP也可以加名字

ROS分布式多机通信(主从机配置)_第5张图片
ROS分布式多机通信(主从机配置)_第6张图片

二、设置ROS_MASTER_URI

因为系统中只能存在一个Master,所以从机需要知道Master的位置。
在从机的.bashrc隐藏文件(ctrl+h打开)中添加如下内容:
ROS_HOSTNAME添加的是从机地址;ROS_MASTER_URI添加的是主机地址。
在这里插入图片描述

三、多机通信测试

1.我们可以通过ssh切换到主机终端,实现在从机上对主机的控制。

ROS分布式多机通信(主从机配置)_第7张图片
2.在主机终端启动master和小海龟节点,在从机终端启动键盘节点进行控制。(这个时候可能会发现数据传输的比较慢或者受计算机性能的影响而使控制效果比较差
ROS分布式多机通信(主从机配置)_第8张图片
ROS分布式多机通信(主从机配置)_第9张图片

三、拓展

        当我们的小车主板计算资源不是很好的时候,我们就可以使用这个ssh远程控制,从而在主机上启动master,而在从机上进行各种计算,rviz可视化等(当然我们的多机通信不局限于两台计算机设备)。同时,我们也可以通过NFS和VNC进行远程调试。

本文内容参考:
《ROS机器人开发实践》——胡春旭

如有错误或者不足之处,欢迎大家留言指正!

你可能感兴趣的:(ROS)