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

ROS话题通信机制理论模型的学习

        话题通信是ROS(Robot Operating System,机器人操作系统)中使用频率最高的一种通信模式,其实现模型主要基于发布/订阅模式。

一、基本概念

话题通信模型中涉及三个主要角色:

  1. ROS Master(管理者):负责保管发布者(Talker)和订阅者(Listener)注册的信息,并匹配话题相同的Talker与Listener,帮助它们建立连接。
  2. Talker(发布者):负责发布消息到特定的话题上。
  3. Listener(订阅者):负责订阅特定话题上的消息,并处理这些消息。

二、实现流程

话题通信的实现流程通常包括以下几个步骤:

  1. Talker注册:Talker启动后,会通过RPC(远程过程调用)地址在ROS Master中注册自身信息,包含所发布消息的话题名称。ROS Master会将节点的注册信息加入到注册表中。
  2. Listener注册:Listener启动后,也会通过RPC在ROS Master中注册自身信息,包含需要订阅消息的话题名。ROS Master同样会将节点的注册信息加入到注册表中。
  3. 信息匹配:ROS Master会根据注册表中的信息匹配Talker和Listener。如果Talker和Listener的话题一致,ROS Master就会向Listener发送Talker的RPC地址信息。
  4. 连接请求:Listener根据接收到的RPC地址,通过RPC向Talker发送连接请求,进行远程访问,传输订阅的话题名称、消息类型以及通信协议(如TCP/UDP)。
  5. 确认连接:Talker接收到Listener的请求后,通过RPC向Listener确认连接信息,并发送自身的TCP地址信息。
  6. 建立连接:Listener根据Talker返回的消息使用TCP与Talker建立网络连接。
  7. 发布消息:连接建立后,Talker开始向Listener发布消息。

注意:

  • 上述实现流程中,前五步使用的 RPC协议,最后两步使用的是 TCP 协议
  • Talker 与 Listener 的启动无先后顺序要求
  • Talker 与 Listener 都可以有多个
  • Talker 与 Listener 连接建立后,不再需要 ROS Master。也即,即便关闭ROS Master,Talker 与 Listern 照常通信。

问题:为什么前五步使用的 RPC协议,最后两步使用的是 TCP 协议?

        这种通信方式结合了RPC和TCP两种协议的优势。RPC协议用于在ROS Master中注册节点、匹配节点以及发送连接信息等操作,它简化了远程过程调用的复杂性。而TCP协议则用于实际的数据传输,它提供了可靠的、面向连接的通信服务,确保数据能够按顺序、无差错地传输到接收方。


三、关键特性

  1. 解耦合:发布者和订阅者之间不需要直接通信,它们通过ROS Master进行信息匹配和连接建立,实现了节点间的解耦合。
  2. 异步通信:话题通信是一种异步通信机制,发布者可以随时发布消息,订阅者也可以随时订阅并处理消息。
  3. 多对多关系:同一话题下可以存在多个发布者和多个订阅者,这意味着数据会出现交叉传输的情况。如果没有订阅者,数据传输可能会出现丢失的情况。

四、应用场景

        话题通信适用于不断更新的、少逻辑处理的数据传输场景。例如,在机器人导航功能中,激光雷达会实时采集环境信息并发布到特定话题上,导航模块则订阅该话题并解析雷达数据以生成运动控制信息。类似地,摄像头、GPS等传感器数据的采集也都使用了话题通信。

        综上所述,话题通信实现模型通过ROS Master、发布者和订阅者三个角色的协同工作,实现了节点间的异步通信和数据传输。这种通信模式具有解耦合、异步通信和多对多关系等关键特性,适用于不断更新的数据传输相关的应用场景。


http://www.kler.cn/a/383412.html

相关文章:

  • uniapp中使用原生ajax上传文件并携带其他数据,实时展示上传进度
  • 思源笔记轻松连接本地Ollama大语言模型,开启AI写作新体验!
  • Webserver(4.8)UDP、广播、组播
  • 卖模版还能赚到钱吗?
  • GPT原理;ChatGPT 等类似的问答系统工作流程如下;当用户向 ChatGPT 输入一个问题后:举例说明;ChatGPT不是通过索引搜索的传统知识库
  • Github 2024-11-07 Go开源项目日报 Top10
  • 应用插件化及其进程关系梳理
  • 数据揭秘:掌握K-means聚类算法的精髓与实践
  • threejs 数字孪生,制作3d炫酷网页
  • 关于Excel的操作,数据转换
  • 大数据算法:一、损失函数
  • JVM垃圾回收详解
  • day-81 打家劫舍 II
  • Linux篇(文件管理命令)
  • 泷羽sec学习打卡-shodan扫描1
  • 【短视频矩阵系统开发指南与源码构建技术分享】
  • Django命令行操作用户(manage.py工具)
  • Golang--面向对象
  • 智能指针std::shared_ptr
  • 音频怎么转换成二维码?扫码播放音频的制作方法
  • 《XGBoost算法的原理推导》12-7损失函数经验损失项二阶泰勒展开式 公式解析
  • 归并排序:高效算法的深度解析
  • 大模型LLama3!!!Ollama下载、部署和应用(保姆级详细教程)
  • K8s小白入门
  • 【C++笔记】模版的特化及其编译分离
  • 6.qsqlquerymodel源码分析