ROS的目录文件结构
如上图所示,首先是最顶层的catkin工作空间,它是整个ROS工程中层次最高的概念。
工作空间也就是管理和组织ROS工程项目文件的地方。其下主要的一级目录有四个:
- src:源空间
- build:编译空间
- devel:开发空间
- install:安装空间
其中,
- 最顶层的工作空间(可以任意命名)和 src (必须为src)文件夹是需要自己创建;
- build 和 devel 文件夹由 catkin_make 命令自动创建;
- install 文件夹由 catkin_make install 命令自动创建。
catkin 是 ROS 定制的编译构建系统,是对CMake的扩展,对ROS这样大体量的工程有更好的支持,同时也简化了操作。
注意:使用 catkin_make 编译之前一定要回到最顶层的工作空间。
1、src:源空间
存放功能包(package)。
功能包是ROS文件系统中组织程序文件的基本单元,也就是catkin编译的基本单元。一个 package 下必须包含 CMakeLists.txt 和 package.xml 两个文件:
- CMakeLists.txt 文件中规定了功能包的编译规则,包括指定功能包名称,指定编译依赖项,指定要编译的源文件,指定要添加的消息格式文件/服务格式文件/动作格式文件,指定生成的消息/服务/动作,指定头文件搜索目录,指定链接库搜索目录,指定生成的静态链接库文件,指定需要链接的库文件,指定编译生成的可执行文件以及路径等等。
- package.xml 文件定义了功能包的属性信息,包括包名,版本号,作者,编译依赖和运行依赖等。
另外,
- include 和 src 分别存放头文件(*.h)和源程序文件(*.c/*.cpp等);
- scripts 存放脚本文件(比如Python文件 *.py,shell文件 *.sh);
- launch 存放 launch文件(*.launch),用于批量运行多个可执行文件;
- config 存放配置文件(*.yaml等);
此外,还有自定义的通信格式文件,包括消息(*.msg)、服务(*.srv)以及动作(*.action)。
2、build:编译空间
存放CMake和catkin的缓存信息、配置信息和其他中间文件。
3、devel:开发空间
存放编译后生成的目标文件,包括头文件、动态&静态链接库、可执行文件等。
4、install:安装空间
即开发完成后的安装包。