ROS 架构

您所在的位置:网站首页 linux系统基于什么架构 ROS 架构

ROS 架构

2024-07-12 00:53| 来源: 网络整理| 查看: 265

文章目录 ROS 的架构计算图文件系统开源社区

ROS 的架构

软件层次架构

从软件实现的角度,ROS 的架构可以分为三个层次:OS层,中间层,应用层;

在这里插入图片描述

OS 层:OS 层建立在 Linux 操作系统之上;主要提供了硬件抽象、底层驱动等;中间层:ROS 的中间层进一步封装 OS 层提供的接口,为应用层提供格式统一,模块化的接口。其主要工作为: 把 TCP/UDP 通信封装为 TCPROS/UDPROS,并提供主题通信、服务通信、参数共享等三种通信方式;额外提供进行间通信方式–Nodelet,适用于实时性较高的应用;在通信的基础之上提供大量机器人开发的库,如数据类型定义,坐标变换,运动控制等 应用层主要调用中间层的接口实现各种应用功能。在应用层,我们需要注意的有: 应用层有一个管理者 Master,负责管理整个系统的运行;ROS 社区共享了大量机器人应用功能包,功能包内的模块都是以节点为单位运行,以 ROS 标准的输入输出作为接口。我们在使用的时候,不需要关注模块内部实现细节,只用明白接口规则即可复用。

系统层次架构

从系统实现的角度,ROS 可以划分为:计算图、文件系统、开源社区三个视角;如下图所示:

在这里插入图片描述

计算图

从计算图的结构来看,ROS 系统软件的功能模块是以节点(节点即为进程)为单位独立运行的,节点以拓扑的方式互联,构成了一个系统网络,即为系统的计算图。如下图所示:

在这里插入图片描述

端点表示各个节点,端点之间的边表示节点之间的通信方式。 在计算图中,有几个重要的概念要着重说明:消息、话题、服务、节点管理器;

消息(Message)

消息,又称之为 话题消息,它是话题通信发送的信息。每一种消息都是一种严格的数据结构。消息类型支持标准的数据类型(整型,浮点型,布尔型等),也支持嵌套结构和数组,还可以进行自定义;

话题(Topic)

话题 是 ROS 系统中最核心的通信方式,它基于发布/订阅(Publish/Subsribe)的方式传递。一个节点可以针对一个话题(Topic)发布消息(这个节点的角色为发布者/Talker),一个节点可以订阅这个消息(这个节点称为订阅者/Listener);话题(Topic)通信具有如下特点:

发布者和订阅者并不知道彼此的存在;一个话题(Topic)可以有多个发布者,也可以有多个订阅者;发布者向话题(Topic)发布消息,订阅者从话题(Topic)接收消息,消息的流向是单方向的;

在这里插入图片描述

服务(Service)

服务(Service)是ROS中另外一个重要的通信方式,它基于 C/S 模型实现。一个节点成为服务端(Server),一个节点成为客户端(Client);客户端发送请求,服务端回应请求;这种通信方式具有以下特点:

服务端和客户端必须知道彼此的存在;客户端发送请求,服务端回应请求,信息流向是双向的;数据类型包含两部分:请求数据类型、应答数据类型;

Master(节点管理器)

ROS Master,ROS系统的管理者,也称为节点管理器(因为ROS的应用程序可以认为由节点的拓扑结构组成),其主要作用是管理整个ROS系统的正常运行;具体主要表现在:

登记和管理节点信息、话题信息,帮助节点之间相互查找和建立连接;管理全局共享参数,为共享参数通信提供帮助; 文件系统

按照工程文件的组织结构,ROS 功能包的文件系统组织结构如下:

在这里插入图片描述

首先来说明功能包中各个部分的内容:

功能包(Package):功能包是ROS软件中的基本单元,包含ROS节点、库、配置文件等;

功能包清单(Package Manifest):每一个功能包都包含一个名为 package.xml 的功能包清单,用于记录功能包的基本信息,包含作者信息、许可信息、依赖选项、编译标志等;如下图所示:

在这里插入图片描述

CMakeList.txt:编译器编译功能包的规则;消息类型(msg):存放自定义的消息类型文件,文件名以 .msg 结尾;服务类型(srv):存放自定义服务类型文件,文件名以 .srv 结尾;源码(src):用来存放功能包源代码的文件;其他的文件夹含义: config:放置功能包中的配置文件,由用户创建、文件名可以不同;inlude:放置功能包中需要用到的头文件;scripts:放置可以直接运行的 Python 脚本;launch:放置功能包中的所有启动文件;action:放置功能包自定义的动作指令;

元功能包

元功能包是一种特殊的功能包,只包含一个 package.xml 元功能包清单文件。它的主要作用就是将多个功能包整合成一个逻辑上独立的功能包,类似于功能包集合的概念; 元功能包清单 package.xml 文件与功能包清单 package.xml 文件类型,但是需要包含一个引用标签如下:

元功能包清单也不需要 标签声明编译过程依赖的其他功能包,只需要使用 标签声明功能包运行时依赖的其他功能包。

导航功能包的元功能包清单如下:

$ roscd navigation $ gedit package.xml

在这里插入图片描述

开源社区

ROS 开源社区中资料非常丰富,主要有以下几种:

提供ROS的发行版(Distrubutiom)提供软件源(Repository):不同的组织机构可以开发或者共享自己的机器人软件;ROS Wiki:记录 ROS 信息文档的主要论坛,所有人都可以注册、登陆,并上传自己开发的文档;邮件列表(Mailing List):交流 ROS 更新的主要渠道;ROS Answers:咨询ROS相关问题的主要网站;博客:发布ROS 社区中新闻、图片,视频(http://www.ros.org/news)

功能包、元功能包、软件仓库、ROS 社区的主要关系

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3