ROS探索总结(二)——ROS总体框架
2015-11-30 14:00:18 | 来源:新浪微博 | 投稿:努力一直努 | 编辑:小柯

原标题:ROS探索总结(二)——ROS总体框架

版权声明:本文为博主原创文章,未经博主允许不得转载。

目录(?)[-]

  1. 一 总体结构
  2. 二 计算图级
    1. 1 节点
    2. 2 消息
    3. 3 主题
    4. 4 服务
  3. 三 文件系统级
    1. 1 包
    2. 2 堆
  4. 四 社区级

一、 总体结构

根据ROS系统代码的维护者和分布来标示,主要有两大部分: (1)main:核心部分,主要由Willow Garage公司和一些开发者设计、提供以及维护。它提供了一些分布式计算的基本工具,以及整个ROS的核心部分的程序编写。 (2)universe:全球范围的代码,有不同国家的ROS社区组织开发和维护。一种是库的代码,如OpenCV、PCL等;库的上一层是从功能角度提供的代码,如人脸识别,他们调用下层的库;最上层的代码是应用级的代码,让机器人完成某一确定的功能。 一般是从另一个角度对ROS分级的,主要分为三个级别:计算图级、文件系统级、社区级。

二、 计算图级

计算图是ROS处理数据的一种点对点的网络形式。程序运行时,所有进程以及他们所进行的数据处理,将会通过一种点对点的网络形式表现出来。这一级主要包括几个重要概念:节点(node)、消息(message)、主题(topic)、服务(service)。

(1) 节点

节点就是一些直行运算任务的进程。ROS利用规模可增长的方式是代码模块化:一个系统就是典型的由很多节点组成的。在这里,节点也可以被称之为“软件模块”。我们使用“节点”使得基于ROS的系统在运行的时候更加形象化:当许多节点同时运行时,可以很方便的将端对端的通讯绘制成一个图表,在这个图表中,进程就是图中的节点,而端对端的连接关系就是其中弧线连接。

(2) 消息

节点之间是通过传送消息进行通讯的。每一个消息都是一个严格的数据结构。原来标准的数据类型(整型,浮点型,布尔型等等)都是支持的,同时也支持原始数组类型。消息可以包含任意的嵌套结构和数组(很类似于C语言的结构structs)。

(3) 主题


消息以一种发布/订阅的方式传递。一个节点可以在一个给定的主题中发布消息。一个节点针对某个主题关注与订阅特定类型的数据。可能同时有多个节点发布或者订阅同一个主题的消息。总体上,发布者和订阅者不了解彼此的存在。

(4) 服务

虽然基于话题的发布/订阅模型是很灵活的通讯模式,但是它广播式的路径规划对于可以简化节点设计的同步传输模式并不适合。在ROS中,我们称之为一个服务,用一个字符串和一对严格规范的消息定义:一个用于请求,一个用于回应。这类似于web服务器,web服务器是由URIs定义的,同时带有完整定义类型的请求和回复文档。需要注意的是,不像话题,只有一个节点可以以任意独有的名字广播一个服务:只有一个服务可以称之为“分类象征”,比如说,任意一个给出的URI地址只能有一个web服务器。
在上面概念的基础上,需要有一个控制器可以使所有节点有条不紊的执行,这就是一个ROS的控制器(ROS Master)。 ROS Master 通过RPC(Remote Procedure Call Protocol,远程过程调用)提供了登记列表和对其他计算图表的查找。没有控制器,节点将无法找到其他节点,交换消息或调用服务。
比如控制节点订阅和发布消息的模型如下:
ROS的控制器给ROS的节点存储了主题和服务的注册信息。节点与控制器通信从而报告它们的注册信息。当这些节点与控制器通信的时候,它们可以接收关于其他以注册及节点的信息并且建立与其它以注册节点之间的联系。当这些注册信息改变时控制器也会回馈这些节点,同时允许节点动态创建与新节点之间的连接。
节点与节点之间的连接是直接的,控制器仅仅提供了查询信息,就像一个DNS服务器。节点订阅一个主题将会要求建立一个与出版该主题的节点的连接,并且将会在同意连接协议的基础上建立该连接。 另:ROS控制器控制服务:

三、 文件系统级

ROS文件系统级指的是在硬盘上面查看的ROS源代码的组织形式。
ROS中有无数的节点、消息、服务、工具和库文件,需要有效的结构去管理这些代码。在ROS的文件系统级,有以下几个重要概念:包(package)、堆(stack)、

(1) 包


ROS的软件以包的方式组织起来。包包含节点、ROS依赖库、数据套、配置文件、第三方软件、或者任何其他逻辑构成。包的目标是提供一种易于使用的结构以便于软件的重复使用。总得来说,ROS的包短小精干。

(2) 堆


堆是包的集合,它提供一个完整的功能,像“navigation stack”。Stack与版本号关联,同时也是如何发行ROS软件方式的关键。
ROS是一种分布式处理框架。这使可执行文件能被单独设计,并且在运行时松散耦合。这些过程可以封装到包(Packages)和堆(Stacks)中,以便于共享和分发。下图是在包和堆在文件中的具体结构: Manifests (manifest.xml):提供关于Package元数据,包括它的许可信息和Package之间依赖关系,以及语言特性信息像编译旗帜(编译优化参数)。
Stack manifests (stack.xml):提供关于Stack元数据,包括它的许可信息和Stack之间依赖关系。

四、 社区级

ROS的社区级概念是ROS网络上进行代码发布的一种表现形式。结构如下图所示:
代码库的联合系统。使得协作亦能被分发。这种从文件系统级别到社区一级的设计让独立地发展和实施工作成为可能。正是因为这种分布式的结构,似的ROS迅速发展,软件仓库中包的数量指数级增加。

参考资料:(1)《开源机器人操作系统——ROS》 张建伟等着(2)《an open-source Robot Operating System》 paper(3) willowgarage公司网站:http://www.willowgarage.com/
(4) ROS官方wiki:http://www.ros.org
----------------------------------------------------------------

欢迎大家转载我的文章。

转载请注明:转自古-月

http://blog.csdn.net/hcx25909

欢迎继续关注我的博客



tags:

上一篇  下一篇

相关:

微电商话题,天天见

导言 刷博有一阵子了,经常看到一些微电商类的话题出现在俺屏幕里,稍做整理。
注: 以下排序不分先后!

有人@我 民调局60已经更新,结尾小逆翻唱,内页更有“民调局小漫画”~

漫画来源网络,非小逆讲故事原创。 当民调局更新恢复每周一集的时候有木有很兴奋,小逆的目标是希望可以在

给唠嗑,蜗壳,科比布莱恩特。

亲爱的篮球:自那一个瞬间穿起父亲的球袜在想象中投进制胜一球在大西洋球馆里我就已然笃定对你的深爱对你的

傅希如近期演出安排(2015.11.30更新)

龙凤呈祥·桃李芬芳—庆祝上海戏剧学院建校70周年 京剧系列演出校庆系列专场(三)—在沪校友庆贺演出京剧《

我只是一个卖煎饼果子的,你跟我谈个鸡毛战略

作者|丛剑飞(阿拉丁)“老板,哟哟切克闹,煎饼果子来一套,两个蛋,谢谢!”看似轻描淡写的语言背后,我有

20151130涨停密码

【涨停密码】两市共涨停28只,跌停19只,涨停板主要集中次新,农林牧渔板块中
次新: 迅游科技、中矿照片、

抄底小技巧

怎样准确的判断一只股票的底部作为长线资金,大多寻求稳健的投资路径,因此,如何准确地判定一个股票的底部

【土耳其空军真的很强大,曾经一次空袭就击沉自己三艘驱逐舰】

【科罗廖夫谈军事栏目第121期】11月24日,俄罗斯空军在叙利亚上空执行作战任务的一架苏-24战机,在靠近土耳

望故乡去路远,既惦记又嫌弃

11月3日,我在重庆看了《山河故人》,当时想写一篇观后感,一直拖着没写。当时,我的心思早就飘到云南度

美食杰食验室【面包机横评】带你玩转面包机,评论集赞更有机会获得测评排名第一の面包机一台

(本文系美食杰原创,转载请注明出处)随着科技的发展,智能厨电早已成为家庭必不可少的一员。越来越多的智

站长推荐: