[ROS学习]5. 创建工作空间与功能包

笔记参考:【ROS学习笔记】创建工作空间和编译功能包

基于B站ROS公开课:【古月居】古月·ROS入门21讲
基于Ubuntu 20.04.1、Noetic版本

1 What is Workspace(工作空间)

工作空间(Workspace):存放工程开发相关文件的文件夹。类似一个IDE(例如Pycharm)新建一个project,就是一个工作空间。包含4个文件夹:

  • src:代码空间(Source Space):放置功能包、代码、配置文件等
  • build:编译空间(Build Space):编译过程中产生的中间文件,不用过多关注
  • devel:开发空间(Development Space):放置编译生成的可执行文件、库、脚本
  • install:安装空间(Install Space):存放可执行文件,安装成功之后的结果,与上面有一定重复

结构图:

2 创建工作空间

整体流程

2.1 创建工作空间

我们先创建一个~/workspace_name/src文件夹,然后进入该文件夹(cd)
第3行catkin_init_workspace意为将当前文件夹变为工作空间,使其拥有工作空间的属性
注:“~/”意为当前用户名目录;“-p”意为递归创建目录,即直接创建多级目录。
src文件夹即代码空间,不能自行用别的名称代替

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace

可以看到创建了这么一个txt文件,说明创建工作空间成功。

2.2编译空代码的工作空间

要编译工作空间,先要回到工作空间的根目录。
catkin_make是ROS中catkin这个编译工具提供的编译器指令。其可以按照配置编译src中所有功能包的源码;并将结果放在develinstall

cd ~/catkin_ws
catkin_make

可以看到生成了build和devel两个新文件夹,devel存放了编译完成的内容。

这里没有生成install文件夹,要生成install文件夹,输入catkin_make install

catkin_make install

3 创建功能包

工作空间创建并且配置成功后,就可以创建代码了,但代码需要放置在功能包中
功能包是放置ROS源码的最小单元。
上面我们创建了一个空的工作空间,src文件夹里面没写东西,现在我们创建一个自己的功能包。
注意:同一工作空间下,不允许存在同名功能包;
  不同工作空间下,允许存在同名功能包

创建

指令格式:catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
<package_name>为包名;
[depend]:为依赖,即指明该新功能包编译时需要依赖ROS中的其他功能包名称,如需要调用python、C++库,就要指明rospy、roscpp。
创建功能包:

cd ~/catkin_ws/src
catkin_create_pkg test_pkg std_msgs rospy roscpp

编译新的功能包

回到工作空间根目录,再编译(catkin_make)一下。

cd ~/catkin_ws
catkin_make

4 设置和检查环境变量

编译成功后,想要运行功能包中的代码,需要先设置工作空间的环境变量

设置环境变量

设置环境变量,以便系统找到我们的工作空间和功能包source ~/catkin_ws/devel/setup.bash
也就是执行一下devel文件中的setup.bash

检查环境变量

通过echo $ROS_PACKAGE_PATH进行检查,echo是查看环境变量的命令,ROS_PACKAGE_PATH本身为ROS环境变量,它可以查找所有ROS功能包的路径;
如果查找结果存在工作空间的路径,则说明该功能包的环境变量设置成功

source ~/catkin_ws/devel/setup.bash

echo $ROS_PACKAGE_PATH

5 功能包中的两个重要文件

package.xml

使用xml语言描述功能包相关的信息:

CMakeLists.txt

描述功能包里的编译规则,使用CMake语法。

posted @ 2022-08-25 16:44  Gentle_Jan  阅读(403)  评论(0编辑  收藏  举报