欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ROS之实现多台计算机之间的通讯(所有指令均在台式机上操作)

程序员文章站 2024-02-22 14:04:16
...

本篇文章实现多台计算机之间的ROS通讯,笔记本作为master,放在turtlebot机器人上面,所有指令均在台式机上操作。特别要注意的是多台计算机都必须在一个网络中,比如连接同一个路由器即可。在本文中笔记本连接ywifi,台式机通过网线连接路由器。

一、时间同步

在台式机和笔记本上分别运行:

sudo apt-get install chrony

二、获得主机名hostname

1.在笔记本上运行

hostname

得到笔记本的主机名为jenny     如下图所示:

ROS之实现多台计算机之间的通讯(所有指令均在台式机上操作)

2.同理在台式机上运行hostname得到我台式机的主机名为jennyvv

三、获得台式机和笔记本的IP

1.在笔记本上运行

ifconfig
得到笔记本的IP地址为192.168.1.104

ROS之实现多台计算机之间的通讯(所有指令均在台式机上操作)

2.同理在台式机上运行ifconfig得到台式机的IP地址为 192.168.1.110

四、修改/etc文件夹下的hosts文件,将两电脑的IP和主机名绑定

首先安装gksu

sudo apt-get install gksu
打开文件
gksu gedit /etc/hosts

以   IP  hostname 的形式添加,如下图所示:

ROS之实现多台计算机之间的通讯(所有指令均在台式机上操作)

同理在台式机上也要如此操作。

五、修改~/.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

得到的结果如下:

ROS之实现多台计算机之间的通讯(所有指令均在台式机上操作)

同时在台式机上运行

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后即为成功。

ROS之实现多台计算机之间的通讯(所有指令均在台式机上操作)

B.接着在上面那个终端后面运行(此时主机名为@jenny)

roscore &
ROS之实现多台计算机之间的通讯(所有指令均在台式机上操作)

此时完成了在台式机上控制笔记本运行节点管理器roscore

C.在台式机上的新终端中启动小海龟

rosrun turtlesim turtlesim_node
ROS之实现多台计算机之间的通讯(所有指令均在台式机上操作)

ROS之实现多台计算机之间的通讯(所有指令均在台式机上操作)

D.在台式机的新终端中连接笔记本并发送命令令
ssh jenny
rosrun turtlesim draw_square

此时就可以看到小海龟在画正方形的框了。

ROS之实现多台计算机之间的通讯(所有指令均在台式机上操作)

ROS之实现多台计算机之间的通讯(所有指令均在台式机上操作)


参考 《ros by example》第一版中的4.12章节

参考链接:https://blog.csdn.net/heyijia0327/article/details/42080641







相关标签: ROS通讯