由于在我们使用ROS进行机器人开发的时候,比如,调试智能车,硬件资源有限或者不能直接进行开发、计算的时候,我们常常会进行主从机配置。
节点可以运行在不同的计算平台上,但是ROS中 只允许存在一个Master ,在多机系统中Master只能运行在一台机器上。
以两台计算机为例,介绍分布式多机通信的配置步骤:
( 主机:studieren-GS65-Stealth-Thin-8RE,从机:nvidia-virtual-machine )
1.首先需要确定ROS多机系统中的所有计算机处于同一网络。
1.1在主机和从机上查询自己的ip地址
ifconfig主机IP为192.168.43.92, 从机IP为192.168.43.121

1.2 在主机和从机上分别添加两行内容
在终端输入
sudo gedit /etc/hosts打开文件并添加第三行和第四行 IP-ADDRESS HOST-NAME的格式
第三行为主机
第四行为从机
(存疑,这里顺序有关系吗?感觉无关...)

1.3 测试能够通信成功
在主机上,输入 ping 从机的ip/hostname
ping 192.168.43.121
或者
ping nvidia-virtual-machine在从机上,输入ping 主机的ip/hostname
ping 192.168.43.92
或者
ping studieren-GS65-Stealth-Thin-8RE通信结果如下显示为成功,
主机:

从机:

通信成功!
2.实现主从机在ros上的通讯
2.1在主机的~/.bashrc 文件末尾增加两行.
sudo gedit ~/.bashrc第一行, 主机的ip,第二行,主机的ip
export ROS_HOSTNAME=192.168.43.92
export ROS_MASTER_URI=http://192.168.43.92:113112.2在从机的~/.bashrc 文件末尾增加两行.
第一行, 从机的ip,第二行,主机的ip
export ROS_HOSTNAME=192.168.43.121
export ROS_MASTER_URI=http://192.168.43.92:113112.3 对主机和从机分别 更新一下
source ~/.bashrc2.4 应该就可以通信了,可以验证一下.
3.验证
3.1 在主机终端输入
roscore3.2 在从机终端
rosrun turtlesim turtlesim_node3.3 在主机终端
rosrun turtlesim turtle_teleop_key即可在主机的键盘上控制从机上的小乌龟运动了,显示在从机上.
注意! 一定要在同一个网下!
注意! 在配置~/.bashrc 时一定要别弄乱主从机IP.就是因为这个浪费了好久!
************************************************************************************************************
低调做事,低调做人!------来自studieren的手动小尾巴.