ROS:计算图

news2025/4/18 16:16:25

目录

  • 一、ROS计算图简介
  • 二、节点(Node)
  • 三、节点管理器(Master)
  • 四、消息(Message)
  • 五、话题(Topic)
  • 六、服务(Service)
  • 七、动作(Action)
  • 八、消息记录包(Bag)
  • 九、参数(Parameter)
  • 十、功能包(Package)
  • 十一、功能包清单(Package manifest)
  • 十二、元功能包(Meta Package)

一、ROS计算图简介

计算图(Computation Graph)是一个由ROS进程组成的点对点网络,它们能够共同处理数据。ROS的基本计算图概念有节点(Nodes)、主节点(Master)、参数服务器(Parameter Server)、消息(Messages)、服务(Services)、话题(Topics)和袋(Bags),它们都以不同的方式向图(Graph)提供数据。
在这里插入图片描述

二、节点(Node)

节点就是执行具体任务的进程或独立运行的可执行文件,通常一个系统由多个节点组成,节点之间可以通过ROS客户端库(如roscpp 、rospy)相互通信。不同节点可使用不同编程语言,可分布式运行在不同的主机。节点在系统中的名称必须是唯一的。

三、节点管理器(Master)

节点管理器在系统中主要起到了一个中介的作用,能够帮助节点相互找到彼此。节点管理器能够为节点提供命名和注册服务,以及跟踪和记录话题/服务通信。同时节点管理器还提供了一个参数服务器(Parameter Server),节点使用此服务器存储和检索运行时的参数。

四、消息(Message)

消息本身是基于发布/订阅模型的话题通信机制而来的,具有一定的类型和数据结构,既包含ROS提供的标准数据类型,也可由用户自定义数据类型。

五、话题(Topic)

话题通信采用的是一种异步通信机制。话题通信基于发布/订阅模型,数据由发布者传输给订阅者。其中节点既可以作为发布者发布消息,也可以作为订阅者订阅消息。同一个话题的发布者和订阅者可以不唯一,另外一个节点也可以发布或订阅多个消息。一般来说,发布者和订阅者并不知道对方的存在。发布者将信息发布在一个全局的工作区内,当订阅者发现该信息是它所订阅的,就可以接收到这个信息。通常用于数据传输。

六、服务(Service)

服务通信采用的是一种同步通信机制。服务通信基于客户端/服务器模型,客户端(Client)发送请求数据(Request),服务器(Server)完成处理后返回应答数据(Response)。与话题不同的是,ROS中只允许有一个节点提供指定命名的服务。通常用于逻辑处理。

七、动作(Action)

动作是基于ROS消息机制实现的一种问答通信机制,基于客户端/服务器模型,服务器可以连续反馈数据给客户端,客户端可以在任务运行过程中中止运行。动作Action的接口主要由goal、cancel、status、feedback和result组成,客户端可以在任务启动前向服务器发布任务目标goal,也可以在任务过程中向服务器发送cancel请求取消任务。服务器向客户端反馈服务器当前的状态,或周期性反馈任务运行的监控数据,而result在任务运行过程中只发布一次,仅在服务器完成动作后反馈一个最终结果。

八、消息记录包(Bag)

消息记录包是一种用于保存和回放ROS消息数据的文件格式。它使用.bag格式保存消息、主题、服务和其他ROS数据信息,可以在事件发生后,通过使用可视化工具调用和回放数据,检查在系统中到底发生了什么。记录包文件可以像实时会话一样在ROS中再现情景,在相同时间向主题发送相同的数据。通常用于调试算法。

九、参数(Parameter)

参数服务器能够保存一部分参数作为全局共享字典,系统中的所有节点都可以通过网络访问这些共享字典,存储和检索参数的参数名或参数值,而字典中的数据类型包含了int整型、float浮点型、string字符串等。参数的存储和检索采用的通信机制是更为底层的RPC,而不再是话题或服务。它更适合存储静态、非二进制的配置参数,不适合存储动态配置的数据。

十、功能包(Package)

功能包是ROS软件中的基本单元,包含节点源码、配置文件、数据定义等。

十一、功能包清单(Package manifest)

功能包清单记录了功能包的基本信息,包含作者信息、许可信息、依赖选项、编译标志等。

十二、元功能包(Meta Package)

元功能包是一种特殊的功能包,它只包含元功能包清单文件。它的作用是将多个具有相同功能的功能包整合成一个逻辑上独立的功能包,类似于功能包集合。
在这里插入图片描述

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

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

相关文章

LabVIEW开发燃油阀自动性能测试系统

LabVIEW开发燃油阀自动性能测试系统 燃油阀是航空燃油控制系统的核心部件。燃油阀的流量滞后直接影响控制精度、稳定性和可靠性,而燃油阀生产的性能测试是至关重要的步骤。但是,由于流动滞后是非线性的,因此很难控制和进行实时测试。随着厂家…

CSS3-浮动

(了解)标准流:又称文档流,是浏览器在渲染显示网页内容时默认采用的一套排版规则,规定了应该以何种方式排列元素 常见标准流排版规则: 1. 块级元素:从上往下,垂直布局&am…

Matplotlib---柱形图

1. 绘制简单的柱状图 bar函数用于绘制柱状图。下面是bar函数的语法格式: bar(x, height, width0.8, bottomNone, aligncenter, dataNone, **kwargs)参数解释: x:指定每个柱子的x轴坐标。height:指定每个柱子的高度。width&…

TypeScript ~ 掌握基本类型 ②

作者 : SYFStrive 博客首页 : HomePage 📜: TypeScript ~ TS 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &…

vue的学习

title: VUE 一、Vue简介 1.1 简介 ::: tip Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式的js框架,发布于 2014 年 2 月。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0…

F. Gardening Friends(树的直径)

Problem - 1822F - Codeforces 两位朋友Alisa和Yuki在他们的花园里种了一棵有n个顶点的树。树是一个无向图,没有循环、回路或多重边。这棵树中的每条边都有一个长度为k。最初,顶点1是树的根。 Alisa和Yuki种植这棵树不仅仅是为了好玩,而是想…

基于SpringBoot的流浪动物救助平台

1.引言 系统管理也都将通过计算机进行整体智能化操作,对于流浪动物救助平台所牵扯的管理及数据保存都是非常多的,例如首页、个人中心、会员管理、志愿者管理、流浪动物信息管理、领养信息管理、取消领养信息管理、志愿团队活动管理、志愿者申请表管理、…

【性能设计篇】数据库拓展

前两篇文章介绍了分布式存储的机制,为保证数据的高性能以及可拓展,采用分片/分区机制。为保证数据的高可用性,采用复制/镜像机制存储数据。一份数据存储多份。而这两种方式在数据中,就是分片/分区机制。分库分表/读写分离。 读写…

掌握这个关键技术,让你的APP开发事半功倍!——Flutter与其他方案的区别

Flutter动机是什么,解决啥痛点?优势在哪里? 介绍Flutter的历史背景和运行机制,并以界面渲染过程为例与你讲述其实现原理。 1 Flutter的历史背景 为不同的操作系统开发拥有相同功能的应用程序,开发人员只有两个选择&…

gitTortoise图形化工具下载步骤

一,简介 本文主要介绍如何下载安装gitTortoise图形化工具来管理和提交代码。 二,步骤介绍 2.1 安装包下载 下载地址:https://download.tortoisegit.org/tgit/ 打开后,界面如下: 点击选择最新的稳定release版本&am…

二分查找算法及实现

概念 二分查找算法也成为折半查找,是一种非常高效的工作于有序数组的查找算法. 实现 需求 现有一个有序数组 arr [1,2,3,4,5,6,7,8,9], 目标值target 2 ,要求返回目标值target在数组arr中的索引,没有则返回-1; 代码实现 private int binarySearch(int[] arr, int target)…

Android加快你的编译速度

工欲善其事,必先利其器。如果每次运行项目都要花费5-10分钟,那人的心态都要崩了。 Gradle构建流程 Gradle 的生命周期可以分为大的三个部分:初始化阶段(Initialization Phase),配置阶段(Configuration Pha…

Linux学习之网络管理和配置文件

在CentOS 7中有两种网络配置方法:SysV(也称为Sys 5)和Systemd。 SysV的命令如下: service network start|stop|restart|status chkconfig --list network Systemd的命令如下: systemctl list-unit-files NetworkManage…

Linux->线程同步

目录 前言: 1 线程同步引入 2 条件变量 2.1 线程饥饿 2.2 条件变量接口 2.3 添加条件变量 3 生产者和消费者模型 前言: 本篇主要讲解了关于线程同步的相关知识,还有生产者和消费者模型的认识和使用。 1 线程同步引入 在讲解线程同步之…

【Unity3D】基于深度和法线纹理的边缘检测方法

1 前言 边缘检测特效中使用屏后处理技术,通过卷积运算计算梯度,检测每个像素周围像素的亮度差异,以识别是否是边缘像素;选中物体描边特效中也使用了屏后处理技术,通过 CommandBuffer 获取目标物体渲染后的模板纹理&…

学习spring: 1.引子

问题 我们来看一段代码: package org.malred;import org.malred.entity.Car; import org.malred.entity.Tire;/*** Hello world!**/ public class App {public static void main(String[] args) {Car car new Car();Tire lt new Tire();car.setLeftTire(lt);Tire rt new T…

状态估计器

文章目录 [toc] 1.状态空间模型1.1.连续状态空间模型1.2.离散状态空间模型 2.矩阵微积分3.二次规划4.概率论4.1.期望与方差4.2.独立事件4.3.向量随机变量4.4.噪声与协方差矩阵4.5.条件概率 5.最小二乘估计5.1.加权最小二乘估计5.2.递推最小二乘估计5.3.状态向量和协方差随时间变…

深入理解WebSocket,让你入门音视频

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊 座右铭:不想…

Android 使用okhttp监控网络数据

这里使用Okhttp写了一个demo来监听网络请求过程中的一系列数据,包括当前网络类型、请求体、响应体大小,url,请求方式,当然还有本次核心获取域名解析时长,建立连接时长,保持连接时长,请求总时长这…

《C++ Primer》--学习6

IO库 IO类 为了支持使用宽字符的语言,标准库定义了一组类型和对象来操纵 wchar_t 类型的数据。宽字符版本的类型和函数的名字以一个 w 开始。wcin wcout 和 wcerr 是分别对应 cin cout 和 cerr 的宽字符版本对象 IO类型之间的关系 类型 ifstream 和 istringstream…