不知道什么原因,个人按照网络上别人配置ROS多主机通讯的一般方法没有成功,经尝试后,发现一种配置方法可以成功实现多主机的通讯,所以分享一下。
多主机通讯分为主机和从机,并且两台机子需要在同一局域网下
为了方便浏览,两台机器的信息如下
主机IP:192.168.1.101,机器名:fast02-NUC11TNKi7
从机IP:192.168.1.102,机器名:BIGPOT
一 从机配置
1.ifconfig
查看本机IP ,以192.168.1.102为例
2.sudo gedit /etc/hosts
进入hosts文件,将192.168.1.102替换到第二行
3.添加主机IP,在主机上输入ifconfig
查看IP,以192.168.1.101为例。主机输入hostname
查看机器名,以fast02-NUC11TNKi7为例。
另起一行,将这两项填入,中间用Tab键分割,不是空格。
4在.bashrc中添加如下
export ROS_HOSTNAME=BIGPOT
#从机机器名
export ROS_IP=192.168.1.102
#从机IP地址
export ROS_MASTER_URI=http://fast02-NUC11TNKi7:11311
#主机机器名
二 主机配置
和从机配置类似,将自己的IP值替换到hosts文件的第二行,同时将从机的IP和机器名另起一行填入hosts文件,不同的是.bashrc文件。
做完上述步骤后,在.bashrc文件填入以下三行
export ROS_HOSTNAME=fast02-NUC11TNKi7
#主机机器名
export ROS_IP=192.168.1.101
#主机IP地址
export ROS_MASTER_URI=http://fast02-NUC11TNKi7:11311
#主机机器名
三 测试
以上步骤完成后可以运行官方的乌龟GUI节点和键盘控制节点进行测试多主机通讯是否配置成功。
首先主机启动roscore
然后任意一个机器启动GUI节点rosrun turtlesim turtlesim_node
之后另外的一个机器启动键盘控制节点rosrun turtlesim turtle_teleop_key
,键盘上下左右控制,即可在另一台机器上看到乌龟运动。
四 其它事项
如果平时不需要多主机通讯,可以在.bashrc文件中将之前的三行注释,改为以下内容
export ROS_MASTER_URI=http://127.0.0.1:11311
export ROS_IP=127.0.0.1