dajianli

金牌会员
  • 主题:31
  • 回复:288
  • 金钱:1016
  • 积分:1674
ROS文件系统介绍
一、ROS系统架构
第一种: 根据ROS系统代码的维护者、分布来区分,也就是一种笼统的分级方式。
(1)main:核心部分。
参与: WillowGarage公司和一些开发者设计、提供以及维护。
功能:提供了一些分布式计算的基本工具、整个ROS的核心部分的程序编写。
(2)universe:全球范围的代码
   参与:不同国家的ROS社区组织、个人开发和维护。
   功能:各种库代码,如OpenCV、PCL等;库的上一层是从功能角度提供的代码,如人脸识别,他们调用下层的库;最上层的代码是应用级的代码,让机器人完成某一确定的功能。ROS之所以流行离不开各大开源社区的支持,正是因为有了他们ROS才更加完善。
第二种:根据ROS文件系统层级进行分类,分成三个层级,文件系统级,计算图级,开源社区级。

二、ROS系统层级介绍
1、文件系统级:由ROS内部构成,文件结构,核心文件组成。
   Packages(包): Package是ROS系统中最底层最基本的组织,里面包包含节点、ROS依赖库、数据套、配置文件、第三方软件、或者任何其他逻辑构成。package包含一个 manifest.xml 文件目录,功能包清单Manifest也就是Manifest.xml提供关于功能包,许可信息和包之间依赖关系,编译标志等信息。
   Stacks(堆): Package的集合,比Package这个概念高一级别。Stack包含一个 Stack.xml 文件的目录。功能包集清单Stack manifect也就是Stack.xml提供关于功能包集的清单,包括它的许可信息和Stack之间依赖关系。
   Packages和Stacks两者关系:
   
备注:ROS的编译系统有两种,一种叫做catkin,另外一种叫做rosbuild,rosbuild是ROS传统的编译系统,从最初沿用至今,但面临被抛弃的状态。catkin源于ROS fuerte这个版本,当时只是被一小部分人使用,在后一个版本groovy开始被正式使用,用于取代rosbuild。为什么要用catkin取代rosbuild?当然是因为catkin比rosbuild好很多,在实际应用过程中会感受到的 。基于catkin编写的package叫做wet package,基于rosbuild编写的package叫做dry package,在ROS相关的问答里面会常常看到这种说法的。
以后的教程都将使用:Catkin
2、计算图级:进程与系统之间的通信
    计算图是ROS处理数据的一种点对点的网络形式,ROS建立一个连接到所有进程的,系统中的任何节点都可以访问这个网络,通过这个网络与其他节点进行数据交换,同时将自身数据发送到网络上。计算图级有几个很重要的概念:节点(Node)、消息(Message)、话题(Topic)、服务(Service),
   节点Nodes一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信,节点可以发布或接收一个话题,也可以提供或使用某种服务。
   消息Messages消息是一种ROS数据类型,每一个消息都是一个严格的数据结构,标准的数据类型(整型,浮点型,布尔型等等)都是支持的,同时也支持原始数组类型,消息可以包含任意的嵌套结构和数组,用于订阅或发布到一个话题。
   话题Topics节点可以发布消息到话题,也可以订阅话题以接收消息。
   服务Service:ROS的通讯模式是基于话题的发布/订阅模型,服务是在发布主题时,正在发送的数据能够以多对多的方式交互。
   节点管理器MasterROS名称服务 ,用于节点的名称注册和查找可以帮助节点找到彼此。
3、开源社区级:全世界不同国家的ROS社区组织、个人共享的知识算法和代码,正是因为这种分布式的结构,ROS可以迅速发展,软件仓库中包的数量指数级增加。