《详解》如何在ROS中建立MQTT通信

news2025/1/19 17:16:32

观前提醒:本期主要内容为ROS中MQTT通信节点的编程,和ROS部分底层通信机制的浅析

一、复习一下:ROS通信机制&MQTT通信异同点

ROS通信机制概述

ROS中的主要通信机制有以下几种:

  1. 话题 (Topics)
  • 发布/订阅模型(Publish/Subscribe):这种通信方式中,节点可以发布消息到一个主题,或者订阅一个主题以接收消息。这种方式是匿名的,发布者和订阅者不需要知道彼此的存在。
  • 消息(Messages):在主题上发送的数据结构,被定义为简单的数据类型(如整数、浮点数、字符串等)的组合,也可以是更复杂的嵌套结构。
  • 2.服务 (Services)
  • 请求/响应模型(Request/Response):服务是一种同步通信方式,一个节点可以向另一个节点发出请求,并等待响应。服务定义了请求和响应的消息类型。
  • 服务客户端和服务服务器(Service Client/Service Server):节点可以作为服务服务器来提供服务,或者作为服务客户端来调用服务。
  • 3.动作 (Actions)
  • 目标/结果模型(Goal/Result):用于处理可能需要较长时间才能完成的任务。客户端发送一个目标给动作服务器,并且可以选择接收反馈、取消目标或者等待最终结果。
  • 动作客户端和动作服务器(Action Client/Action Server):动作客户端可以请求动作服务器执行某项任务,并根据需要获取反馈信息或结果。
  • 4.参数服务器 (Parameter Server)
  • 参数存储:节点可以存储和检索全局参数。这个服务器用于存储配置参数,可以被任何节点访问。

那么这些通信方式是如何实现的呢?

  1. 话题 (Topics)
  • 主题通信是基于发布/订阅模式实现的。当一个节点(Node)发布一个消息到某个主题时,ROS中间件会将这个消息传递给订阅了该主题的所有节点。
  • Publisher:节点通过一个发布者(Publisher)对象将消息发布到一个特定的主题。
  • Subscriber:节点通过一个订阅者(Subscriber)对象从一个特定的主题接收消息。
  • Master:ROS master提供名称解析服务,让发布者和订阅者能够找到对方。
  • roscore:在ROS中启动时首先运行的是roscore,它启动了一个Master,以及参数服务器(Parameter Server)和rosout日志节点。

底层实现是通过TCP/IP(默认)或者UDP(通过UDP ROS数据包协议,UDPROS)进行通信。当一个节点向ROS Master注册自己为某个主题的发布者或订阅者时,Master会帮助发布者和订阅者相互发现,并建立一个直接的通信链接。

  1. 服务 (Services)
  • 服务是基于请求/响应模式实现的。一个节点作为服务器提供服务,另一个节点作为客户端可以调用这个服务并等待响应。
  • Service Server:提供特定服务的节点,它注册到ROS master,等待服务请求。
  • Service Client:需要服务的节点,它会询问ROS master服务器的地址,并直接向服务器发送服务请求,并等待回应。

服务通信通常也是通过TCP/IP进行的,确保了通信的可靠性,因为服务调用通常需要得到确定的响应。

  1. 动作 (Actions)
  • 动作通信是一个更复杂的通信机制,用于处理可能需要长时间执行的任务。它在服务通信的基础上增加了中间反馈的可能性。
  • Action Server:执行长时间运行的任务,并提供中间反馈以及最终结果。
  • Action Client:发送任务请求给动作服务器,可以选择接收反馈、取消任务或等待结果。

动作通信内部实际上使用了多个主题来实现其通信模型,包括用于发送目标、接收反馈和结果的主题。

  1. 参数服务器 (Parameter Server)
  • 参数服务器是ROS中用于存储参数值的中心化服务,节点可以读写这些参数。
  • Parameter Server:作为存储全局参数的服务运行,可以在roscore启动时一起启动。
  • Nodes:各个节点可以通过ROS提供的API来获取和设置参数服务器中的参数值。

参数服务器的操作通常通过XML-RPC实现,一个简单的远程过程调用协议,运行在HTTP之上。

 点击《详解》如何在ROS中建立MQTT通信 - 古月居可查看全文

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

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

相关文章

ECharts词云图(案例一)+配置项详解

ECharts词云图(案例一)配置项详解 ECharts 是一款由百度团队开发的基于 JavaScript 的开源可视化图表库,它提供了丰富的图表类型,包括常见的折线图、柱状图、饼图等,以及一些较为特殊的图表,如词云图。从版…

5个超实用1688选品技巧!轻松出单999+

1、研究市场需求 通过市场调查和分析,了解目标市场的消费者喜好和趋势。选择具有市场需求且竞争相对较小的产品类别。 用店雷达热销商 品榜和飙升商 品榜。比如做女装类目,选择“女士T恤”我们可以根据日、周、月为时间维度下商品的销售笔数、件数、销…

【数据库】世界上使用最多的引擎SqlLite

文章目录 概述特点安装安装方式一安装方式二 命令语法编程操作打开/创建数据库创建表Insert数据SELECT操作UPDATE操作DELETE操作 来源 概述 SQLite 是一个进程内库,它实现了一个独立的、无服务器的、零配置的事务性 SQL 数据库引擎。 SQLite的代码属于公共领域&…

谷歌倾斜摄影覆盖面积究竟有多大?这里有了准确数字

自谷歌地球诞生以来,凭借着数据种类多、覆盖面积广、数据精度高、更新及时、交互体验良好的优势,很多人喜欢在上面恣意浏览,足不出户,俯瞰地球美好河山,探索自然地理奇妙景观。谷歌地球中倾斜摄影数据是继谷歌卫星影像…

RT-Thread简介及启动流程分析

阅读引言: 最近在学习RT-Thread的内部机制,觉得这个启动流程和一些底层原理还是挺重要的, 所以写下此文。 目录 1, RT-Thread简介 2,RT-Thread任务的几种状态 3, 学习资源推荐 4, 启动流程分…

MySQL商品购物数据库建表

goods表 mysql> create table if not exists goods(-> goods_id int primary key auto_increment comment 商品编号,-> goods_name varchar(32) not null comment 商品名称,-> unitprice int not null default 0 comment 单价,单位分,-> category v…

微服务开发与实战Day10 - Redis面试篇

一、Redis主从集群 1. 搭建主从集群 1.1 主从集群结构 单节点Redis的并发能力是有限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。 如图所示,集群中有一个master节点、两个slave节点(现在叫re…

思科配置:vlan、两个交换机、两个路由器、四台主机

一、如图配置 各设备ip地址、接口、vlan如图所示。 二、配置各主机ip、子网掩码、默认网关 PC0 PC8 PC1 PC9 PC2 PC10 PC3 PC11 三、配置Switch0 (期间报错为拼写错误) MySwitch0> MySwitch0>en MySwitch0#conf t Enter configuration co…

OSPF被动接口配置(华为)

#交换设备 OSPF被动接口配置 一、基本概念 OSPF被动接口,也称为抑制接口,即将路由器某一接口配置为被动接口后,该接口不会再接受和发送OSPF报文 二、使用场景 在路由器与终端相近或者直接相连的一侧配置被动接口 因为OSPF会定期发送报文…

MongoDB 多层级查询

多层级查询 注意&#xff1a;要注意代码顺序 查询层级数据代码放前面&#xff0c;查询条件放后面 if (StringUtils.isBlank(params.getDocType())) {params.setDocType(DOC_TDCTYPE);}String docName mapper.findByDocInfo(params.getDocType());List<ExpertApprovalOpin…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 任务积分优化问题(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

配置文件-基础配置,applicationproperties.yml

黑马程序员Spring Boot2 文章目录 1、属性配置2、配置文件分类3、yaml文件4、yaml数据读取4.1 读取单个数据4.2 读取全部属性数据4.3 读取引用类型属性数据 1、属性配置 SpringBoot默认配置文件application.properties&#xff0c;通过键值对配置对应属性修改配置 修改服务器端…

第二十一篇——信道:信息通道的容量有边界嘛?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 通过这篇文章&#xff0c;形象的知道了信息通道的容量边界&#xff1b;以…

学生党打工人救星,GPT一句话生成精美PPT

学生党打工人救星&#xff0c;GPT一句话生成精美PPT 介绍 在这个快节奏的现代社会&#xff0c;效率是关键。无论是工作会议、学术报告&#xff0c;还是产品展示&#xff0c;一个精美而结构合理的 PPT 都是成功的关键。然而&#xff0c;制作一个高质量的 PPT 往往需要耗费大量…

JavaEE进阶----SpringBoot快速入门

文章目录 前言一、了解Maven1.1 Maven功能- 项⽬构建- 管理依赖 1.2Maven仓库 二、第一个SpringBoot项目总结 前言 Spring Boot是一个用于构建快速、简单和可扩展的生产级应用程序的框架。它基于Spring框架&#xff0c;提供了开发微服务和独立的应用程序所需的一切。 一、了解…

【UIDynamic-动力学-UICollisionBehavior-碰撞模式-创建边界 Objective-C语言】

一、我们来说这个碰撞模式 1.把之前的代码备份一下,改个名字:“04-碰撞行为-碰撞模式”, 然后,command + R,先跑一下, 我现在,一点击,是这个红色的View、和蓝色的View、在发生碰撞, 我们说,碰撞模式是啥意思, collision里边,有一个叫做collisionMode, UICollis…

高考分数限制下,选好专业还是选好学校?

高考分数限制下&#xff0c;选好专业还是选好学校&#xff1f; 高考作为每年一度的盛大考试&#xff0c;不仅关乎学生们的未来&#xff0c;更承载了家庭的期望。2004年高考刚刚结束&#xff0c;许多考生和家长已经开始为填报志愿而焦虑。选好学校和专业&#xff0c;直接关系到…

WPF学习(4)--SCICHART学习

一、项目创建过程 1.下载SCICHART插件 2.选中第一个&#xff0c;确保引用中有我们要用的 二、示例代码 1.前端代码 <Window x:Class"SciChart.Examples.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"h…

TSP:常春藤算法IVY求解旅行商问题TSP(可以更改数据),MATLAB代码

一、旅行商问题介绍 二、常春藤算法IVY求解TSP 2.1算法介绍 常春藤算法&#xff08;Ivy algorithm&#xff0c;IVY&#xff09;是Mojtaba Ghasemi 等人于2024年提出智能优化算法。该算法模拟了常春藤植物的生长模式&#xff0c;通过协调有序的种群增长以及常春藤植物的扩散和…

AI大模型真的能让IT工程师薪资再起飞一次吗?

前言 作为传统的IT从业者&#xff0c;开发工程师&#xff0c;测试工程师&#xff0c;数据分析师们&#xff0c;面对如此飞快的技术迭代&#xff0c;是否有了深深的危机感&#xff1f;过去两三年&#xff0c;本来就身处互联网行业寒冬&#xff0c;现在又要面对AI大模型带来的挑…