在ROS的文件包里面,有纯粹的代码,也有编译后的二进制文件。如何将这些文件有条不紊的整理起来呢?于是就有了下面这种文件系统:
- 对于每一个特定的功能,用一个文件夹包起来,就是所谓的功能包:
(1)config:放置功能包中的配置文件,由用户创建,文件名可以不同
(2)include:放置需要的头文件
(3)scripts:放置可以直接运行的python脚本
(4)src:放置需要编译的C++源代码
(5)launch:放置功能包中所有的启动文件
(6)msg:放置功能包中自定义的消息类型
(7)srv:放置功能包中自定义的服务类型
(8)action:放置功能包中自定义的动作类型
(9)CMakeList.txt:编译器编译功能包的规则
(10)package.xml:功能包清单,用于记录功能包基本信息,如作者、许可、依赖选项、编译标志信息等。 - 当需要执行一系列功能以达到某种效果时(例如导航效果:需要建模,定位,控制小车行走等多个功能包),就需要一个清单文件把这些相关的功能包都组织起来,就是所谓的元功能包。元功能包中只有一清单(.xml文件),与功能包清单类似。
值得注意的是:
功能包清单中有<build_depend>和<run_depend>标签,分别是编译所需要的和运行所需要的文件
元功能包清单中在结尾有一个:
<export>
<matepackage/>
</export>
另外,元功能包清单不需要<build_depend>,只需要<run_depend>。