什么是Ros(二)- 结构和通讯概述

目录

1.架构

2.通讯

参考文献


上接:什么是Ros(一)-CSDN博客

1.架构

共三层:OS 层,中间层,应用层。

OS 层:OS 层是操作系统层也就是我们现在使用的ubuntu(linux),了解即可,只做应用,不需要改动

中间层:这里有TCPROS/UDPROS、Nodelet API、ClientLibrary。

       TCPROS/UDPROS: 是基于TCP、IP 协议做的二次封装取名为TCPROS 和UDPROS;

       Nodelet API :为了弥补TCPROS/UDPROS 使用中的一些不足它是使用一种共享内存的方法而不是网络传输的实现一些数据共享;

       ClientLibrary :是客户端的库,这个库就是指把UDPROS 和TCPROS 再继续进行封装成了一些ROS 的具体通信实现方法例如我们后面要提到的话题、服务等等;

应用层:应用层的最左边是一个Master,Master 是跟中间层一起框起来,上面标注了一个Ros。这是因为Master 节点是每一个Ros 进行中必须要有的并且只能唯一有的所以说Master 节点也是Ros 官方提供的。它是用来管理右边这些应用层的Node 等等。而每一个note 就是一个个相互独立的应用。

总结:OS层和中间层了解即可,真正需要自己开发的是应用层

node:一个可执行程序进程,通常一个node 负责者机器人的某一个单独的功能,如果将相机接入ROS,其中Camera Node 就是一个相机的节点。不同的节点可以使用不同的编程语言C++或python。在同一个ROS 下节点对于编程语言是没有要求的,可以每个节点用互相不同的语言。还可以将Image Display Node,运行在另一台电脑上的图像处理节点。也就是说Ros 的节点是可以运行在同一局域网下的不同机器人上,这就是ROS的分布式计算能力。

master:每个节点都负责单独的一部分功能,节点跟节点之间要互相发现彼此这就需要master。master 相当于一个管理中心,每一个node 启动的时候先要在Master 处进行一次注册告诉master 自己的基本信息,需要订阅什么话题,需要发布什么话题。node 之间的通信也是先由master进行“牵线”,才能两两的进行点对点通信,一个ROS计算图中有且只有一个master
 

2.通讯

节点之间的通讯方式有4 种实现方法,分别是话题、服务、动作、参数:

话题:单向通讯,Publisher 只管发Subscriber 只管收

服务:双向通讯,请求由Client(客户) 端发往Server(服务) 端的,请求在执行完之后,服务端再向客户端返回一个应答这个就是服务的过程,但长时间没有应答就认为通讯失败。

动作:是服务的升级版,服务是客户端发送一个请求服务端返回一个应答。这种模式在任务执行周期短的情况下是十分有用的,例如让服务器关一下灯,服务器立马把灯关了,然后返回一个应答告诉你灯已经关了。但是如果用服务的方式让机器人砍一片森林,在砍完之前是收不到任何回复的。此时无法判断到底是没有收到请求,还是正在执行。在类似这种执行周期比较长的任务下服务就很不适用了。所以也就产生了动作action 这种方法。所以在动作中,请求包含goal 和cancel 是由客户端向服务端发送的,应答包含status 和result 和feedback 是由服务端返回的。

Action 和服务的区别:在于它有多重回复。例如让机器人去砍伐一片森林,机器人首先会应答一个status。告诉你当前状态开始砍伐,同时还有回复feedback 周期性的报告目前砍了多少棵。最后砍完了,应答一个result 树已经砍开了。客户端接收到result 就知道这一组动作已经结束了。Action 在执行过程中如果想要取消动作,它还提供了一个cancel 这接口来取消请求。这里要注意一下feedback 和status 都可以有多个但是result 只会发布一次。

参数服务器:是一种比较特殊的机制,他既不是一个节点,然后我们在启动的时候也没有特地去启动它。它运行在Master 当中,是节点用来存储参数的地方。例如某一个节点启动的时候需要获取变量f。如果参数服务器当中没有存储这个变量,那他会使用一些默认值

参考文献

1.ROS介绍以及常用指令_ros命令-CSDN博客

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

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

相关文章

win10下在Qt中使用VTK(安装VS2017+安装QT5.9.9+编译配置VTK8.2.0)

目录 前言一、安装Visual Studio20171)官网下载可执行的安装程序2)安装3)启动 二、安装Qt 5.9.91)下载可执行的安装程序2)安装3)配置环境变量 三、安装Cmake1)下载可执行的安装程序2&#xff09…

【深度优先】LeetCode1932:合并多棵二叉搜索树

作者推荐 动态规划LeetCode2552:优化了6版的1324模式 题目 给你 n 个 二叉搜索树的根节点 ,存储在数组 trees 中(下标从 0 开始),对应 n 棵不同的二叉搜索树。trees 中的每棵二叉搜索树 最多有 3 个节点 &#xff0…

一种excel多线程并发写sheet的方案

一、背景 有一次项目的需求要求导出excel,并且将不同的数据分别写到不同的sheet中。 二、 方案概述 首先一开始使用easyexcel去导出excel,结果发现导出时间需要3秒左右。于是想着能不能缩短excel导出时间,于是第一次尝试使用异步线程去查询数…

人工智能原理复习--确定性推理

文章目录 上一篇推理概述自然演绎推理合适公式 归结演绎推理归结原理归结反演 提升归结效率下一篇 上一篇 人工智能原理复习–知识表示(二) 推理概述 推理就是按某种策略由已知判断推出另一判断的思维过程 分类: 演绎推理、归纳推理、默…

kafka 集群 ZooKeeper 模式搭建

Apache Kafka是一个开源分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用程序 Kafka 官网:Apache Kafka 关于ZooKeeper的弃用 根据 Kafka官网信息,随着Apache Kafka 3.5版本的发布,Zookeeper现…

Christmas is Coming,一起来DIY雪花灯啦

亲爱的朋友们,圣诞节即将到来!是不是很期待和家人、朋友一起欢度圣诞夜呢?KCC深圳联合立创开源特别为大家精心挑选了一款氛围感满满的雪花灯,让我们一起创造自己的圣诞礼物~ 彩色丝印PCB版的触摸无极调光雪花灯 哇,立创…

VL53-400激光测距传感器

一、产品简介 先由激光二极管对准目标发射激光脉冲。经目标反射后激光向各方向散射。部分散射光返回到传感器接收器,被光学系统接收后成像到雪崩光电二极管上。雪崩光电二极管是一种内部具有放大功能的光学传感器,因此它能检测极其微弱的光信号。记录并…

6.9 Windows驱动开发:内核枚举进线程ObCall回调

在笔者上一篇文章《内核枚举Registry注册表回调》中我们通过特征码定位实现了对注册表回调的枚举,本篇文章LyShark将教大家如何枚举系统中的ProcessObCall进程回调以及ThreadObCall线程回调,之所以放在一起来讲解是因为这两中回调在枚举是都需要使用通用…

02.PostgreSQL 查询处理期间发生了什么?

PostgreSQL 查询处理期间发生了什么? 文中主要内容引用自PostgreSQL指南:内幕探索 查询处理是PostgreSQL中最为复杂的子系统。如PostgreSQL官方文档所述,PostgreSQL支持SQL2011标准中的大多数特性,查询处理子系统能够高效地处理这…

Hdoop学习笔记(HDP)-Part.08 部署Ambari集群

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

有文件实体的后门无文件实体的后门rootkit后门

有文件实体后门和无文件实体后门&RootKit后门 什么是有文件的实体后门: 在传统的webshell当中,后门代码都是可以精确定位到某一个文件上去的,你可以rm删除它,可以鼠标右键操作它,它是有一个文件实体对象存在的。…

西南科技大学(数据结构A)期末自测练习三

一、填空题(每空1分,共10分) 1、为解决计算机主机与打印机之间速度不匹配的问题,通常设置一个打印数据缓冲区。主机将要输出的数据依次写入缓冲区,打印机则依次从缓冲区中取出数据,则该换缓冲区的逻辑结构…

【Java Web学习笔记】 2 - CSS入门

项目代码 零、 CSS引出 CSS 教程 官方教学文档 1.在没有CSS之前,我们想要修改HTML元素的样式需要为每个HTML元素单独定义样式属性,费心费力。所以CSS就出现了。 2.使用CSS将HTML页面的内容与样式分离提高web开发的工作效率(针对前端开发&a…

一篇短文让你彻底理解什么是逻辑门电路

一、门电路概述 门电路:实现基本运算、复合运算的单元电路,如与门、与非门、或门… 注意:门电路中以高/低电平表示逻辑状态的1/0 正逻辑与负逻辑: 正逻辑:高电平表示1、低电平表示0 负逻辑:高电平表示0、低…

k8s ingress 无法找到端点

文章目录 ingress rule无法找到端点这个注解是什么意思呢?为何不生效呢?端点无法更新?如何确认ingressclass呢?修复端点无法发现的问题多个ingress controller 架构 ingress rule无法找到端点 在vnnox-cn集群创建ingress&#xf…

数据结构(三)——算法和算法分析

😀前言 数据结构和算法是计算机科学领域中至关重要的概念。它们为解决实际问题提供了有效的方法和步骤。算法作为解决问题的方法和步骤,在计算机中以指令的有限序列的形式表达。本文将介绍算法的定义、描述和程序设计等方面的内容,帮助您深入…

【FPGA图像处理实战】- 图像基础知识

视频图像处理是FPGA主要应用方向之一,很多FPGA从事或准备进入这一领域,我们现在开始发布新的FPGA实战专栏——FPGA图像处理。 FPGA处理视频图像处理的主要优势是流水线和并行处理运算,特别是现在视频分辨率越来越大,从720p到1080…

二维A*算法

MATLAB2016b可以正常运行 function bidirectional_ASTAR clc; clear; %% 初始化界面 n 11; % field size n x n tiles 20*20的界面 %wallpercent 0.3; % this percent of field is walls 15%的界面作为阻碍物(墙) cmap [1 1 1; ...% 1 - whit…

linux特殊权限_suid_chattr_umask

3.3 特殊权限 如果一个文件很重要,需要依赖特殊权限避免其被删除。 由于特殊权限会拥有一些“特权”,因而用户若无特殊需要,不应该去打开这些权限,避免安全方面出现严重漏洞,甚至摧毁系统。3个权限是对了执行文件或目…

FPGA串口接收解帧、并逐帧发送有效数据-2

FPGA串口接收解帧、并逐帧发送有效数据 工程实现的功能:FPGA串口接收到串口调试助手发来的数据,将其数据解帧。判断到正确的帧头和帧尾之后,将有效数据存入rx_data中;另一方面发送端将有效数据逐帧发送出去。 参考:正…