开发者社区> 桃子红了呐> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

机器人操作系统(ROS)教程4:ROS的框架【转】

简介:
+关注继续查看

转自:http://www.arduino.cn/thread-11351-1-1.html

在进行ROS的代码开发前,有必要了解一些ROS的概念。
首先,ROS的系统代码分为两部分:main和universe。
1.main:是ROS的核心部分,它提供了一基本的工具,以及整个ROS的核心部分的程序编写。
2.universe:全球范围的代码,有不同国家的ROS社区组织开发和维护。一种是库的代码,如OpenCV、PCL等;库的上一层是从功能角度提供的代码,如人脸识别,他们调用下层的库;最上层的代码是应用级的代码,让机器人完成某一确定的功能。

还可以从另一种方式对ROS进行分级,分为三个级:计算图级、文件系统级、社区级。下面是说明图。
<ignore_js_op> 
一、  计算图级       计算图是ROS处理数据的网络图。程序运行时,所有进程以及他们所进行的数据处理,将会通过一种点对点的网络形式表现出来。这一级主要包括几个重要概念:节点(node)、消息(message)、主题(topic)、服务(service)。

<ignore_js_op> 


       1、  节点       节点就是一些执行运算任务的进程。就像是计算机里的应用程序。你可以通过节点来发布消息使机器人运动。
       2、  消息       节点之间是通过传送消息进行通讯的。

       3、  主题

<ignore_js_op> 


       消息以一种发布/订阅的方式传递。一个节点可以在一个给定的主题中发布消息。一个节点针对某个主题关注与订阅特定类型的数据。可能同时有多个节点发布或者订阅同一个主题的消息。总体上,发布者和订阅者不了解彼此的存在。
这就好比是一个讨论,给定一个讨论的主题。这时一群人加进了讨论,这就叫订阅。而每一个参与者就是节点。在讨论中有的人发布消息(publish),有的人只是聆听,不说话(subscribe)。说话的人和聆听的人并不一定认识。
       4、  服务        在ROS中通讯方式有两种:一种就是上面的节点之间通过发布/订阅话题来进行通讯的方式。还有一种就是服务,在这种方式下:一个用于请求,一个用于回应。这类似于web服务器。



在上面概念的基础上,需要有一个控制器可以使所有节点有条不紊的执行,这就是一个ROS的控制器(ROS Master)。
        ROS Master 通过RPC(Remote Procedure Call Protocol,远程过程调用)提供了登记列表和对其他计算图表的查找。没有控制器,节点将无法找到其他节点,交换消息或调用服务。

        比如控制节点订阅和发布消息的模型如下:

<ignore_js_op> 
ROS的控制器给ROS的节点存储了主题和服务的注册信息。节点与控制器通信从而报告它们的注册信息。当这些节点与控制器通信的时候,它们可以接收关于其他以注册及节点的信息并且建立与其它以注册节点之间的联系。当这些注册信息改变时控制器也会回馈这些节点,同时允许节点动态创建与新节点之间的连接。
        节点与节点之间的连接是直接的,控制器仅仅提供了查询信息,就像一个DNS服务器。节点订阅一个主题将会要求建立一个与出版该主题的节点的连接,并且将会在同意连接协议的基础上建立该连接。

         另:ROS控制器控制服务:

<ignore_js_op> 
二、文件系统级
ROS文件系统级指的是在硬盘上面查看的ROS源代码的组织形式。
它包括两个最基本的概念:Package和Manifest,即包和清单文件。
     Package是组织ROS代码的最基本单位,每一个Package都可以包括库文件,可执行文件,脚本及其它的一些文件。

     Manifest文件是对Package的相关信息的一个描述。他提供了Package之间的依赖性,以及一个包的元信息,比如版本、维护着和许可证等信息。
三、社区级
ROS的社区级概念是ROS网络上进行代码发布的一种表现形式。
代码库的联合系统。使得协作亦能被分发。这种从文件系统级别到社区一级的设计让独立地发展和实施工作成为可能。正是因为这种分布式的结构,似的ROS迅速发展,软件仓库中包的数量指数级增加。









本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sky-heaven/p/6049355.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器ECS更换操作系统流程(新版教程)
阿里云服务器操作系统选择后还可以更改吗?可以的,重装操作系统是免费的,但是需要注意中国大陆地域可以随意更换,中国香港、新加坡等非中国大陆地域的云服务器不支持Windows和Linux操作系统之间变换
0 0
涵盖了所有计算机底层知识总结与操作系统的实战教程,建议收藏
第一本是程序员必知的硬核基础知识,这是一本非常入门的经典 PDF,看完能让你对计算机有一个基础的了解和入门,是培养你 内核 的基础,我们看下目录大纲
0 0
【Java开发工具】下载安装eclipse并中文配置教程(所以操作系统通用)
汉化渠道 去eclipse官网选择汉化链接:https://download.eclipse.org/technology/babel/update-site/R0.19.2/2021-12/ 这里给你们提供了!
0 0
保姆级教程,龙蜥操作系统安装使用一步到位
超详细安装教程,图文化解读如何安装龙蜥操作系统,简单易上手。
0 0
十四、Linux下安装操作系统,虚拟机联网,如何ping通baidu.com网址,以及如何设置静态IP精讲,这一篇足够了。(手把手小白教程)
十四、Linux下安装操作系统,虚拟机联网,如何ping通baidu.com网址,以及如何设置静态IP精讲,这一篇足够了。(手把手小白教程)
0 0
【Linux操作系统】——CentOS安装保姆级教程。
【Linux操作系统】——CentOS安装保姆级教程。
0 0
保姆级教程带你在VMware中安装Windows11操作系统
在VMware中安装Windows11操作系统 文章目录 在VMware中安装Windows11操作系统 1.Windows11操作系统简介 2.在VMware中创建一个新的虚拟机 2.1.下载Windows 11系统镜像 2.2.新建一个windows虚拟机 2.3.配置虚拟机资源设置 2.4.将虚拟机开机选择blos启动 3.安装Windows11操作系统 3.1.安装操作系统 3.2.设置系统 4.Windows11安装完成administrator
0 0
linux操作系统下部署Javaweb项目教程
linux操作系统下部署Javaweb项目教程
0 0
阿里云ECS云服务器重装操作系统的方法教程
阿里云ECS云服务器重装操作系统是运维人员经常遇到的,ECS云服务器重装操作系统是通过更换系统盘来实现的
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
OpenAnolis 龙蜥操作系统开源社区技术创新白皮书
立即下载
冬季实战营第二期:Linux操作系统实战入门
立即下载
2022龙蜥操作系统生态用户实践精选
立即下载