ROS之实现多台计算机之间的通讯(所有指令均在台式机上操作)
本篇文章实现多台计算机之间的ROS通讯,笔记本作为master,放在turtlebot机器人上面,所有指令均在台式机上操作。特别要注意的是多台计算机都必须在一个网络中,比如连接同一个路由器即可。在本文中笔记本连接ywifi,台式机通过网线连接路由器。
一、时间同步
在台式机和笔记本上分别运行:
sudo apt-get install chrony
二、获得主机名hostname
1.在笔记本上运行
hostname
得到笔记本的主机名为jenny 如下图所示:
2.同理在台式机上运行hostname得到我台式机的主机名为jennyvv
三、获得台式机和笔记本的IP
1.在笔记本上运行
ifconfig
得到笔记本的IP地址为192.168.1.1042.同理在台式机上运行ifconfig得到台式机的IP地址为 192.168.1.110
四、修改/etc文件夹下的hosts文件,将两电脑的IP和主机名绑定
首先安装gksu
sudo apt-get install gksu
打开文件gksu gedit /etc/hosts
以 IP hostname 的形式添加,如下图所示:
同理在台式机上也要如此操作。
五、修改~/.bashrc文件
本文中将笔记本jenny作为主机master, 通过如下命令编辑~/.bashrc文件
gedit ~/.bashrc
在笔记本这边的~/.bashrc文件最后添加export ROS_HOSTNAME=jenny
export ROS_MASTER_URI=http://jenny:11311
在台式机上的~/.bashrc文件最后添加
export ROS_HOSTNAME=jennyvv
export ROS_MASTER_URI=http://jenny:11311
六、正式开始通讯
1.相互ping
在笔记本上ping台式机:
ping jennyvv
得到的结果如下:
同时在台式机上运行
ping jenny
得到与上图相似的结果即为通讯成功。2.小例子:笔记本上发送命令控制台式机上的小海龟作正方形运动,所有指令均在台式机上面操作
A.首先在台式机上面运行ssh进入到笔记本中
ssh jenny
若出现ssh:connect to host jenny port 22: Connect refused
这是因为jenny笔记本上没有安装ssh服务器,通过如下指令安装
sudo apt-get install openssh-server
再次运行ssh jenny,输入密码,当台式机上@后面的主机名由@jennyvv变为@jenny后即为成功。
B.接着在上面那个终端后面运行(此时主机名为@jenny)
roscore &
此时完成了在台式机上控制笔记本运行节点管理器roscore
C.在台式机上的新终端中启动小海龟
rosrun turtlesim turtlesim_node
ssh jenny
rosrun turtlesim draw_square
此时就可以看到小海龟在画正方形的框了。
参考 《ros by example》第一版中的4.12章节
参考链接:https://blog.csdn.net/heyijia0327/article/details/42080641