当前位置: 首页 > news >正文

【ROS】分布式通信架构

【ROS】分布式通信架构

  • 前言
  • 环境要求
  • 主机设置(Master)
  • 从机设置(Slave)
  • 主机与从机通信测试
  • 本文示例
    • 启动ROS智能车激光雷达节点
    • 本地计算机配置与订阅

前言

在使用 ROS 时,我们常常会遇到某些设备计算能力不足的情况。例如,一辆搭载 ROS 的智能车,可能无法独立完成所有计算任务。此时,可以通过 ROS 的分布式通信架构,让其他设备协助其完成部分功能。


  • 什么是 ROS 分布式通信?

ROS 支持多个设备协同工作。通过网络连接,它们可以组成一个更大的 ROS 系统,实现节点之间的通信与协作。

  • 主机(Master):负责管理整个 ROS 系统,协调各个节点。
  • 从机(Slave):通过网络连接到主机,参与数据通信和处理任务。

本文示例说明

  • ROS 智能车(主机):运行激光雷达节点,发布激光数据。
  • 本地计算机(从机):运行 rviz,订阅并显示智能车的激光雷达数据。

通过这个例子,我们将介绍如何搭建一个简单的 ROS 分布式通信系统,让多台设备协同完成任务。


参考资料:

  • ROS分布式部署通信

环境要求

  1. 所有设备需处于同一局域网中
  2. 各设备之间通过 IP 地址互相 ping 通,确保网络连接正常
  3. 建议安装相同版本的 ROS,以避免不必要的兼容性问题(ROS1 和 ROS2 各版本之间通常也具备一定兼容性)

主机设置(Master)

本文中,主机为 ROS 智能车,运行环境为 Ubuntu 18.04 + ROS Melodic

在 ROS 分布式系统中,主机就是运行 roscore 的设备roscore 可以理解为 ROS 的“心脏”,即使有多个设备参与,一整个 ROS 系统也只需要一个 roscore 实例。

下面先通过命令行手动设置环境变量,测试无误后可将其写入 ~/.bashrc 中以便自动加载。

# 设置 ROS Master 的地址(即运行 roscore 的设备 IP,端口默认 11311)
export ROS_MASTER_URI=http://<ROS智能车IP>:11311  

# 设置当前设备的 IP 地址(确保其他设备能访问到它)
export ROS_IP=<ROS智能车IP>   

# 可选项:设置当前设备的主机名,通常与 ROS_IP 一致
export ROS_HOSTNAME=<ROS智能车IP>

设置完成后,运行 roscore,并观察终端输出中的 ROS_MASTER_URI。只要它与我们之前通过 export 设置的地址一致,说明配置成功。

在这里插入图片描述

测试无误后,将上述环境变量写入主机的 ~/.bashrc 文件,以便每次开机自动加载


从机设置(Slave)

本文中,从机为本地计算机,运行环境为 WSL2 + Ubuntu 20.04 + ROS Noetic

在 ROS 的分布式系统中,从机依赖主机运行的 roscore 来完成 ROS 通信。可以理解为从机共享主机的“心脏”,协同处理任务,共同构成一个完整的 ROS 系统。

我们先通过命令行手动设置以下环境变量,测试无误后再将其写入 ~/.bashrc,实现自动加载:

# 设置 ROS Master 的地址(即主机设备 IP,端口默认 11311)
export ROS_MASTER_URI=http://<主机设备IP>:11311  

# 设置当前设备的 IP 地址(确保其他设备能访问到它)
export ROS_IP=<本地计算机IP>   

# 可选项:设置当前设备的主机名,通常与 ROS_IP 一致
export ROS_HOSTNAME=<本地计算机IP>

配置完成后,运行 rostopic list,检查终端输出中的当前正在运行的节点。如果能看到主机上的 roscore 发布的 rosout 话题,说明配置成功。

在这里插入图片描述
测试无误后,将上述环境变量添加到从机的 ~/.bashrc 文件中,以便每次开机自动加载


主机与从机通信测试

- 在主机上发布话题(确保 roscore 正在运行):

rostopic pub /test_topic std_msgs/String "Hello from Master" -r 1

- 在从机上订阅该话题:

rostopic echo /test_topic

如果从机能够接收到数据(如下图),则说明主机与从机的通信正常。

在这里插入图片描述


本文示例

启动ROS智能车激光雷达节点

在 ROS 智能车上启动激光雷达节点,该节点将负责发布激光雷达的数据。
在这里插入图片描述

本地计算机配置与订阅

在本地计算机上的 ROS 系统中,启动 rviz,并订阅来自智能车的激光雷达数据。
在这里插入图片描述

相关文章:

  • 文件包含(CTFshow 刷题记录)持续更新
  • 【漏洞复现】Vite 任意文件读取漏洞 CVE-2025-30208/CVE-2025-31125/CVE-2025-31486/CVE-2025-32395
  • scikit-learn 开源框架在机器学习中的应用
  • vue入门:计算属性computer监听器watch
  • 智慧农业整体解决方案
  • AF3 ProteinDataset类的__getitem__方法解读
  • 论文笔记——KIMI-VL:具有增强推理能力的有效开源视觉语言模型
  • 从0到1使用C++操作MSXML
  • 在 Spring Boot 中实现服务器端推送(SSE):两种方法的比较与实践
  • MySQL事务机制
  • GPT-4、Grok 3与Gemini 2.0 Pro:三大AI模型的语气、风格与能力深度对比
  • H5:实现安卓和苹果点击下载App自动跳转到对应的应用市场
  • 【C#】CAN通信的使用
  • STM32 HAL 库开发之通用定时器中断
  • Linux中的文件传输(附加详细实验案例)
  • [MRCTF2020]ezpop wp
  • CSI-PVController
  • 面向对象编程基础:从方法论到实践的全面解析
  • 【BEPU V1物理】BEPUphysics v1 入门指南 汉化笔记#1
  • JavaScript 基础语法系统学习笔记
  • 特朗普促卡塔尔说服伊朗放弃核计划,伊朗总统:你来吓唬我们?
  • 回望星河深处,唤醒文物记忆——读《发现武王墩》
  • 夜读丨读《汉书》一得
  • 佩斯科夫:俄方代表团15日将在伊斯坦布尔等候乌克兰代表团
  • 孙简任吉林省副省长
  • 退休10年后,70岁成都高新区管委会原巡视员王晋成被查