什么是Ros(一)- 名词解释和架构概述

目录

1.概述

2.名词解释

2.1节点(Node)

2.2节点管理器(Master)

2.3消息(Message)

2.4话题(Topic)

2.5服务(Service)

2.6动作(Action)

2.7消息记录包(Bag)

2.8参数(Parameter)

2.9功能包(Package)和工作空间(workSpace)

2.10功能包清单(Package manifest)

2.11元功能包(Meta Package)

2.12 启动文件(roslaunch)

2.13通信机制

2.14举例理解

3.构架

3.1OS层

3.2中间层

3.3应用层

3.4总结

参考文献


 1.概述

机器人上跑ROS=PC上跑Windows=手机上跑安卓

ROS(Robot Operating System,机器人操作系统)

操作系统:任何其他软件都必须在操作系统的支持下才能运行。操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的功能包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持,让计算机系统所有资源最大限度地发挥作用,提供各种形式的用户界面,使用户有一个好的工作环境,为其它软件的开发提供必要的服务和相应的接口等。

Ros和其他的操作系统最大的区别:进程之间的通信。传统的操作系统进程之间的通信都是要系统来调用的,会消耗大量的系统资源。而一个机器人一般由多个传感器(相机,雷达,等)组成,是通过各模块相互沟通交流(自身的位置,速度,目标的位置,速度等)来完成指定任务。所以进程之间有效快速的通信,是一个机器人要必备的要求,ros就提供这样的功能。

作用:ros可以快速的完成机器人各个模块之间的通信(分布式计算),可以从不同节点中接受和发送信息。


 

2.名词解释

2.1节点(Node)


      节点就是执行具体任务的进程或独立运行的可执行文件,通常一个系统由多个节点组成,节点之间可以通过ROS客户端库(如roscpp 、rospy)相互通信。不同节点可使用不同编程语言,可分布式运行在不同的主机。节点在系统中的名称必须是唯一的。节点之间是通过传送消息进行通讯的,一个节点可以有多个话题;ROS中,通常来讲我们写的c++程序主函数所在的程序称为一个节点;

2.2节点管理器(Master)


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

2.3消息(Message)


      消息本身是基于发布/订阅模型的话题通信机制而来的,具有一定的类型和数据结构,既包含ROS提供的标准数据类型,也可由用户自定义数据类型。机器人中通常需要传感器,传感器采集到的信息,即这儿的message.(如:位置消息,温度、湿度等)

2.4话题(Topic)


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

2.5服务(Service)


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

2.6动作(Action)


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

2.7消息记录包(Bag)


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

2.8参数(Parameter)


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

2.9功能包(Package)和工作空间(workSpace)


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

      工作空间用来存放很多不同package的。

2.10功能包清单(Package manifest)


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

2.11元功能包(Meta Package)


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

2.12 启动文件(roslaunch)

      其目的是一次性启动多个节点。

2.13通信机制

      三种通信机制是话题(Topic)通信机制、服务(Service)通信机制和参数(Parameter)管理机制。

2.14举例理解

假设,你和你导师发微信询问课题:

节点(Node):你和你导师,

节点管理器(Master):同时使用微信的人千千万,帮助准确定位你和你导师

话题(topic):课题的名称,

消息(message):课题具体内容。

消息记录包(Bag):把你和你和你导师聊的课内内容记录下来,方便你回忆

参数(Parameter):简单理解,你和导师聊的课题内容,有一些是可以分享给别人(节点)的

发布器(publish):由于你是发信息的,所以你有一个publish发布器,

接收器(subscribe):你导师要有有一个subscribe接收器,才能收到信息。

订阅器(subscribe): 但导师必须要订阅你的消息你才能发送成功,怎么算订阅呢?就是你发的topic和她收的topic名字一样。

3.构架

共三层,

3.1OS层


      ROS并非像Windows、Linux等传统意义上的操作系统,无法直接运行在计算机硬件上,因此它需要依赖于Linux系统。

3.2中间层


      Linux系统本身没有针对机器人开发的中间件,因此ROS在中间层做了大量工作。首先是基于TCP/UDP网络,并在此之上进一步封装而构建的TCPROS/UDPROS通信系统。另外ROS还提供了一种进程内的通信方法——Nodelet,为多进程通信提供了一种更为优化的数据传输方式。在通信机制之上,ROS提供了大量机器人开发的库,以提供给应用层调用。

3.3应用层


      应用层中ROS需要一个管理者——Master,负责管理整个系统正常运行,为节点间建立连接。

3.4总结

底层:是操作系统层,

上层:是广大用户编写提供的各种功能不同的软件包,比如定位导航,行动规划等等。

中间层(ROS):提供和重新封装了底层硬件调用的API,这些重新封装的API称为客户端库,运用这些库可是实现硬件调用,以此实现各种不同的功能,如使用激光雷达扫描生成周围环境的2D地图。ROS框架基于集中式拓扑图结构,它的进程(即节点,ROS以节点形式进行通信,以此实现功能)是分布式的,进程分布在各个功能不同的功能包里面。
 

参考文献

1.ROS:ROS是什么-CSDN博客
2.从零入门激光SLAM(三)——什么是ROS-CSDN博客

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

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

相关文章

基于Logistic回归实现二分类

目录 Logistic回归公式推导: Sigmoid函数: Logistic回归如何实现分类: 优化的方法: 代码: 1.创建一个随机数据集,分类直线为y2x: 为什么用np.hstack()增加一列1? 为什么返回…

Spring | Spring的基本应用

目录: 1.什么是Spring?2.Spring框架的优点3.Spring的体系结构 (重点★★★) :3.1 Core Container (核心容器) ★★★Beans模块 (★★★) : BeanFactoryCore核心模块 (★★★) : IOCContext上下文模块 (★★★) : ApplicationContextContext-support模块 (★★★)SpE…

[传智杯 #3 练习赛] 直角三角形

题目描述 一个直角三角形的两个直角边是a,b(a≤b),其斜边是 c,且 a,b,c 都是正整数。 现在我们已经知道了斜边长度 c,请问这个直角三角形的两个直角边的长度是什么? 输入格式 输入一个整数 c(1≤c≤1.41104)。 输出格式 输出…

【Erlang进阶学习】4、进程与消息传递

在Erlang系统中,进程都是轻量级的,意味着创建进程只需要花费微不足道的时间和极少的内存。 1、进程间不共享内存,而是通过消息传递来通信。 2、消息从发送进程的栈上复制到接收进程的堆上。 3、由于多个进程并发地在独立的内存空间执行&#…

RocketMQ- 深入理解RocketMQ的消息模型

1、RocketMQ客户端基本流程 ​ RocketMQ基于Maven提供了客户端的核心依赖&#xff1a; <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><version>4.9.5</version> </dependency&…

PyQt6 QCheckBox复选框按钮控件

​锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计33条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话…

Three.js的THREE.LOD如何加载gltf模型

要在Three.js中使用THREE.LOD加载gltf模型&#xff0c;可以按照以下步骤操作&#xff1a; 1、首先&#xff0c;确保已经引入了Three.js库和GLTFLoader插件。可以通过以下方式引入&#xff1a; <script src"https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/thre…

idea通过remote远程调试云服务器

引用了第三方的包&#xff0c;调试是看不到运行流程&#xff0c;于是想到了idea的remote方法 -agentlib:jdwptransportdt_socket,servery,suspendn,address9002 写一个.sh文件并启动 nohup java -jar -agentlib:jdwptransportdt_socket,servery,suspendn,address9002 ./demo.j…

【Socket】Unix环境下搭建局域网内TCP服务端

本文搭建一个简单的、Unix环境下的、局域网内的TCP服务端&#xff1a;每当有客户端连接时&#xff0c;打印一下对方的ip地址及端口号。 本文要学习的Unix网络IPC的套接字函数&#xff1a; socketbindlistenaccept 本文要学习的一些工具函数&#xff1a; inet_ptonhtonsgets…

基本面选股的方法

基本面选股是一种投资策略&#xff0c;主要关注公司的财务状况、盈利能力、行业地位等因素&#xff0c;以判断公司的价值并做出投资决策。以下是基本面选股的具体分析方法和重点&#xff1a; 财务状况分析&#xff1a; 利润表分析&#xff1a;关注公司的净利润、毛利率、营业…

思维模型 韦伯-费希纳定律

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。感觉与刺激成对数关系。 1 韦伯-费希纳定律的应用 1.1 韦伯-费希纳定律在工业设计中的应用 1 苹果公司的 iPhone 设计 苹果公司的 iPhone 设计是韦伯-费希纳定律在工业设计中的经典应用之…

Android 13.0 默认授予app获取序列号SerialNo权限

1. 概述 在13.0的系统rom定制化中,在一些第三方app开发中,会获取序列号等属性,而在10.0以后的高版本对于获取系统属性的相关信息要求严格 必须有权限才可以,10.0以前的Android版本中,可以直接通过调用Build.SERIAL来获取序列号,在高版本中,为了保护个人隐私, 不让第三…

Uniapp

UniApp是一个强大的跨平台应用开发框架 随着移动互联网的快速发展&#xff0c;跨平台应用开发成为了一个重要的需求。UniApp就是一个能够满足这一需求的强大框架。本文将介绍UniApp的基本概念、优势、使用方法和未来发展。 一、UniApp概述 UniApp是一个基于Vue.js开发的跨平…

剑指 Offer(第2版)面试题 15:二进制中1的个数

剑指 Offer&#xff08;第2版&#xff09;面试题 15&#xff1a;二进制中1的个数 剑指 Offer&#xff08;第2版&#xff09;面试题 15&#xff1a;二进制中1的个数解法1&#xff1a;位运算解法2&#xff1a;n & (n - 1)相关题目 剑指 Offer&#xff08;第2版&#xff09;面…

详解SpringAop开发过程中的坑

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

1-算法基础-编程基础

1.基本数据类型 char ch A; char s[] "hello";2.const定义常量 const int N 1e5 9;//const定义常量&#xff0c;后续不可被修改 int a[N];3.万能头文件 C11等可用 #include<bits/stdc.h> using namespace std;4.typedef typedef long long kk; kk a[20…

手敲MyLinkedList,简单了解其运行逻辑

1.LinkedList的介绍和结构 LinkedList的底层是双向链表结构&#xff0c;相对于之前的单向无头非循环链表来说&#xff0c;LinkedList最大的区别就是该链表可以增加了一条链接逻辑&#xff0c;可以从最后一个节点通过地址访问来到整个链表的头结点。 通过以下集合框架&#xff0…

计算机毕业设计 基于Web的铁路订票管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

【双指针】283. 移动零

题目 两种方法时间复杂度相同都是O(n)&#xff0c;方法2操作更少一些 1.解法1: 有优化空间 class Solution {public void moveZeroes(int[] nums) {int slow 0, fast 0;while (fast < nums.length) {if (nums[fast] ! 0) {if (slow fast) {slow;fast;} else {nums[slow…