ROS 的概念分三个层次:文件系统层、计算图层和社区层。本章会对这些分层原则以及其中的概念进行系统讲解。
2.1.1 文件系统层
ROS 是一个类 Linux 操作系统,有专门的组织文件的规则。如下图所示:
- Packages: 软件包或者功能包,它是 ROS 中软件的基本单元,也是我们可以构建和发布的最小单元,是用于实现特定功能的相关文件的集合,包括节点文件、所依赖的库、数据集、配置文件等等内容。前面我们运行的两个可执行文件 turtlesim_node 和 turtle_teleop_key 都属于 turtlesim 包。
- Metapackages: 元功能包是多个相似目的的功能包的集合,比如一个与移动机器人导航相关的元功能包就可能会包含定位相关的功能包或者路径规划相关的功能包,不同的功能包相互配合共同实现机器人导航的目的。
- Package Manifests:每个功能包都有一个 package.xml 文件,我们称之为功能包清单,其中存放了功能包相关的描述信息,包括功能包的功能介绍、作者信息、依赖关系、编辑时间以及许可信息等内容。
- Message (msg) types: 消息是 ROS 中两个不同的节点之间的通信方式,我们可以使用 ROS 系统中默认提供的消息类型,也可以使用我们自定义发布的消息类型。
- Service (srv) types: 服务类型定义了 ROS 中服务的请求与响应的数据结构,同样的我们可以使用 ROS 系统中默认提供的服务类型,也可以使用我们自定义发布的服务类型。