第二章ROS机器人操作系统的总体框架

来源:互联网 发布:烘焙箱怎么做饼干知乎 编辑:程序博客网 时间:2024/05/21 03:20

一简述
通过上一节的介绍,我们已经知道ROS的一些基本特点:
1–ROS—是一个开源的次级操作系统,是一些包,软件工具的集合
2–它跨机器进行通信的体系结构—提供了对系统进行实时数据分析,编程语言独立等功能
3–它提供了类似操作系统的服务,包括硬件抽象描述,底层驱动程序管理,公用功能的执行,
程序间消息传递,程序发行包管理等
二总体结构
根据ROS系统代码的维护者和分布来表示,ROS的总体框架可以分为两部分:
1–main–核心部分,也是主要部分,一般称为—main—主要由Willow Garage公司和一些开发者设计
提供和维护.它提供了一些分布式计算的基本工具,以及整个ROS核心部分的程序编写
2–universe—全球范围的代码,由不同国家的ROS社区组织开发和维护
1–一是各种库的代码,如OpenCv(机器视觉库),PCL(点云库)等
2–库的上一层是从功能的角度提供的代码,如人脸识别等,它们调用各种库来实现这些功能
3–最上层的代码是–应用级别的代码,叫做apps.可以让机器人完成某一应用,如去拿啤酒,
而这个过程则需要调用不同功能的代码进行组合,如啤酒识别,抓去啤酒等。这个一般需要
用户下载相应的功能包,然后学习使用
我们还可以从另外的角度来理解ROS,ROS系统有三级概念:
1–文件系统级
2–计算图级
3–社区级
除此之外,ROS也有两种类型的命名:
1–功能包源名称
2–计算图源名称
三计算图级
1–计算图—是ROS处理数据的一种点对点的网络形式.程序运行时,所有进程以及它们所进行的数据处理,将
会通过一种点对点的网络形式表现出来.这一级主要包括几个重要的概念:
1–节点–node
2–节点管理器
3–参数服务器
4–消息–message
5–主题–topic
6–服务–service
7–包
1–节点–node—节点—就是一些直接进行运算任务的—进程,ROS利用规模可增长的方式是代
码模块化,一个系统就是典型的—由很多结点组成的.在这里,结点也可以称之为”软件模块”
我们使用”结点”使得基于ROS的系统在运行的时候更加形象化;当许多结点同时运行时,可以很
方便的将端对端的通讯绘制成一个图表,在这个图表中,进程就是图中的节点,而端对端的连接
关系就是其中弧线连接
2–消息–message–节点之间的通过—传送消息—进行通讯的.每一个消息都是一个严格的—
数据结构.原来.标准的数据类型(整形,浮点型,布尔型)都是支持的,同时也支持原始数据类型。
消息可以包含任意的—嵌套结构和数组(类似于C语言的structs)
3–topic–主题:
消息message以一种发布/订阅的方式传递.一个节点可以在一个给定节点的主题中发布消息,一个
节点针对某个主题关注与订阅特定类型的数据.可能同时有多个节点发布或者订阅同一个主题的
消息。总体上,发布者和订阅者不了解彼此的存在
4–服务–service:虽然基础主题的发布/订阅模型是很灵活的–通讯模式,但是,它广播式的路径规
划对于可以简化节点设计的同步传输模式并不合适.在ROS中,我们称之为一个服务,用一个字符串
和一对严格规范的消息定义:一个用于请求,一个用于回应。这种类似与Web服务器


1--节点--node--节点是执行计算的过程---也就是执行计算的---一个进程.ROS被设计为在很精细的尺度上模       块化,一个机器人控制系统由很多节点(进程)组成。例如:一个节点控制一个激光距离传感器,一个节点控制       轮子的马达,一个节点执行定位,一个节点执行路径规划,一个节点提供系统的整个视图---一个ROS节点是用       ROS客户端库(roscpp,rospy)写成的.    2--节点管理器---节点管理器---为其他计算图提供了---ROS名称注册和查获的功能。没有节点管理器,节点讲       不能互相找到,也不能进行消息互换或者调用服务    3--参数服务器--参数服务器允许数据通过在一个中心位置的关键词来存储,目前它是节点管理器的一部分    4--消息--节点之间通过消息来---相互通信    5--主题主要用于识别消息内容的名称    1--节点可以和其他节点直接相连,节点管理器--仅仅--提供查找表信息,像DNS域名服务器.订阅一个       主题的节点将会请求与发布主题的节点进行连接,并确定在一种连接协议上进行连接.    2--ROS中,最通用的协议是--TCPROS,TCPROS采用标准的TCP/IP协议套接字

四–文件系统级
ROS文件系统级—指的是可以在硬盘上查看的—ROS源代码,包括以下几种形式:
1–功能包—功能包是ROS中组织软件的主要形式,功能包是ROS软件的元级组织形式,它可以包含任何内容:库,
文件,工具,可执行文件等
2–Manifest–提供关于功能包的元数据meta data,包含它的许多依赖信息,指定的编程语言信息,它是功能包
的一种描述
3–功能包集
4–Stack Manifest
5–Message(msg) Type
6–Service/srv


五–社区级

0 0
原创粉丝点击