ROS 计算图级 小结

ROS 会创建一个连接到所有进程的网络。在系统中的任何节点都可以访问此网络,并通过该网络与其他节点交互,获取其他节点发布的信息,并将自身数据发布到网络上。

在这一层级中最基本的概念包括节点节点管理器参数服务器消息服务主题消息记录包,这些概念都以不同的方式向计算图级提供数据:

节点(Node) 节点是主要的计算执行进程。如果想要有一个可以与其他节点进行交互的进程,需要创建一个节点,并将此节点连接到 ROS 网络。通常情况下,系统包含能够实现不同功能的多个节点。最好让每一个节点都具有特定的单一的功能,而不是在系统中创建一个包罗万象的大节点。

节点都是各自独立的可执行文件,能够通过主题、服务或参数服务器与其他进程(节点)通信。ROS 通过使用节点将代码和功能解耦,提高了系统容错能力和可维护性,使系统简化同时,节点允许了 ROS系统能够布置在任意多个机器上并同时运行。

节点在系统中必须有唯一的名称。节点使用特定名称与其他节点进行通信而不产生歧义。节点可以使用不同的库进行编写,如 roscpp和rospy。

ROS 提供了处理节点的工具,如 rosnode。rosnode 是一个用于显示节点信息的命令行工具,例如,列出当前正在运行的节点等。支持的命令如下所示:

rosnode info node  输出当前节点信息。

rosnode kill node   结束当前运行节点进程或发送给定信号。

rosnode list       列出当前活动节点。

rosnode machine hostname 列出某一特定计算机上运行的节点或列出主机名称

rosnode ping node 测试节点间的连通性。

rosnode cleanup 将无法访问节点的注册信息清除。

节点管理器(Master) 节点管理器用于节点的名称注册和查找等。如果在整个ROS 系统中没有节点管理器,就不会有节点、服务、消息之间的通信。需要注意的是,由于ROS本身就是一个分布式网络系统,可以在某一台计算机上运行节点管理器,在其他计算机上运行由该管理器管理的节点。

参数服务器(Parameter Server) 参数服务器能够使数据通过关键词存储在一个系统的核心位置。通过使用参数,就能够在运行时配置节点或改变节点的工作任务。

消息(Message) 节点通过消息完成彼此的沟通。消息包含一个节点发送到其他节点的数据信息。ROS 中包含很多种标准类型的消息,同时你也可以基于标准消息开发自定义类型的消息。

一个节点通过向特定主题发布消息,从而将数据发送到另一个节点。消息具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型。

消息的类型在ROS 中按照以下标准命名方式进行约定:功能包名称 / .msg 文件名称,

例如,std_msgs/msg/String.msg的消息类型是std_msgs/String。

ROS使用命令行工具rosmsg 来获取有关消息的信息。惯用参数如下所示:

rosmsg show       显示一条消息的字段。

rosmsg list         列出所有消息。

rosmsg package     列出功能包的所有消息。

rosmsg packages    列出所有具有该消息的功能包

rosmsg users       搜索使用该消息类型的代码文件。

rosmsg md5        显示一条消息的MD5求和结果。

主题(Topic) 主题是由 ROS 网络对消息进行路由和消息管理的数据总线。每一条消息都要发布到相应的主题。当一个节点发送数据时,我们就说该节点正在向主题发布消息。

节点可以通过订阅某个主题,接收来自其他节点的消息。一个节点可以订阅一个主题,而并不需要该节点同时发布该主题。这就保证了消息的发布者和订阅者之间相互解耦,完全无需知晓对方的存在。主题的名称必须是独一无二的,否则在同名主题之间的消息路由就会发生错误。

主题是节点间用来传输数据的总线。主题是ROS中的一种多对多的通信机制,通过主题进行消息路由不需要节点之间直接连接这就意味着发布者和订阅者之间不需要知道彼此是否存在。同一个主题也可以有很多个订阅者。

每个主题都是强类型的,发布到主题上的消息必须与主题的 ROS 消息类型相匹配,并且节点只能接收类型匹配的消息。一个节点要想订阅一个主题,它们就必须具有相同的消息类型

ROS 的主题可以使用TCP/IP UDP 传输

基于TCP 传输称为TCPROS它使用TCP/IP长连接。这是ROS默认的传输方式。

基于UDP传输称为UDPROS,它是一种低延迟高效率的传输方式,但可能产生数据丢失。所以它最适合于远程操控任务。

ROS 有一个 rostopic 工具用于主题操作。它是一个命令行工具,允许获取主题的相关信息或直接在网络上发布数据。此工具的参数如下:

rostopic bw  /topic     显示主题所使用的带宽

rostopic echo  /topic    将消息输出到屏幕。

rostopic find message_type 按照类型查找主题

rostopic hz  /topic      显示主题的发布率

rostopic info  /topic      输出活动主题、发布的主题、主题订阅者和服务的信息。

rostopic list              输出活动主题的列表。

rostopic pub /topic type args    将数据发布到主题。允许直接从命令行中对任意主题创建和发布数据。

rostopic type /topic        输出主题的类型,或者说主题中发布的消息类型。

服务(Service) 在发布主题时,正在发送的数据能够以多对多的方式交互。但当需要从某个节点获得一个请求或应答时,就不能通过主题来实现了。在这种情况下,服务能够允许我们直接与某个节点进行交互。

此外,服务必须有一个唯一的名称。当一个节点提供某个服务时,所有的节点都可以通过使用 ROS 客户端库所编写的代码与它通信。

消息记录包(Bag) 消息记录包是一种用于保存和回放 ROS 消息数据的文件格式。

消息记录包是一种用于存储数据的重要机制。它能够获取并记录各种难以收集的传感器数据。可以通过消息记录包反复获取实验数据,进行必要的开发和算法测试在使用复杂机器人进行实验工作时,需要经常使用消息记录包。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙开发会是前端程序员的下一个春天吗?

前言 最近前端的大环境不太行,之前身处在前端的自己薪资也越来越无望了,隐隐约约感觉前端做不下去了,2024前端找不到工作要转行吗? 看新闻的过程中,**发现越来越多的巨头公司融入鸿蒙生态建设,鸿蒙“朋友…

Flink Checkpoint 超时问题和解决办法

第一种、计算量大,CPU密集性,导致TM内线程一直在processElement,而没有时间做CP【过滤掉部分数据;增大并行度】 代表性作业为算法指标-用户偏好的计算,需要对用户在商城的曝光、点击、订单、出价、上下滑等所有事件进…

Soul App深化社交元宇宙生态治理,与用户共建清朗网络家园

近日,新型开放式社交平台Soul App发布了《2023年第二季度Soul生态安全报告》,展现了其在深化社交元宇宙生态治理方面的创新成果。报告显示,第二季度,Soul围绕反诈、引导社交礼仪规范、未成年保护、用户共治众裁、防治网暴骚扰等方面开展用户安全生态专项治理,通过一系列创新举措…

MATLAB字符串编辑常用代码

1.字符串赋值 % 字符串赋值 sabcdefg 2.字符串属性和操作 (1)获取字符串长度 sabcdefg;% 字符串赋值 length(a) % 获取字符串长度 (2)连接字符串 % 连接两个字符串,每个字符串最右边的空格被裁切 s1a s2b s3strcat(s1,s2) 3.字符串比较 % strcmp 比较两个字符串是…

Linux--基础开发工具篇(1)(yum)

1.Linux 软件包管理器 yum 1.1yum是什么?什么是软件包? yum是什么? yum是一个软件下载安装管理的一个客户端,就如小米应用商店,华为应用商城。 Linux中软件包可能有依赖关系--yum会帮助我们解决依赖关系的问题。 什么是…

acrobat调整pdf的页码和实际页码保持一致

Acrobat版本 具体操作 现在拿到pdf的结构如下: pdf页码实际页码1-10页无页码数11页第1页 操作,选择pdf第10页,右键点击 具体设置 最终效果

MySQL 多表查询

文章目录 多表关系一对多多对多一对一 查询合并查询(笛卡尔积,会展示所有组合结果):内连接查询外连接查询自连接查询联合查询 union, union all子查询单行子查询列子查询行子查询表子查询 :::success 多表查询,也称为…

Linux/Academy

Enumeration nmap 首先扫描目标端口对外开放情况 nmap -p- 10.10.10.215 -T4 发现对外开放了22,80,33060三个端口,端口详细信息如下 结果显示80端口运行着http,且给出了域名academy.htb,现将ip与域名写到/et/hosts中,然后从ht…

负载均衡-Ribbon-自定义负载均衡算法

1.Ribbon 是什么 SpringCloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端负载均衡的工具主要功能是提供客户端的软件负载均衡算法,将 Netflix 的中间服务处连接在一起Ribbon的客户端组件提供一系列完整的配置项,如:连接超时、重试等。简…

TCP通信流程以及套接字函数

TCP和UDP的特点: 对于单播,多播,广播的解释: 单播: 一对一通信,目标地址唯一。多播: 一对多通信,目标地址是一个特定的组。广播: 一对全部通信,目标地址是整…

vue3之 websoket发送消息

1.封装websoket var ws null; //建立的连接 var lockReconnect false;//是否真正建立连接 var timeout 6 * 1000 * 5;//30秒一次心跳 var timeoutObj null;//心跳心跳倒计时 var serverTimeoutObj null;//心跳倒计时 var timeoutnum null;//断开 重连倒计时 var global_…

win10安装redis并配置加自启动(采用官方推荐unix子系统)

记录,为啥有msi安装包,还这么麻烦的用linux版本redis的安装方式,是因为从github上下载别人制作的msi报毒,还不止一处,这种链接数据库的东西,用别人加工过的,都报毒了还用就是傻逼了。 所以采用…

Linux---文件系统

在基础IO中,我们所讲的都是对被打开文件的管理,但是不是所有的文件都是被打开的,对那些在磁盘中保存的没有被打开的文件,我们同样也需要管理,这个就像是快递站中等待被人取走的快递,我们需要将它们分门别类…

赋值运算符

注意点:复合赋值运算符,会进行强制类型转换,不会报错 byte b 2; b 3; b; b 2; b为byte类型 b 3; 等价于b b 3;而b3的结果为int类型; 但在此过程中存在强制类型转换,b(byte)(b3);因而不会报错

电脑提示找不到opencl.dll无法继续执行的多种解决方法,实测有效

Opencl.dll文件的丢失可能会引发一系列系统运行与软件功能上的问题。作为一款重要的动态链接库文件,Opencl.dll在计算机中扮演着关键角色,它主要负责支持和实现OpenCL(开放运算语言)标准,该标准允许程序能够利用多种不…

C/C++ LeetCode:跳跃问题

个人主页:仍有未知等待探索-CSDN博客 专题分栏:算法_仍有未知等待探索的博客-CSDN博客 题目链接:45. 跳跃游戏 II - 力扣(LeetCode) 一、题目 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元…

eNSP学习——利用三层交换机实现VLAN间路由

目录 背景 实验内容 实验目的 实验步骤 实验拓扑 实验编址 实验步骤 基本配置 配置三层交换机实现VLAN间通信 背景 虽说单臂路由可以实现不同VLAN之间主机的通信,但该技术存在一些局限性,比如带宽、转发效率等。 三层交换机在原有二层交换机…

备忘录模式-C#实现

该实例基于WPF实现,直接上代码,下面为三层架构的代码。 目录 一 Model 二 View 三 ViewModel 一 Model using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 设计模式练…

阅读go语言工具源码系列之gopacket(谷歌出品)----第二集 layers-巧妙的抽象与无聊的协议包

上一集中我们讲到了wpcap.dll的go封装方法,对于linux系统下libpcap的go封装采用的是常用的cgo方式,想了解的可以看看pcap文件夹中的pcap_unix.go。 我们得到了wpcap.dll的go调用,就可以利用它来进行列举所有网络设备,例如以下代码…

韦东山嵌入式Liunx入门笔记一

文章目录 一、嵌入式Linux二、Ubuntu系统2-1 安装软件2-2 Linux文件(1) 文件架构(2)文件属性(3)文件命令(4) 解压、压缩文件(5) 网络命令 2-3 vi编辑器2-4 Ubuntu下包管理 三、配置网卡四、安装后续学习使用的软件4-1 MobaXterm4-2 FileZilla4-3 Source Insight4.04-4 下载BSP4…