三.工作空间与功能包
1.概念
1.1工作空间:存放工程开发相关文件,下辖四个空间src 代码空间(source space):存放功能包
build 编译空间(build space):存放编译过程中产生的文件(二进制文件)
devel 开发空间(development space):存放编译生成的可执行文件(开发中)
install 安装空间(install space):install命令执行成功后产生的结果(开发结束后)
下图为工作空间的结构图

1.2功能包:ros里存放源码的最小单元。
2.创建工作空间和功能包
2.1创建工作空间
依次在终端键入如下几行代码来创建并初始化工作空间。
mkdir -p ~/catkin_ws_test/src #创建工作空间及代码空间的文件夹,catkin_ws_test为工作空间名称,可任取
cd ~/catkin_ws_test/src #进入代码空间src文件夹
catkin_init_workspace #初始化
![]()
以下为执行结果

通过返回工作空间根目录下做编译来生成其他空间,依次键入
cd .. #返回上级工作目录
catkin_make #编译工作空间
此时可以看到产生了bulid编译空间和devel开发空间,未产生install安装空间

可通过键入
catkin_make install
即可产生install安装空间

产生以上文件的过程实质上是通过catkin_make和catkin_make install命令编译src代码空间中的所有功能包的源码并将编译过程和结果存入对应空间的过程,由于此时src空间中未创建任何功能包,所以实质上并未产生实质上的编译效果,只是初步创建了几个空间文件夹。
2.2创建功能包
首先进入工作空间下的src代码空间。
通过键入
catkin_create_pkg xxx.pkg +[depend1] +[depend2] +...
其中xxx.pkg为所创建功能包的名称,如test.pkg;depend1,depend2,depend3...为添加此功能包在编译过程中依赖的库或第三方功能包。

进入功能包目录后,如下图为目录路径下所包含的内容。

include目录中存放头文件,src目录中存放代码文件。CMakeLists文件用cmake语法描述和修改编译规则,package.xml文件用于描述和修改功能包的相关信息和依赖的信息。

如上图,若在创建功能包时未配置好依赖或后续需要添加新的依赖,可在package中通过增添或删除<build_depend>xxxxxxxxx</build_depend>代码段
和<exec_depend>xxxxxxxxx</exec_depend>代码段来实现对功能包依赖的修改。
注意:同一个工作空间中的功能包不可重名,不同工作空间中的功能包可以重名。
2.3设置工作空间的环境变量
在编译成功后,运行功能包里的某一个程序前,需要设置工作空间的环境变量,使得系统得以找到工作空间和其中包含的功能包。
返回工作空间的根目录下,键入
source devel/setup.bash
即可。以下为执行结果

更多推荐
所有评论(0)