前面两篇文章大概了解了一下ROS的基本概念和如何使用命令行工具。这一篇文章我们大概聊一聊如何创建工作空间与功能包。
工作空间(workspace)是一个存放工程开发相关文件的文件夹:
ps:开发空间和安装空间里面的内容有一定重复,所以ROS2里面做了一些修正,只保留了安装空间。
mkdir catkin_ws
可以看到上图出现了名为“catkin_ws”的文件夹
先输入以下指令定位到catkin_ws文件夹:
cd catkin_ws/
然后输入如下指令创建src文件夹:
mkdir src
如上图我们看到了名为“src”的文件夹。
先输入以下指令定位到catkin_ws文件夹:
cd src/
然后输入如下指令把src文件初始化成ROS的工作空间:
catkin_init_workspace
确认之后会出现这样的一个txt文件,说明当前这个路径已经成为了ROS的工作空间了。
先输入如下指令回到上一级:
cd ..
然后输入如下指令进行编译:
catkin_make
我们可以看到产生了编译空间和开发空间,但是没有安装空间,我们需要另外运行一个命令来产生:
catkin_make install
现在四个文件夹就齐全了。
功能包是放置ROS源码的最下单元,创建代码的时候一定要先创建功能包,所有的源码必须放在功能包下面,不能直接放在src文件夹下面去编译。
同一个工作空间下,不允许存在同名功能包;不同工作空间下,允许存在同名功能包。
创建功能包的指令为:
catkin_create_pkg<package_name>[depend1][depend2][depend3]
catkin_create_pkg test_pkg std_msgs rospy roscpp
运行结果如上图
在src文件下我们可以看到生成了对应名字的功能包
通过上述方法回到catkin_ws文件夹,输入如下指令编译功能包:
catkin_make
source devel/setup.bash
只有设置了环境变量我们才能让系统找到我们的工作空间,并且找到工作空间下对应的功能包。我们可以输入如下指令来查看环境变量:
echo $ROS_PACKAGE_PATH
说明一下:ROS_PACKAGE_PATH是ROS本身的环境变量,它会通过这个环境变量来查找一下所有ROS功能包里面的路径。
可以看到只要把功能包放在src文件下面,系统就可以通过环境变量找到功能包。所以环境变量设置是非常重要的。
我们打开这个文件,下面对一些信息已经做好了标注。
所以我们如果一开始依赖信息没填好的话可以在这里进行扩展。
这个文件主要用来描述功能包的编译规则,后续会讲解怎么修改这个文件来让代码成功编译。