【ROS】分布式通信架构

news2025/4/16 9:06:44

【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,并订阅来自智能车的激光雷达数据。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2335002.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

零基础HTML·笔记(持续更新…)

基础认知 HTML标签的结构 <strong>文字变粗</strong> &#xff1c;开始标签&#xff1e;内容&#xff1c;结束标签&#xff1e; 结构说明&#xff1a; 标签由<、>、1、英文单词或字母组成。并且把标签中<>包括起来的英文单词或字母称为标签名。常…

Visual Studio 2022 UI机器学习训练模块

VS你还是太超标了&#xff0c;现在机器学习都不用写代码了吗&#xff01;&#xff01; 右键项目解决方案&#xff0c;选择机器学习模型

FreeRTOS使任务处于阻塞态的API

在FreeRTOS中&#xff0c;任务进入阻塞状态通常是因为等待某个事件或资源。以下是常用的使任务进入阻塞态的API及其分类&#xff1a; 1. 任务延时 vTaskDelay(pdMS_TO_TICKS(ms)) 将任务阻塞固定时间&#xff08;相对延时&#xff0c;从调用时开始计算&#xff09;。 示例&…

独立开发者之网站的robots.txt文件如何生成和添加

robots.txt是一个存放在网站根目录下的文本文件&#xff0c;用于告诉搜索引擎爬虫哪些页面可以抓取&#xff0c;哪些页面不可以抓取。下面我将详细介绍如何生成和添加robots.txt文件。 什么是robots.txt文件&#xff1f; robots.txt是遵循"机器人排除协议"(Robots…

Leedcode刷题 | Day31_贪心算法05

一、学习任务 56. 合并区间代码随想录738. 单调递增的数字968. 监控二叉树 二、具体题目 1.56合并区间56. 合并区间 - 力扣&#xff08;LeetCode&#xff09; 给出一个区间的集合&#xff0c;请合并所有重叠的区间。 示例 1: 输入: intervals [[1,3],[2,6],[8,10],[15,1…

猫咪如厕检测与分类识别系统系列【一】 功能需求分析及猫咪分类特征提取

开发背景 家里养了三只猫咪&#xff0c;其中一只布偶猫经常出入厕所。但因为平时忙于学业&#xff0c;没法时刻关注牠的行为。我知道猫咪的如厕频率和时长与健康状况密切相关&#xff0c;频繁如厕可能是泌尿问题&#xff0c;停留过久也可能是便秘或不适。为了更科学地了解牠的…

粘性定位(position:sticky)——微信小程序学习笔记

1. 简介 CSS 中的粘性定位&#xff08;Sticky positioning&#xff09;是一种特殊的定位方式&#xff0c;它可以使元素在滚动时保持在视窗的特定位置&#xff0c;类似于相对定位&#xff08;relative&#xff09;&#xff0c;但当页面滚动到元素的位置时&#xff0c;它会表现得…

最新版IDEA超详细图文安装教程(适用Mac系统)附安装包及补丁2025最新教程

目录 前言 一、IDEA最新版下载 二、IDEA安装 三、IDEA补丁 前言 IDEA&#xff08;IntelliJ IDEA&#xff09;是专为Java语言设计的集成开发环境&#xff08;IDE&#xff09;&#xff0c;由JetBrains公司开发&#xff0c;被公认为业界最优秀的Java开发工具之一。DEA全称Int…

JavaWeb-04-Web后端基础(SpringBootWeb、HTTP协议、分层解耦、IOC和DI)

目录 一、SpringBootWeb入门 1.1 概述 1.2 入门程序 1.2.1 需求 1.2.2 开发步骤 1.3 入门解析 二、HTTP协议 2.1 HTTP概述 2.1.1 介绍 2.1.2 特点 2.2 HTTP请求协议 2.2.1 介绍 2.2.2 获取请求数据 2.3 HTTP响应协议 2.3.1 格式介绍 2.3.2 响应状态码 2.3…

SQLite + Redis = Redka

Redka 是一个基于 SQLite 实现的 Redis 替代产品&#xff0c;实现了 Redis 的核心功能&#xff0c;并且完全兼容 Redis API。它可以用于轻量级缓存、嵌入式系统、快速原型开发以及需要事务 ACID 特性的键值操作等场景。 功能特性 Redka 的主要特点包括&#xff1a; 使用 SQLi…

wkhtmltopdf 实现批量对网页转为图片的好工具,快速实现大量卡片制作

欢迎来到涛涛聊AI 1、需求痛点 在学习当中经常遇到一些知识点&#xff0c;想和大家分享。但只有文本形式&#xff0c;很多人不愿意去阅读&#xff0c;也看不到重点。 如果自己去单独设计页面版式&#xff0c;又太浪费时间。那就想着有没有一种方法&#xff0c;可以把一个知识…

深入解析xDeepFM:结合压缩交互网络与深度神经网络的推荐系统新突破

今天是周日&#xff0c;我来解读一篇有趣的文章——xDeepFM。这篇文章由 Mao et al. 发表在SIGIR 2019会议。文章提出了一个新的网络模型——压缩交互网络&#xff08;CIN&#xff09;&#xff0c;用于显式地学习高阶特征交互。通过结合 CIN 和传统的深度神经网络&#xff08;D…

CST1017.基于Spring Boot+Vue共享单车管理系统

计算机/JAVA毕业设计 【CST1017.基于Spring BootVue共享单车管理系统】 【项目介绍】 共享单车管理系统&#xff0c;基于 Spring Boot Vue 实现&#xff0c;功能丰富、界面精美 【业务模块】 系统共有四类用户&#xff0c;分别是&#xff1a;监管用户、运营用户、调度用户、普…

vue实现二维码生成器和解码器

vue实现二维码生成器和解码器 1.生成基本二维码&#xff1a;根据输入的value生成二维码。 2.可定制尺寸&#xff1a;通过size调整大小。 3.颜色和背景色&#xff1a;设置二维码颜色和背景。 4.静区&#xff08;quiet zone&#xff09;支持&#xff1a;通过quietZone调整周围的…

c#和form实现WebSocket在线聊天室

c#和form实现WebSocket在线聊天室 功能点 后端程序 (Program.cs)​​1.WebSocket 聊天服务器核心功能​​a.管理客户端连接&#xff08;ConnectionManager 类&#xff09;b.支持公聊消息广播&#xff08;所有用户可见&#xff09;c.支持私聊消息&#xff08;通过 用户ID 格式指…

量子代理签名:量子时代的数字授权革命

1. 量子代理签名的定义与核心原理 量子代理签名&#xff08;Quantum Proxy Signature, QPS&#xff09;是经典代理签名在量子信息领域的延伸&#xff0c;允许原始签名者&#xff08;Original Signer&#xff09;授权给代理签名者&#xff08;Proxy Signer&#xff09;代为签署文…

「Unity3D」TextMeshPro中的TMP_InputField,用来实现输入框的几个小问题

第一&#xff0c;正确设置Scrollbar。 设置Scrollbar之后&#xff0c;不能设置Text Component的Font Size为Auto Size&#xff0c;否则Scrollbar无法正确计算显示。 那么&#xff0c;要想自动适配字体大小&#xff0c;可以让Placeholder中的Font Size设置为Auto&#xff0c;这…

Docker 介绍 · 安装详细教程

为什么选择 Docker&#xff1f; ✅ 环境一致性 – 告别“在我机器上能跑”的问题&#xff0c;确保开发、测试、生产环境一致。 ✅ 高效轻量 – 秒级启动&#xff0c;资源占用远低于传统虚拟机。 ✅ 跨平台支持 – 可在任何支持 Docker 的环境中运行&#xff0c;包括云服务器、…

vulnhub:sunset decoy

靶机下载地址https://www.vulnhub.com/entry/sunset-decoy,505/ 渗透过程 简单信息收集 nmap 192.168.56.0/24 -Pn # 确定靶机ip&#xff1a;192.168.56.121 nmap 192.168.56.121 -A -T4 # 得到开放端口22,80 在80端口得到save.zip&#xff0c;需要密码解压。 john破解压缩…

方案精读:71页制造企业一体化ERP系统项目实施方案【附全文阅读】

今天聊聊制造企业 ERP 系统项目实施方案。 某钾肥企业在发展中面临信息化难题,像物资编码不规范、业务手工化、财务业务脱节等 。为此,打造 “流程驱动,业务整合” 的一体化 ERP 管理平台很关键。它涵盖采购、销售、生产、运营流程,实现供应链、预算、资金、财务整…