因为我们在使用ROS进行机器人开发的时候,比如调试智能汽车的时候,当硬件资源有限或者不能直接进行开发计算时,经常会配置主从机。
节点可以运行在不同的计算平台上,但在 ROS 中只允许一个 Master。在多机系统中,Master只能运行在一台机器上,其他机器需要通过SSH与Master取得联系。
以两台电脑为例介绍分布式多机通信的配置步骤:(主机:ucar_mini,从机:xiaolong-Inspiron-5580)
一、设置IP地址
1. 首先需要确保ROS多机系统中的所有计算机都在同一个网络上。
ifconfig 查看主机地址:

ifconfig 查看从机地址:


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

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

3.设置好后,在两台电脑上用ping命令测试网络是否连通。
下图显示双向网络畅通无阻,说明底层网络通信没有问题。 (可以ping后加IP或名字)


二、设置 ROS_MASTER_URI
因为系统中只能有一个Master,所以Slave需要知道Master的位置。
在slave隐藏的.bashrc文件(ctrl+h打开)中添加如下内容:
ROS_HOSTNAME 添加从机地址; ROS_MASTER_URI 添加主机地址。
三、多机通信测试
1.我们可以通过ssh切换到host端来控制slave上的host。


2.在host端启动master和小龟节点,在slave端启动keyboard节点进行控制。 (这时候你可能会因为电脑性能的影响,发现数据传输慢或者控制效果差)


四、expansion
当我们汽车主板的计算资源不是很好的时候,我们可以用这个ssh在主机上启动master,在slave上进行各种计算,rviz可视化等(当然我们的multi -计算机通信不限于两台计算机设备)。同时,我们还可以通过NFS和VNC进行远程调试。
参考本文内容:
《ROS机器人开发实践》-胡春旭
如有错误或不足,欢迎留言指正!
本文来自本站,转载请注明本文网址:
http://www.pc-fly.com/a/tongxingongju/article-381378-1.html
……