背景介绍
多机通信是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。
虚拟机网络设置成桥接&复制物理网络连接状态:
启动虚拟机。
结果分析
查看X3派的IP地址:
查看PC虚拟机中Ubuntu的IP地址:
连接同一wifi后,X3派和PC虚拟机中Ubuntu的IP地址相同。开始测试X3派和PC虚拟机之间通过ROS2进行通信。
X3派发布消息:
PC端订阅消息:
可以看到,PC端的ROS2 Foxy订阅到了X3派TogetherROS发布的消息,说明两个设备在连接同一wifi的情况下,通过ROS2跨设备通信成功。
原作者:zhuk
原链接:https://developer.horizon.ai/...