主从机配置
现有一个需求:robot负责维护master节点,computer负责调用一些节点服务。环境变量如何设置??
其实问题就是,多系统的ros应该如何通信。
ros需要一个ros-master来控制整个ros通信,选择robot作为master主机,因此在robot中:
export ROS_MASTER_URI=http://192.168.1.1:11311
export ROS_HOSTNAME=192.168.1.1
或者
export ROS_IP=192.168.1.1
roscore
为了连接到robot中的master,则在computer中这么设置:
export ROS_MASTER_URI=http://192.168.1.1:11311
(export ROS_IP=192.168.1.2 )
或者
(export ROS_HOSTNAME=192.168.1.2)
准确回答:
1 两个设备的 export ROS_HOSTNAME .. 是不需要的。
2 在多个设备之间运行ros节点的时候,仅仅需要运行一个master进程。ROS_MASTER_URI 中必须包含运行master设备的ip(通过roscore或者roslaunch等命令)。因此,该环境变量在所有设备中必须是一模一样的。然而,ROS_HOSTNAME or ROS_IP设置为运行ros节点的本机IP. 所以,他们的值在不同设备间是不同的。
3 如果一台机器的hostname设置为其他设备不可寻址的值,你就需要设置 ROS_IP or ROS_HOSTNAME 环境变量,不需要同时设置,他们是互相排斥的。