能看所有网站的浏览器,手机浏览器网站开发,微信开放平台是公众号吗,厦门网站建设哪家不错推荐一、 总体结构 根据ROS系统代码的维护者和分布来标示#xff0c;主要有两大部分#xff1a;#xff08;1#xff09;main#xff1a;核心部分#xff0c;主要由Willow Garage公司和一些开发者设计、提供以及维护。它提供了一些分布式计算的基本工具#xff0c;以及整个…一、 总体结构 根据ROS系统代码的维护者和分布来标示主要有两大部分1main核心部分主要由Willow Garage公司和一些开发者设计、提供以及维护。它提供了一些分布式计算的基本工具以及整个ROS的核心部分的程序编写。2universe全球范围的代码有不同国家的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 通过RPCRemote 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官方wikihttp://www.ros.org