ROS1的包管理结构
ROS1的完全版本为我们提供了很多内置的功能包,这些包可以帮助我们快速的开发机器人应用。但是,如果我们想自己开发一些功能包,或者是想对现有的包进行改进,就需要了解ROS1的包管理结构。
功能包的创建
所有的ROS功能包需要置于一个特定的工作目录下,一般我们会创建一个名为catkin_ws
的目录(其中ws
是workspace的缩写),当然这个目录名字可以是任意的。这个目录下必须创建一个名为src
的子目录,用于存放功能包的源代码和资源文件,包的初始化也是在子目录下进行。
创建命令:
Bash | |
---|---|
mkdir
命令的-p
表示在创建目录的同时创建所有不存在的父级目录。
catkin_create_pkg
命令的第一个参数是功能包的名称,后面跟着的是功能包的依赖项。
功能包创建成功后,工作空间根目录下会有以下文件(夹):
CMakeLists.txt
:编译规则配置文件package.xml
:功能包元数据及依赖声明src/
:存放源代码(C++或Python文件)include/
:存放引用的头文件
功能包的编译
功能包的编译需要使用catkin_make
命令,该命令会编译功能包及其依赖项,并生成可执行文件。
需要注意的是编译需要在工作空间根目录下运行。
编译命令:
随后根目录下会生成build
和devel
两个目录,build
目录用于存放编译过程中的中间文件,devel
目录用于存放编译生成的可执行文件和库文件,而先前的include
目录会消失。
设置环境变量
要想运行编译好的功能包,需要将其路径添加到环境变量中。
即在根目录下运行:
如果是需要经常使用的功能包,可以将该命令添加到~/.bashrc
文件中,这样每次打开终端都会自动设置环境变量。
整体结构
至此我们可以得到一个典型的ROS1功能包的目录结构如下: