ROS的一个典型应用场景是:在机器人上安装一台笔记本或单板机,然后在桌面计算机上监视或控制机器人,这时就需要在机器人与桌面计算机之间进行通信。ROS使得多台机器观察同一套话题、服务和参数变得相当容易。
1. 使用 chrony 进行时间同步
ROS网络中的很多消息都带有时间戳,机器之间的时间同步往往很非常关键。一种使计算机保持同步状态的简单方法是在桌面计算机和机器人上同时安装 chrony 数据包。该数据包会保持计算机上的时钟与互联网服务器上的时钟一致,从而使得每台计算机的时间都同步。
安装 chrony:
$ sudo apt install chrony
安装完成之后,chrony守护进程会自动启动并且开始让计算机与数台互联网服务器直接同步时间。
2. 使用 Zeroconf 进行 ROS 联网
Ubuntu 支持 Zeroconf技术,允许同一子网下的不同设备通过本地主机名而不是 IP 地址来连接彼此。
使用 hostname 命令来获取所使用设备的短名称,该命令会输出你在 Ubuntu 初始化设置时设置的主机名称。
$ hostname
my_desktop
假设桌面计算机的名称为 my_desktop,机器人的名称为 my_robot。则对应的 Zeroconf名称分别为 my_desktop.local和 my_robot.local。
3. 测试连通性
使用ping命令来确保两台电脑之间基本的连通性。
(1)在桌面计算机上 ping 机器人
$ ping my_robot.local
PING my_robot.local (192.168.1.7) 56(84) bytes of data.
64 bytes from my_robot (192.168.1.7)

本文详细介绍了在ROS环境中实现多台计算机间通信的过程,包括时间同步、网络配置、环境变量设置及节点运行等步骤,确保了不同设备间的有效通信。
最低0.47元/天 解锁文章
1068





