ROS系统框架

根据ROS系统代码的维护者和分布俩标识,主要有两大部分:核心部分,也是主要部分,一般称为main。主要由Willow Garage公司和一些开发者来设计提供与维护。他们提供一些分布式计算的基本工具,以及整个ROS系统核心部分的程序编写;全球范围的代码,被称为universe,由不同国家的ROS社区组织开发和维护。

ROS从设计视角上有三级概念:文件系统级、计算图级、社区级。除此之外,ROS也有两种类型的命名:功能包源名称和计算图源名称。

ROS从架构视角上可以分为操作系统层、中间件层和应用层三个层级。ROS的系统架构如下图所示。
下面先从设计视角上展开叙述ROS系统架构。

ROS文件系统级

在这里插入图片描述
文件系统级:指可以在硬盘上查看的ROS源代码,包括以下几种

  • 功能包(Package)。功能包是ROS中组织软件的主要形式,一个功能包可能包含ROS运行过程(如节点),一个ROS依赖库、数据集、配置文件或者组织在一起的任何其他文件。(带有manifest.xml)
  • 功能包清单(Manifest)。提供关于功能包的元数据,包括它的许可信息和依赖信息,指定的编程语言信息(如编辑标记)。最重要的功能是定义功能包之间的依赖关系。功能包清单是一个manifests.xml文件,通过这个文件实现对功能包的管理。
  • 功能包集(Stack),提供某种功能的一些功能包的集合;(带有stack.xml);
  • 功能包集清单(Stack Manifest),指stack.xml文件,提供关于功能包集的相关信息,与Manifest文件类似,但主要作用于功能包集;
  • 消息类型(Message/msg type)。消息的描述,定义了ROS中发送的消息的数据结构,存储在目录my_package/srv/MyServiceType.srv下;
  • 服务类型(Service/srv type)。服务的描述,定义了ROS中需求和相应的数据结构,存储在目录my_oackag/srv/MyServiceType.srv下;

计算图级

ROS中基本的计算图级概念包括:节点、节点管理器、参数服务器、消息、服务、主题和包。

在这里插入图片描述

  • 节点(Node)。节点是执行计算的过程,执行具体任务的进程、独立运行的可执行文件。不同节点可使用不同的编程语言,可分布式运行在不同的主机上。节点在系统中的名称必须唯一。例如,机器人控制系统由很多节点组成:一个节点控制一个激光距离传感器,一个节点控制轮子的马达,一个节点执行定位,一个节点执行路径规划……
    ROS提供了处理节点的工具,用于节点信息、状态、可用性等的查询操作,例如可以用下面的命令对正在运行的节点进行操作。
  • 节点管理器(Master)。控制中心,为节点提供命名和注册服务;跟踪和记录话题/服务通信,辅助节点相互查找、建立连接;提供参数服务器,节点使用此服务器存储和检索运行时的参数。
    在这里插入图片描述
  • 话题(Topic),异步通信机制,节点间用来传输数据的重要总线,使用发布/订阅模型,数据由发布者传输到订阅者,同一个主题的订阅者或发布者。

在这里插入图片描述

  • 消息(Message),既有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型;使用变成语言无关的.msg文件定义,编译过程中生成对应的代码文件。
    在这里插入图片描述

  • 服务(Server),同步通信机制,使用客户端/服务器(C/S)模型,客户端发送请求数据,服务器完成处理后返回应答数据。使用编程语言无关的.srv文件定义请求和应答结构数据,编译过程中生成对应的代码文件。
    在这里插入图片描述
    参数管理器(Parameter Server),全局共享字典,可通过网络访问的共享、多变量字典,节点使用此服务器来存储和检索运行时的参数,适合存储静态、非二进制的配置参数,不适合动态存储。

  • 消息记录包(Bag),是一种用于保存和回放ROS消息数据的格式,是检索传感器数据的重要机制。

针对话题与服务的区别,见下表。
在这里插入图片描述

社区级

ROS开源社区级的概念主要关于ROS资源,这些资源包括

  • 发行版(Distribution),ROS发行版可以独立安装、带有版本号的一系列功能包集。
  • 软件源(Repositorie),ROS依赖于共享开源代码和软件源的网站或者主机服务,不同的机构可以分享各自的机器人软件和程序;
  • ROS Wiki。用于记录有关ROS系统信息的主要论坛。
  • 邮件列表。ROS用户邮件列表是关于ROS的主要交流渠道,能够交流从ROS软件更新到ROS软件使用中的各种疑问或信息。

版权声明:本文为baidu_36487340原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。