1.工作空间是存放工程开发相关文件的文件夹
src:代码空间(source space)放置功能包。功能包的代码、控制文件、launch文件。
build:编译空间(build space)放置编译过程中间文件。
devel:开发空间(development space)可执行文件、库、脚本
install:安转空间(install space)安装的目标空间。和devel有很大重合。
2.创建工作空间->编译工作空间->设置环境变量->检查环境变量
创建工作空间
mkdir -p catkin_ws/src
cd src
catkin_init_workspace
mkdir -p 允许一次性创建多级文件夹。src的名字不能修改。catkin_init_workspace将文件夹初始化为工作空间。
编译工作空间
cd ..
catkin_make
回到工作空间的根目录也就是catkin_ws文件夹,catkin_make会将src中的所有源代码编译,自动生成build和devel文件夹。如果要生成install文件夹还要输入catkin_make install
。install和devel中都存放了可执行文件,只不过devel是开发过程中,install是最终提交给客户的。
创建功能包
所有源码都必须放在功能包中,不能直接放在src文件夹中直接进行编译。
catkin_create_pkg <package_name> [depend1] [depend2][depend3]...
package_name是功能包名字,depend是依赖。下面是一个实例。
同一个工作空间下不能有同名字的功能包。不同工作空间可以有同名功能包。
//必须回到src文件夹中
cd src
catkin_create_pkg test_package std_msgs rospy roscpp
std_msgs 是ros定义的标准的消息结构。rospy和roscpp是两种编程语言的接口。
创建成功的test_package文件夹中,src文件夹存放源代码,include文件夹存放头文件,
编译功能包
//回到工作空间根目录catkin_ws文件夹中
cd ..
catkin_make
此时会编译功能包。
设置环境变量
想要系统运行devel中生成的程序,需要告诉系统程序的完整路径,即设置环境变量。
source devel/setup.bash
//查看环境变量
echo $ROS_PACKAGE_PATH
ROS_PACKAGE_PATH是ros本身的一个环境变量,ros会使用它来查找所有功能包的路径。
3.功能包中的xml文件和CMakelists文件
xml文件用xml语言书写了功能包相关信息。比如功能包名字、版本号、描述信息、维护者的email、开源许可证等。以及编译运行功能包时需要依赖的其他功能包。如果在catkin_make之后还想要添加其他依赖包,可以直接在xml文件中添加build_depend和exec_depend等信息。
CMakelists使用cmake语法,对编译过程进行了规定。具体如何修改在后面的课程中体现。