ROS架构设计及其基础概念(三)

一、ROS架构设计

ROS架构可以将其分为三个层次:OS层、中间层和应用层
ROS架构设计及其基础概念(三)_第1张图片

1.OS层

ROS并不是一个传统意义上的操作系统,无法像Windows、Linux一样直接运行在计算机硬件之上,而是需要依托于Linux系统。所以在OS层,我们可以直接使用ROS官方支持度最好的Ubuntu操作系统,也可以使用macOS、Arch、Debian等操作系统。

2.中间层

Linux是一个通用系统,并没有针对机器人开发提供特殊的中间件,所以ROS在中间层做了大量工作,其中最为重要的就是基于TCPROS/UDPROS的通信系统。ROS的通信系统基于TCP/UDP网络,在此之上进行了再次封装,也就是TCPROS/UDPROS。通信系统使用发布/订阅、客户端/服务器等模型,实现多种通信机制的数据传输。除了TCPROS/UDPROS的通信机制外,ROS还提供一种进程内的通信方法——Nodelet,可以为多进程通信提供一种更优化的数据传输方式,适合对数据传输实时性方面有较高要求的应用。在通信机制之上,ROS提供了大量机器人开发相关的库,如数据类型定义、坐标变换、运动控制等,可以提供给应用层使用。

3. 在应用层

在应用层,ROS需要运行一个管理者——Master,负责管理整个系统的正常运行。ROS社区内共享了大量的机器人应用功能包,这些功能包内的模块以节点为单位运行,以ROS标准的输入输出作为接口,开发者不需要关注模块的内部实现机制,只需要了解接口规则即可实现复用,极大地提高了开发效率。

二、计算图

从计算图的角度来看,ROS系统软件的功能模块以节点为单位独立运行,可以分布于多个相同或不同的主机中,在系统运行时通过端对端的拓扑结构进行连接。

1、节点(node)

**节点(Node)**就是一些执行运算任务的进程,一个系统一般由多个节点组成,也可以称为“软件模块”。节点概念的引入使得基于ROS的系统在运行时更加形象:当许多节点同时运行时,可以很方便地将端对端的通信绘制成如图2-3所示的节点关系图,在这个图中进程就是图中的节点,而端对端的连接关系就是节点之间的连线。

ROS架构设计及其基础概念(三)_第2张图片

2、消息

节点之间最重要的通信机制就是基于发布/订阅模型的消息(Message)通信。每一个消息都是一种严格的数据结构,支持标准数据类型(整型、浮点型、布尔型等),也支持嵌套结构和数组(类似于C语言的结构体struct),还可以根据需求由开发者自主定义。

3、话题

消息以一种发布/订阅(Publish/Subscribe)的方式传递。一个节点可以针对一个给定的话题(Topic)发布消息(称为发布者/Talker),也可以关注某个话题并订阅特定类型的数据(称为订阅者/Listener)。发布者和订阅者并不了解彼此的存在,系统中可能同时有多个节点发布或者订阅同一个话题的消息。
ROS架构设计及其基础概念(三)_第3张图片

4、服务

虽然基于话题的发布/订阅模型是一种很灵活的通信模式,但是对于双向的同步传输模式并不适合。在ROS中,我们称这种同步传输模式为服务(Service),其基于客户端/服务器(Client/Server)模型,包含两个部分的通信数据类型:一个用于请求,另一个用于应答,类似于Web服务器。与话题不同的是,ROS中只允许有一个节点提供指定命名的服务

5、节点管理器

为了统筹管理以上概念,系统当中需要有一个控制器使得所有节点有条不紊地执行,这就是ROS节点管理器(ROS Master)。ROS Master通过远程过程调用(RPC)提供登记列表和对其他计算图表的查找功能,帮助ROS节点之间相互查找、建立连接,同时还为系统提供参数服务器,管理全局参数。ROS Master就是一个管理者,没有它的话,节点将无法找到彼此,也无法交换消息或调用服务,整个系统将会瘫痪,由此可见其在ROS系统中的重要性。

你可能感兴趣的:(ROS,笔记)