ROS学习笔记(1)——工作空间与功能包的创建和配置

ROS中的工作空间类似于我们平常使用Visual Studio或者其他IDE来创建的工程文件。我们所有功能包的源码、配置、编译都在此工作空间下完成。

首先在开始前有必要介绍一下工作空间(workspace)下包含的文件夹及其作用。工作空间下共包含四个文件夹,分别是:

src: 代码空间,是用来放置所有功能包的代码,配置文件,以及后面会学到的launch文件等,都是放在src文件夹中。
build: 编译空间,放置编译过程中所产生的中间文件,基本不用去关心这个文件夹。
devel: 开发空间,用来放置编译生成的可执行文件,一些库和脚本,在以后的编程中会用到
install: 安装空间,用install指令的安装结果放置的文件夹。

这里devel和install文件夹在功能上是有些类似的,在ROS2.0中对其进行了改变。

创建工作空间

首先在/home目录也就是主目录下单独建立一个catkin_ws文件夹作为工作空间的文件夹,这里文件夹名称可根据需求自定义。在catkin_ws文件夹下定义src文件夹,这个名字就不能更改只能是src了。

mkdir -p ~/catkin_ws/src

然后切换路径到刚刚创建的src的目录下:

cd ~/catkin_ws/src

然后在这里初始化工作空间:

catkin_init_workspace

执行完这些步骤后会发现在src文件夹的下面多出一个文件
在这里插入图片描述
接着返回到工作空间catkin_ws文件夹下

cd ~/catkin_ws/

然后对这个工作空间编译,每次编译都必须在工作空间根目录下进行

catkin_make

这时文件夹里虽然没有代码,但会对这个空的文件夹进行编译,同时会产生build和devel两个文件夹。
在这里插入图片描述
install文件夹的产生还需要输入这个指令:

catkin_make install

这样就可以看到了
在这里插入图片描述

创建功能包

创建代码的时候,必须先在src目录下创建一个功能包,而不是直接将代码放在src目录下进行编译。功能包是ROS里放置源码的最小单元,在功能包里才能放置编写的代码文件。并且功能包的创建要将路径切换到src目录下

cd ~/catkin_ws/src

创建功能包的格式如下:

catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

这里catkin_create_pkg是创建功能包的指令,package_name是功能包的名称,自定义。后面的几项depend是这个功能包所需要的依赖项(包括官方提供的一些库啥的)。例如:

catkin_create_pkg test_pkg std_msgs rospy roscpp

在这里插入图片描述
我们可以看到在/catkin_ws/src的目录下又多了一个test_pkg文件夹。打开这个文件夹,我们可以看到里面有两个文件夹,其中src就是我们平常放代码的地方。还有两个文件,这两个文件在后面编译的时候会用到。

这时,我们再来编译一下,依旧是先回到工作空间的目录下

cd ~/catkin_ws
catkin_make

在这里插入图片描述
这时编译后的结果就如上图所示,我们可以看到他也检测到了那个功能包并对它进行了编译。

若是功能包里有代码,我们想去运行某个程序时,必须先设置一下环境变量

source ~/catkin_ws/devel/setup.bash

这个指令在每次程序的编译后都要进行一遍。如果怕忘了,还有另外一个方法。在主文件夹的下面的隐藏文件里找到.bashrc文件并打开。
在这里插入图片描述
在文件的最后一行加上环境配置的指令。
在这里插入图片描述
这里devel前面是自己文件的路径。根据自己的情况而定。

基本的工作空间和功能包的创建和配置就这些,还有一些会需要在功能包的CmakeList.txt和package.xml文件里需要设置的一些添加项,到时候结合具体的例子再说吧。最后要注意的一点是:
在同一个工作空间下,不允许存在同名功能包,在不同的工作空间下可以存在同名功能包。