什么是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博客

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

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

相关文章

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

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

Spring Cloud笔记 —— 什么是Spring Cloud?

引言: 在写这篇博客之前,其实吧,博主很久之前有过一段时间的Spring Cloud的案例项目开发经验,就是一个案例项目开发而已,也说不上有多高大上,那个时候,我其实也是从众而已罢了,毕竟现…

Java 设计模式系列:代理模式

文章目录 介绍静态代理基本介绍应用实例静态代理优缺点 动态代理基本介绍JDK 中生成代理对象的 API Cglib 代理基本介绍实现步骤 介绍 1)代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象 2&#xff09…

JOSEF 快速中间继电器 KZJ-4H-L DC220V 导轨安装

快速中间继电器KZJ-4H-LDC220V导轨安装导轨安装是广泛用于电力系统,能够断货开或开通大负载,并且具有较强的断弧能力,适用于交流50/60Hz。电压24380V,直流电压24280V自动控制电路中以增加保护和控制回路的触点数量与触点容量。 KZJ系列快速中…

leetcode 209. 长度最小的子数组(优质解法)

代码&#xff1a; //时间复杂度 O(N) ,空间复杂度 O(1) class Solution {//采用滑动窗口的方法解决public int minSubArrayLen(int target, int[] nums) {int numsLengthnums.length;int minLengthInteger.MAX_VALUE;int left0;int right0;int sum0;while (right<numsLengt…

详解原生Spring框架下的方法切入点表达式

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…

C++/Qt读写xml文件

今天介绍C/Qt如何读写xml文件&#xff0c;xml文件一般用于作为配置文件使用。 C C读写xml文件需要借助第三方来实现&#xff0c;比较好用的有tinyxml2和pugixml&#xff0c;对应的网址链接。 tinyxml2 pugixml 以tinyxml2为例&#xff0c;下载后进行解压可以看到以下文件&…

Python---格式化输出与%百分号----涉及转义符 \ 反斜杠的使用

相关链接Python--格式化输出中的转义符号----\t 制表符&#xff08;空格的&#xff09;和\n&#xff08;换行的&#xff09;_唯元素的博客-CSDN博客 Python---字符串&#xff08;用单、双引号、 三单/双引号定义。反斜杠 \ 转义&#xff0c;单在双内/双在单内 &#xff09;-CS…

【电路笔记】-串联和并联电阻

串联和并联电阻 文章目录 串联和并联电阻1、概述2、串联和并联电阻示例13、串联和并联电阻示例2 电阻器可以无限数量的串联和并联组合连接在一起&#xff0c;形成复杂的电阻电路。 1、概述 在之前的教程中&#xff0c;我们学习了如何将各个电阻器连接在一起以形成串联电阻器网…

混沌系统在图像加密中的应用(基于哈密顿能量函数的混沌系统构造1.5)

混沌系统在图像加密中的应用&#xff08;基于哈密顿能量函数的混沌系统构造1.5&#xff09; 前言一、自治非哈密顿系统的构造、动态特性分析1.相关理论基础2.两个四维自治非哈密顿系统3.数值分析 python代码 前言 续接混沌系统在图像加密中的应用&#xff08;基于哈密顿能量函…

重生奇迹MU再生原石

通过坎特鲁提炼之塔的NPC艾尔菲丝提炼成功就可以可获得再生宝石。 重生奇迹mu里的再生原石的用法&#xff1a; 1、打怪获得再生原石去提炼之塔&#xff08;进入坎特鲁遗址的141188位置的传送台&#xff09;。 2、找到&#xff08;艾儿菲丝&#xff09;把原石提炼成再生宝石。…

MySQL安全相关——TDE和数据脱敏功能介绍

MySQL作为一款广泛使用的开源关系型数据库管理系统(RDBMS)&#xff0c;其安全性一直是开发者和企业关注的重点。在MySQL中&#xff0c;有一些与安全相关的功能&#xff0c;其中包括Transparent Data Encryption(TDE)和数据脱敏。本文将对这些功能进行介绍。 一、Transparent Da…

深度学习实战63-利用自适应混合金字塔网络实现人脸皮肤美颜效果,快速部署与实现一键美颜功能

大家好,我是微学AI,今天给大家介绍一下深度学习实战63-利用自适应混合金字塔网络实现人脸皮肤美颜效果,快速部署与实现一键美颜功能。在本文中,我将介绍一种新颖的自适应混合金字塔网络(ABPN),该网络可以实现对超高分辨率照片的快速局部修饰。该网络主要由两个组件组成:一…

最简单的梅花吉凶表

以下是梅花易数吉凶表&#xff0c;使用方式&#xff1a; 随机报2组数字&#xff1a;第1个数除8得余数作为上爻&#xff0c;第2个数除8得余数作为下爻&#xff0c;然后对照以下表格&#xff0c;得到吉凶预测结果。 说明&#xff1a;经过个人不断实践&#xff0c;[大吉转大吉] …

基于STC12C5A60S2系列1T 8051单片机的液晶显示器LCD1602显示功能菜单应用

基于STC12C5A60S2系列1T 8051单片机的液晶显示器LCD1602显示功能菜单应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍液晶显示器LCD1602简单介绍IIC通信简单介绍掉…

Android : SQLite 增删改查—简单应用

示例图&#xff1a; 学生实体类 Student.java package com.example.mysqlite.dto;public class Student {public Long id;public String name;public String sex;public int age;public String clazz;public String creatDate;//头像public byte[] logoHead;Overridepublic St…

分享一个判断曲线的趋势的Demo

需求背景 最近在处理数据&#xff0c;横坐标是时间&#xff0c;纵坐标是价格&#xff0c;需要判断一段时间内&#xff0c;由这些点绘制成的曲线的走势&#xff0c;比如趋势朝上&#xff0c;趋势朝下&#xff0c;水平调整这三种趋势。尝试了不少方法&#xff0c;下面这个效果还…

以热爱的态度对待生活,就是最自己的温柔

粉色系拼接款羽绒服 90白鸭绒&#xff0b;连帽立领设计 防风又保暖&#xff0c;柔软蓬松舒适感十足 衣服上加了时尚的字母印花元素 袖口做了魔术贴设计 下摆也做了可调节抽绳 防风保暖五部做到实处哦 宽松版型&#xff0c;很耐穿保暖性又很强 简单大方&#xff0c;搭配…

Flutter:视频下载案例

前言 最近在研究视频下载&#xff0c;因此打算一边研究一边记录一下。方便以后使用时查看。 使用到的库有&#xff1a; permission_handler 11.1.0 &#xff1a;权限请求 flutter_downloader 1.11.5&#xff1a;文件下载器 path_provider 2.1.1&#xff1a;路径处理 视频…

基于springboot 图书馆管理系统

qq&#xff08;2829419543&#xff09;获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;springboot 前端&#xff1a;采用vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xf…