背景介绍

多机通信是ROS的基础能力之一,相比于ROS1,ROS2通过非常简单的配置即可实现多机通信。

对于两个安装了ROS2(或者地平线的TogetherROS)的设备,设备的IP地址在同一网段,并且ROS_DOMAIN_ID相同(如果不设置,默认是0),即可实现设备之间通过ROS2通信。

下面介绍X3派和PC虚拟机都连接无线wifi网络的情况下,通过ROS2实现跨设备通信。


准备工作

X3派

已安装Ubuntu 20.0.4系统,安装方法:1. 快速开始 — 旭日X3派用户手册 1.0.0 文档 (horizon.ai)
已安装ROS2 Foxy,推荐安装地平线基于ROS2 Foxy深度优化和扩展的TogetherROS,安装速度更快。安装方法:2.2. 通过DEB包安装 — 地平线机器人平台用户手册 1.0 文档 (horizon.ai)
已连接wifi,连接方法:2. 系统配置 — 旭日X3派用户手册 1.0.0 文档 (horizon.ai)

PC虚拟机

PC宿主机为windows,使用VMware workstation 15.5举例说明。
虚拟机已安装Ubuntu 20.0.4系统。
虚拟机已安装ROS2 Foxy。

操作方法

PC宿主机断开有线连接,和X3派连接同一wifi。
虚拟机网络设置成桥接&复制物理网络连接状态:
1.png
启动虚拟机。

结果分析

查看X3派的IP地址:

2.png

查看PC虚拟机中Ubuntu的IP地址:

3.png
连接同一wifi后,X3派和PC虚拟机中Ubuntu的IP地址相同。开始测试X3派和PC虚拟机之间通过ROS2进行通信。

X3派发布消息:

4.png

PC端订阅消息:

5.png
可以看到,PC端的ROS2 Foxy订阅到了X3派TogetherROS发布的消息,说明两个设备在连接同一wifi的情况下,通过ROS2跨设备通信成功。

本文转自地平线开发者社区

原作者:zhuk

原链接:详细文档及代码点击此处一键直达