ROS的通信机制

ROS是一个分布式框架,为用户提供多节点(进程)之间的通信服务,所有软件功能和工 具都建立在这种分布式通信机制上,所以ROS的通信机制是最底层也是最核心的技术。在大多数应用场景下,尽管我们不需要关注底层通信的实现机制,但是了解其相关原理一定会帮助我
们在开发过程中更好地使用ROS。以下就ROS最核心的三种通信机制进行介绍。

话题通信机制

话题在ROS中使用最为频繁,其通信模型也较为复杂。
在ROS中有两个节点:

一个是发布者Talker,
另一个是订阅者Listener。

两个节点分别发布、订阅同一个话题,启动顺序没有强制要求,此处假设Talker首先启动,可分成图中所示的七步来分析建立通信的详细过程。

在这里插入图片描述
1.Talker注册
Talker启动,通过1234端口使用RPC向ROS Master注册发布者的信息,包含所发布消息的话题名;ROS Master会将节点的注册信息加入注册列表中。

2.Listener注册
Listener启动,同样通过RPC向ROS Master注册订阅者的信息,包含需要订阅的话题名。

3.ROS Master进行信息匹配

Master根据Listener的订阅信息从注册列表中进行查找,如果没有找到匹配的发布者,则等待发布者的加入;如果找到匹配的发布者信息,则通过RPC向Listener发送Talker的RPC地址信息。

4.Listener发送连接请求
Listener接收到Master发回的Talker地址信息,尝试通过RPC向Talker发送连接请求,传输订阅的话题名、消息类型以及通信协议(TCP/UDP)。

5.Talker确认连接请求
Talker接收到Listener发送的连接请求后,继续通过RPC向Listener确认连接信息,其中包含自身的TCP地址信息。

6.Listener尝试与Talker建立网络连接

Listener接收到确认信息后,使用TCP尝试与Talker建立网络连接。

7.Talker向Listener发布数据
成功建立连接后,Talker开始向Listener发送话题消息数据。
从上面的分析中可以发现,前五个步骤使用的通信协议都是RPC,最后发布数据的过程才使用到TCP。
ROS Master在节点建立连接的过程中起到了重要作用,但是并不参与节点之间最终的数据传输。节点建立连接后,可以关掉ROS Master,节点之间的数据传输并不会受到影响,但是其他节点也无法加入这两个节点之间的网络。

二 服务通信机制

服务是一种带有应答的通信机制,通信原理如图2-11所示,与话题的通信相比,其减少了Listener与Talker之间的RPC通信。

在这里插入图片描述
1.Talker注册
Talker启动,通过1234端口使用RPC向ROS Master注册发布者的信息,包含所提供的服务名;ROS Master会将节点的注册信息加入注册列表中。

2.Listener注册
Listener启动,同样通过RPC向ROS Master注册订阅者的信息,包含需要查找的服务名。

3.ROS Master进行信息匹配

Master根据Listener的订阅信息从注册列表中进行查找,如果没有找到匹配的服务提供者,则等待该服务的提供者加入;如果找到匹配的服务提供者信息,则通过RPC向Listener发送Talker的TCP地址信息。

4.Listener与Talker建立网络连接
Listener接收到确认信息后,使用TCP尝试与Talker建立网络连接,并且发送服务的请求数据。

5.Talker向Listener发布服务应答数据
Talker接收到服务请求和参数后,开始执行服务功能,执行完成后,向Listener发送应答数据。


参数管理机制

参数类似于ROS中的全局变量,由ROS Master进行管理,其通信机制较为简单,不涉及TCP/UDP的通信

在这里插入图片描述

1.Talker设置变量
Talker使用RPC向ROS Master发送参数设置数据,包含参数名和参数值;ROS Master会将参数名和参数值保存到参数列表中。

2.Listener查询参数值
Listener通过RPC向ROS Master发送参数查找请求,包含所要查找的参数名。

3.ROS Master向Listener发送参数值
Master根据Listener的查找请求从参数列表中进行查找,查找到参数后,使用RPC将参数值发送给Listener。

这里需要注意的是,如果Talker向Master更新参数值,Listener在不重新查询参数值的情况下是无法知晓参数值已经被更新的。所以在很多应用场景中,需要一种动态参数更新的机制

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

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

相关文章

7.网络原理之TCP_IP(下)

文章目录 4.传输层重点协议4.1TCP协议4.1.1TCP协议段格式4.1.2TCP原理4.1.2.1确认应答机制 ACK(安全机制)4.1.2.2超时重传机制(安全机制)4.1.2.3连接管理机制(安全机制)4.1.2.4滑动窗口(效率机制…

软件测试面试经验分享,真实面试题

前言 本人普通本科计算机专业,做测试也有3年的时间了,讲下我的经历,我刚毕业就进了一个小自研薪资还不错,有10.5k(个人觉得我很优秀),在里面呆了两年,积累了一些的经验和技能&#…

Flink Batch SQL Improvements on Lakehouse

本文整理自阿里云研发工程师刘大龙(风离),在 Streaming Lakehouse Meetup 的分享。内容主要分为三个部分: Flink Batch on Paimon 挑战Flink Batch 核心优化后续规划 点击查看原文视频 & 演讲PPT 一、Flink Batch on Paimon 挑…

启动 React APP 后经历了哪些过程

本文作者为 360 奇舞团前端开发工程师 前言 本文中使用的React版本为18,在摘取代码的过程中删减了部分代码,具体以源代码为准。 在React 18里,通过ReactDOM.createRoot创建根节点。并且通过调用原型链上的render来渲染。 本文主要是从以下两个…

Spring实现简单的Bean容器

1.BeanDefinition,用于定义 Bean 实例化信息,现在的实现是以一个 Object 存放对象 public class BeanDefinition {/*** bean对象*/private Object bean;/*** 存放 (定义)Bean 对象*/public BeanDefinition(Object bean) {this.bea…

长期用眼不再怕!NineData SQL 窗口支持深色模式

您有没有尝试过被明亮的显示器闪瞎眼的经历? 在夜间或低光环境下,明亮的界面会导致许多用眼健康问题,例如长时间使用导致的眼睛疲劳、干涩和不适感,同时夜间还可能会抑制褪黑素分泌,给您的睡眠质量带来影响。 这些问…

​比特币ETF将迎来审核窗口期

作者:Greg Cipolaro,NYDIG 全球研究主管 编译:WEEX Exchange 几只重要的 ETF 申请将于 10 月中旬迎来审核窗口,本文通过观察近期期权市场的动态,以研究交易者对这些关键 ETF 日期的仓位态度;门头沟&#xf…

Vue3 + TS 自动检测线上环境 —— 版本热更新提醒

🐔 前期回顾 编写 loading、加密解密 发布NPM依赖包,并实施落地使用_彩色之外的博客-CSDN博客 目录 🌍 问题产生 🤖 性能效率 🪂 新建 autoUpdate.ts 🎋 在App.vue使用 🌍 问题产生 当用…

《扩散模型 从原理到实战》Hugging Face (二)

第二章 Hugging Face简介 本章无有效内容 第三章 从零开始搭建扩散模型 有时候,只考虑事情最简单的情况反而更有助于理解其工作原理。本章尝试从零开始搭建廓庵模型,我们将从一个简单的扩散模型讲起,了解其不同部分的工作原理,…

IntelliJ IDEA快速查询maven依赖关系

1.在Maven窗口中点击Dependencies->show Dependencies 2.得到依赖关系图 此时原有快捷键Ctrlf可以查询jar包,如果没有查询菜单出来则设置快捷键方式为 File->Settings->Keymap->搜索栏输入find->在Main Menu下Edit下Find下Find双击算则Add keyboard…

云可观测性安全平台——掌动智能

云可观测性安全平台是一个跨架构、跨平台的可观测性方案,实现对云环境下的细粒度数据可视化,满足安全部门对云内部安全领域的多场景诉求,包括敏感数据动态监管、云网攻击回溯分析、攻击横移风险监控、云异常流量分析。本文将介绍掌动智能云可…

Oracle 11g_FusionOS_安装文档

同事让安装数据库,查询服务器信息发现操作系统是超聚变根据华为openEuler操作系统更改的自研操作系统,安装过程中踩坑不少,最后在超聚变厂商的技术支持下安装成功,步骤可参数该文。 一、 安装环境准备 1.1 软件下载 下载地址:…

ubuntu 20 安装 CUDA

1. 查看需要安装的cuda版本 nvidia-smi cuda的版本信息如下图所示 2. 去官网下载对应版本的CUDA 官网:CUDA Toolkit Archive | NVIDIA Developer 弹出以下界面,依次点击以下按钮 得到以下内容: 复制下载链接,下载cuda11到本…

Selenium Webdriver自动化测试框架

最近正在编写selenium webdriver自动化框架,经过几天的努力,目前基本已经实现了一套即能满足数据驱动、又能满足Web关键字驱动的自动化框架(主要基于 antjenkinstestngselenium webdriverjxl实现)。通过这次的自动化框架开发&…

ChatGPT 在机器学习中的应用

办公室里一个机器人坐在人类旁边,Artstation 上的流行趋势,美丽的色彩,4k,充满活力,蓝色和黄色, DreamStudio出品 一、介绍 大家都知道ChatGPT。它在解释机器学习和深度学习概念方面也非常高效,…

外壳防护等级的最低要求

声明 本文是学习GB-T 3027-2012 船用白炽照明灯具. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了船用白炽照明灯具(以下简称灯具)的要求、试验方法、检验规则、标识、包装和储 存等。 本标准适用于电源电压在250V 以下的交流…

巨人互动|Facebook海外户Facebook的特点优势

Facebook作为全球最大的社交媒体平台之一,同时也是最受欢迎的社交网站之一,Facebook具有许多独特的特点和优势。本文小编将说一些关于Facebook的特点及优势。 1、全球化 Facebook拥有数十亿的全球用户,覆盖了几乎所有国家和地区。这使得人们…

layui 树状控件tree优化

先上效果图: 我选的组件是这个: 动态渲染完后,分别在窗体加载完成,节点点击事件分别加入js: //侧边栏图标替换//layui-icon-subtraction$(function () {$(".layui-icon-file").addClass("backs&quo…

在EXCEL中构建加载项之创建加载项的目的及规范要求

【分享成果,随喜正能量】一句南无阿弥陀佛,本是释迦牟尼佛所证的无上正等正觉法,洒在娑婆世界的众生海中,只为末世众生能够以信愿之心抓住此救命稻草,要知道今世人此生的处境,可能只剩这道要么极乐要么三涂…

【华为云云耀云服务器L实例评测】- 云原生实践,快捷部署人才招聘平台容器化技术方案!

🤵‍♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…