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

ROS学习笔记(4):ROS架构和通讯机制

前提

前4篇文章以及帮助大家快速入门ROS了,而从第5篇开始我们会更加注重知识积累。同时我强烈建议配合B站大学的视频一起服用。

1.ROS架构三层次:

1.基于Linux系统的OS层;

2.实现ROS核心通信机制以及众多机器人开发库的中间层;

3.在ROS Master的管理下保证功能节点正常运行的应用层。

2.ROS关键概念

1.节点(Node)

·节点:执行运算任务的进程,一个系统由多个节点组成,被称为“软件模块”。

ROS的节点关系:

2. 消息(Message)

·消息通信:节点间最重要的通信机制(基于发布/订阅模型)。

·消息是以发布/订阅(Publish/Subscribe)的方式传递。

3.话题(Topic)

·发布者(Talker):针对给定话题发布消息的节点。

·订阅者(Listener):关注话题并订阅特定类型数据的节点。

·订阅者与发布者互相不知道存在

ROS基于发布/订阅模型的话题通信:

4.服务 (Service)

·服务:同步传输模式(基于话题的客户端/服务器(Client/Server)模型),包含用于请求的通信数据类型和用于应答的通信数据类型。

·ROS只允许一个节点提供指定命名的服务

5.ROS节点管理器(ROS Master)

·ROS节点管理器:顾名思义,节点的控制器,保证节点有序的执行

·ROS节点管理器通过远程过程调用(RPC)提供登记列表和对其他计算图表的查找功能,帮助ROS节点之间相互查找、建立连接,同时还为系统提供参数服务器,管理全局参数。

3.文件系统

1.功能包(Package)

2.功能包清单(Package Manifest)

3.元功能包(Meta Package)

4.消息

5.服务

6.代码(Code)

1.功能包

·功能包:ROS软件的基本单元,包含ROS节点、库、配置文件等。

功能包文件结构:

·config:放置功能包中的配置文件。

·include:放置功能包中需要用到的头文件。

·scripts:放置可以直接运行的python文件。

·src:放置需要编译的C++文件。

·launch:放置功能包的启动文件。

·msg:放置功能包自定义的消息类型。

·srv:放置功能包自定义的服务类型。

·action:放置功能包自定义的动作指令。

·CMakeLists.txt:编译器编译功能包的规则。

·package.xml:功能包清单:记录功能包基本信息,作者信 息、许可信息、依赖选项、编译标志等。

<build_depend>depeng</build_depend>标签:功能包中代码编译时的依赖

<run_depend>depend</run_depend>标签:功能包中可执行程序运行时的依赖

ROS功能包常用命令:

ROS命令_ros复制到llib中-CSDN博客

命令作用
catkin_create_pkg <包名> [依赖]创建功能包
rospack获取功能包的信息
catkin_make编译工作空间
rosdep自动安装功能包依赖的其他包
roscd功能包目录跳转
roscp拷贝功能包中的文件

rosed

编辑功能包中的文件
rosrun运行功能包中的可执行文件
roslaunch运行启动文件

2.元功能包

·元功能包:一种特殊的功能包,只包含package.xml元功能包清单文件。

·作用:将多个功能包整合成为逻辑独立的功能包。

·元功能包的package.xml文件需要包含引用

<export>

        <metapackage/>

</export>

·元功能包只需要<run_depend>标签

ROS通信机制

·话题通信机制

·服务通信机制

·参数管理机制

1.话题通信机制

发布/订阅模型的话题通信:

 通信建立的过程:

【RPC】RPC基本介绍_牧心.的博客-CSDN博客

1.发布者注册

Talker启动,通过端口1234使用RPC向ROS Master注册发布者的信息(例如发布消息的话题名),然后将节点的注册信息加入注册列表。

2.订阅者注册

Listener启动,通过RPC向ROS Master注册订阅者消息(例如订阅的话题名)。

3.信息匹配

ROS Master根据Listener的订阅信息在注册列表中查找,没有找到匹配的发布者就等待发布者出现,匹配到了就通过RPC向订阅者发送发布者的RPC地址信息。

4.订阅者发送连接请求

订阅者接收到ROS Master发送的地址信息后,通过RPC向发布者发送连接请求,传输订阅的话题名、消息类型以及通信协议(TCP/UDP)。

5.发布者确认连接请求

【精选】TCP协议详解 (史上最全)_开放式tcp-CSDN博客

发布者接收到订阅者发送的连接请求后,通过RPC向订阅者确认连接(自身的TCP地址信息)。

6.订阅者与发布者建立网络连接

订阅者接到确认请求后,使用TCP与Talker建立网络连接。

7.发布者向订阅者发布数据

建立连接后,发布者向订阅者发送话题消息数据。

2.服务通信机制

·服务是带应答的通信机制

服务器/客户端的服务通信机制:

 通信建立的过程:

1.发布者注册 

Talker启动,通过端口1234使用RPC向ROS Master注册发布者的信息(例如发布消息的话题名),然后将节点的注册信息加入注册列表。

2.订阅者注册

Listener启动,通过RPC向ROS Master注册订阅者消息(例如订阅的话题名)。

3.信息匹配

ROS Master根据Listener的订阅信息在注册列表中查找,没有找到匹配的服务发布者就等待发布者出现,匹配到了就通过RPC向订阅者发送发布者的TCP地址信息。

4.订阅者与发布者建立网络连接

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

5.发布者向订阅者发布服务应答数据 

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

3.参数管理机制

参数管理机制:

1.发布者设置变量 

Talker使用RPC向ROS Master发送参数设置数据(参数名和参数值);ROS Master数据保存到参数列表。

2.订阅者查询参数值

Listener通过RPC向ROS Master发送参数查找请求(要查找的参数名)。

3.ROS Master向订阅者发送参数值

ROS Master根据Listener的请求从参数列表中查找参数,找到,用RPC将参数值发送给Listener。

注释:发布者更新参数,订阅者需要重新查询

4.话题和服务的区别

相关文章:

ROS学习笔记(4):ROS架构和通讯机制

前提 前4篇文章以及帮助大家快速入门ROS了&#xff0c;而从第5篇开始我们会更加注重知识积累。同时我强烈建议配合B站大学的视频一起服用。 1.ROS架构三层次&#xff1a; 1.基于Linux系统的OS层&#xff1b; 2.实现ROS核心通信机制以及众多机器人开发库的中间层&#xff1b…...

深度新闻稿件怎么写?新闻稿怎么写得有深度?

深度新闻稿件&#xff0c;顾名思义&#xff0c;是对新闻事件进行深入挖掘和分析的稿件。它不仅仅是对事件的简单报道&#xff0c;更注重对事件背后的社会现象、原因、影响等方面进行深度剖析&#xff0c;从而使读者能够全面、深入地了解事件。这种稿件要求作者具备较高的新闻敏…...

百度智能云千帆大模型平台黑客马拉松报名开启!

比赛简介 创造是生成式 AI 的核心。无论是智能导购带来的线上购物体验升级&#xff0c;还是主图生成带来的素材生产效率提升&#xff0c;又或是游戏场景的快速设置、智能 NPC 的全新交互、数字广告的精准推荐和个性化定制&#xff0c;亦或者是为学生提供更符合真实的口语练习环…...

数据库 | 看这一篇就够了!最全MySQL数据库知识框架!

大家好&#xff01; 作为一名程序员&#xff0c;每天和各种各样的“数据库”打交道&#xff0c;已经成为我们的日常。当然&#xff0c;立志成为一名超级架构师的我&#xff0c;肯定要精通这项技能。咳咳&#xff01;不过饭还是要一口一口吃的&#xff0c;“数据库”这个内容实在…...

Android 控件背景实现发光效果

主要实现的那种光晕效果&#xff1a;中间亮&#xff0c;四周逐渐变淡的。 这边有三种发光效果&#xff0c;先上效果图。 第一种、圆形发光体 实现代码&#xff1a;新建shape_light.xml&#xff0c;导入以下代码。使用时&#xff0c;直接给view设置为background。 <?xml …...

安全狗亮相厦门市工信领域数据安全宣贯培训会

10月31日&#xff0c;厦门市工业和信息化局&#xff08;市大数据管理局&#xff09;顺利举办厦门市工信领域数据安全宣贯培训。 作为国内云原生安全领导厂商&#xff0c;安全狗以厦门市工业领域数据安全管理支撑单位身份受邀出席此次会议。 据悉&#xff0c;此次活动旨在贯彻…...

最长回文子串

问题 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同&#xff0c;则该字符串称为回文字符串。 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&#xff1a;"bab" 解释&#xff1a;"aba" 同…...

从瀑布模式到水母模式:ChatGPT引领软件研发的革新之路

ChatGPT引领软件研发的革新之路 概述操作建议本书优势 内容简介作者简介专家推荐读者对象目录直播预告写在末尾&#xff1a; 主页传送门&#xff1a;&#x1f4c0; 传送 概述 计算机技术的发展和互联网的普及&#xff0c;使信息处理和传输变得更加高效&#xff0c;极大地改变了…...

一种使用wireshark快速分析抓包文件amr音频流的思路方法

解决方案&#xff1a; 1. 使用wireshark过滤amr,并导出原始数据文件&#xff1b; 2.使用ue的二进制编辑模式&#xff0c;编辑该文件&#xff0c;添加amr头&#xff0c;6个字节数据“#!AMR”&#xff0c;字节数据为 23 21 41 4D 52 0A 3.修正格式&#xff1a;通过抓包发现&#…...

银河麒麟x86版、银河麒麟arm版操作系统编译zlmediakit

脚本 # 安装依赖 gcc-c.x86_64 这个不加的话会有问题 sudo yum -y install gcc gcc-c libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg git openssl-devel gcc-c.x86_64mkdir -p /home/zenglg cd /home/zenglg git clone --depth 1 https://gitee.com/xia-chu…...

InnoDB - 双写机制

双写机制用于提高数据持久性和可靠性。 双写机制的核心思想是&#xff0c;将写操作先写入一个临时缓冲区&#xff0c;然后再写入实际的数据文件。这个临时缓冲区通常是固定大小的内存缓冲区&#xff0c;称为双写缓冲。这个机制的主要目的是避免数据文件在写入时出现损坏或数据…...

【蓝桥杯选拔赛真题08】C++最大值最小值平均值 青少年组蓝桥杯C++选拔赛真题 STEMA比赛真题解析

目录 C/C++最大值最小值平均值 一、题目要求 1、编程实现 2、输入输出 二、算法分析</...

软考高级系统架构设计师系列之:系统开发基础知识、项目管理、信息安全和网络安全、计算机网络章节选择题详解

软考高级系统架构设计师系列之:系统开发基础知识、项目管理、信息安全和网络安全、计算机网络章节选择题详解 一、产品配置二、需求管理三、需求跟踪四、软件生命周期五、RUP六、耦合与内聚七、软件文档八、软件需求九、软件活动十、项目时间管理十一、需求管理十二、项目范围…...

0基础学习PyFlink——时间滑动窗口(Sliding Time Windows)

在《0基础学习PyFlink——时间滚动窗口(Tumbling Time Windows)》我们介绍了不会有重复数据的时间滚动窗口。本节我们将介绍存在重复计算数据的时间滑动窗口。 关于滑动窗口&#xff0c;可以先看下《0基础学习PyFlink——个数滑动窗口&#xff08;Sliding Count Windows&#x…...

API安全之《大话:API的前世今生》

写在前面&#xff1a;本文结合API使用的业界现状&#xff0c;系统性地阐述API的基本概念、发展历史、表现形式等基础内容&#xff0c;主要包含以下内容&#xff1a; 1.什么是API 2.API的发展历史 3.现代API常用消息格式 4.top N 互联网企业API 使用现状 当前的世界是一个信…...

H5或者Vue实现二维码识别

前言 1、扫码识别库采用开源的zxing/library 2、支持js&#xff0c;Vue&#xff0c;lit等实现 原文章地址和代码仓库地址 1、在界面创建video标签用来显示摄像头内容 <!-- 视区 --><!-- lit写法 --> <video ${ref(this.videoRef)} class"xy-scan-wrap…...

stm32整理(三)ADC

1 ADC简介 1.1 ADC 简介 12 位 ADC 是逐次趋近型模数转换器。它具有多达 19 个复用通道&#xff0c;可测量来自 16 个外部 源、两个内部源和 VBAT 通道的信号。这些通道的 A/D 转换可在单次、连续、扫描或不连续 采样模式下进行。ADC 的结果存储在一个左对齐或右对齐的 16 位…...

Redis-持久化+主从架构

文章目录 Redis的持久化RDB模式异步持久化的实现AOF模式总结 Redis的主从架构1.端口以及文件调试测试2.主从配置3.数据同步原理&#xff08;第一次同步为全局同步&#xff09;4.增量同步5.主从配置优化6.问:master主机怎么判断从机slave是不是第一次同步数据&#xff1f; Redis…...

STM32H750之FreeRTOS学习--------(四)中断管理

四、FreeRTOS中断管理 中断的概念不再过多叙述&#xff0c;学习过逻辑的都知道 中断的执行过程 中断请求 外设产生中断请求&#xff08;GPIO外部中断、定时器中断等&#xff09;响应中断 CPU停止执行当前程序&#xff0c;转而去执行中断处理程序&#xff08;ISR&#xff09;…...

Macroscope安全漏洞检测工具简介

学习目标&#xff1a; 本介绍旨在帮助感兴趣者尽快了解 Macroscope&#xff0c;这是一款用于安全测试自动化和漏洞管理的企业工具。 全覆盖应用程序安全测试&#xff1a; 如下图所示&#xff0c;如果使用多种互补工具&#xff08;SAST/DAST/SCA 等&#xff09;来检测应用程序…...

如何轻松获取网页媒体资源?猫抓开源工具让资源提取效率提升3倍

如何轻松获取网页媒体资源&#xff1f;猫抓开源工具让资源提取效率提升3倍 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾在浏览网页时遇…...

电散热器为何能适配多场景采暖?

一、设备概述&#xff1a;3kW 220V电散热器的核心定位3kW 220V电散热器是一款功率适中、电压适配家用及小型商用场景的便捷采暖设备&#xff0c;凭借无需复杂管道铺设、即开即热的优势&#xff0c;成为现代采暖的热门选择。其额定功率3kW、额定电压220V&#xff0c;适配家庭、办…...

FastAPI 2.0 + LLM流式输出全栈方案,含OpenAI兼容层、前端SSE重连策略、服务端背压控制(仅限内部技术白皮书级实录)

第一章&#xff1a;FastAPI 2.0 异步 AI 流式响应教程概览FastAPI 2.0 原生强化了对异步流式响应&#xff08;StreamingResponse&#xff09;的支持&#xff0c;为构建低延迟、高吞吐的 AI 接口&#xff08;如大语言模型推理、语音合成、实时图像生成&#xff09;提供了坚实基础…...

嵌入式STM32开发者的Gitee协作指南:如何用.gitignore管好你的Hex和工程文件

嵌入式STM32开发者的Gitee协作指南&#xff1a;如何用.gitignore管好你的Hex和工程文件 在嵌入式开发领域&#xff0c;STM32系列微控制器的项目开发往往伴随着大量中间文件的生成——从Keil MDK编译产生的.hex、.axf&#xff0c;到STM32CubeIDE自动创建的Debug文件夹&#xff0…...

社媒爆款流水线:手把手教你用Runway Gen-4.5的A/B测试功能,批量生产TikTok热门视频

社媒爆款流水线&#xff1a;用Runway Gen-4.5打造数据驱动的短视频生产引擎 在短视频内容爆炸式增长的今天&#xff0c;一个残酷的现实是&#xff1a;99%的内容在发布后的24小时内就会沉入算法深渊。那些能突破重围的爆款视频&#xff0c;往往不是偶然灵感的产物&#xff0c;而…...

基于西门子PLC的空压机组储气风冷机组自动控制系统:“手动自动切换、多机控制及实时监测报警系统

基于西门子plc的空压机组储气风冷机组自动控制系统 可以实现手动自动切换 三组空压机分别自动控制&#xff0c;自动检测三路压力 风冷机运行实时检测 报警查寻&#xff0c;参数设置等上周刚把车间那套跑了快十年的空压机组控制系统给换了&#xff0c;用的是西门子S7-1200&#…...

告别‘千人千脑’:用DMMR模型搞定EEG情感识别的跨被试难题(附PyTorch代码)

突破脑电情感识别的个体差异壁垒&#xff1a;DMMR模型实战指南与PyTorch实现 当你在实验室里看着屏幕上跳动的脑电波形时&#xff0c;是否曾为不同受试者数据间的巨大差异而头疼&#xff1f;这种被称为"脑电指纹"的个体特异性&#xff0c;一直是情感识别领域最棘手的…...

量子计算入门捷径:在快马平台用qorder实现第一个纠缠态实验

量子计算听起来很高深&#xff0c;但有了合适的工具和平台&#xff0c;入门其实比想象中简单。最近我在InsCode(快马)平台上尝试用qorder框架做了第一个量子纠缠实验&#xff0c;发现整个过程就像搭积木一样直观。下面分享我的学习笔记&#xff0c;希望能帮到同样想入门的朋友。…...

小白也能玩转AI翻译:translategemma图文翻译快速入门指南

小白也能玩转AI翻译&#xff1a;translategemma图文翻译快速入门指南 1. 认识translategemma&#xff1a;你的私人翻译助手 translategemma-12b-it是Google基于Gemma 3模型开发的开源翻译模型&#xff0c;它能同时处理文本和图片中的文字翻译。想象一下&#xff0c;你正在国外…...

实战派指南:用MaPLe思路优化你的CLIP下游任务,附关键配置与避坑建议

实战派指南&#xff1a;用MaPLe思路优化你的CLIP下游任务&#xff0c;附关键配置与避坑建议 当CLIP遇上业务场景&#xff0c;90%的开发者都会遇到相同的问题&#xff1a;模型在新类别上的表现总是不尽如人意。上周团队用默认参数跑跨模态检索任务时&#xff0c;基类准确率82%的…...