概述
ROS设计的灵魂就在于其分布式计算。一个优秀的节点不需要考虑在哪台机器上运行,它允许实时分配计算量以最大化的利用系统资源。(有一个特例——驱动节点必须运行在跟硬件设备有物理连接的机器上)。在多个机器人上使用ROS是一件很简单的事,你只需要记住一下几点:
- 你只需要一个master,只要在一个机器上运行它就可以了。
- 所有节点都必须通过配置 ROS_MASTER_URI连接到同一个master。
- 任意两台机器间任意两端口都必须要有完整的、双向连接的网络。(参考ROS/NetworkSetup).
- 每台机器都必须向其他机器广播其能够解析的名字。
引用自:https://wiki.ros.org/cn/ROS/Tutorials/MultipleMachines
使用
根据概述可以知道,要想在两个机器上进行通信的话,需要以下一些配置:
- 必须有一个roscore节点在运行,当作master节点
- 其他机器,必须配置环境变量
ROS_MASTER_RUI
指向master节点,例如:export ROS_MASTER_RUI=http://10.0.0.2:11311
- 不同的机器之间必须要能够通信(可以使用ping测试通信)
- 如果其他机器找不到广播机器地址,则需要在广播机器上(也就是发布消息的机器)配置环境变
ROS_HOSTNAME
指向自己的ip
(具体可以参考:ROS/NetworkSetup) 例如:export ROS_HOSTNAME=10.0.0.3