ROS 学习1- 创建工作空间以及功能包

一、工作空间概念

在ros中工作空间统称为workspace,是用来存放你一个工程开发需要用到的相关文件的,在ros中它是一个带有空座空间性质的文件夹。

该文件夹中通常会包含4个子文件夹;

        src: 用来存放功能包的

        build(编译空间):是用来存放编译过程中产生的二进制文件的

        devel(开发空间):编译后生成的可执行文件,最终编译生成的东西最终都要在这里运行

        install(安装空间):用install指令安装成功后的结果都放在这里

二、创建工作空间的过程和指令如下:

2.1 创建工作空间过程

1、创建工作空间

创建一个一个文件夹,然后在文件夹中创建一个src子文件夹(这里需要注意工作空间的名字可以随便去,但是工作空间中src名字不能更换,因为上述介绍中说src是用来存放功能包的,那今后ros工作的时候就会用src这个路径去找你的功能包)

将刚刚创建的文件夹赋予工作空间的性质,在src中输入指令:catkin_init_workspace

2、编译工作空间

编译是为了让ros知道有这么一个工作空间了,今后可以找到它:catkin_make(但是这里需要注意编译一定要在工作空间主目录下编译)

编译完的结果会放在build和devel文件夹下,因此你会看到你编译完了之后就会自动生成这两个文件夹了

最后说明一下,由于install文件夹在我们开发过程中不常用,而且ros2把install 和delve文件内容做了合并,因此其实不用关心它了。但是如果想要这个文件夹可自己创建:在工作空间主目录下:catkin_make install 即可

整体代码如下

创建工作空间

midir -p ~/catkoin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace

编译工作空间

cd ~/catkin_ws/
catkin_make

三、创建功能包

ROS 的 Catkin 编译系统的一个特点是将程序做成 package (称为 catkin package 或者 ROS package) 的形式,可以理解成模块化。 

创建功能包过程如下;

        1、创建功能包:

catkin_create_pkg <功能报名字> 依赖项1 依赖性2...(创建功能包的时候要在工作空间的src目录下创建)

        2、编译功能包:将c++等高级语言写的代码编译为机器能看理解的语言

catkin_make(要在工作空间主目录下进行编译)

        3、配置工作空间环境变量:什么是环境变量?简单易懂解说「到底什么是环境变量?」| Code | Chihokyo BLOG | 旺财的博客这个网站说的还挺清楚的(读过之后我的理解是:当系统运行一个程序或者指令的时候,有的时候需要用到它的路径,而当你没有告诉具体路径的时候,那么就会在PATH里寻找,因此一些软件需要你指令路径。)

source ~/catkin_cs/devel/setup.bash
注:编译完成后必须使用source命令刷新一下工作空间的环境,初学时可能以为,在工作空间中进行一次source之后就一劳永逸以后都不用source了,这种看法是错的。事实是,每次进行catkin_make之后,都要进行source,但是如果怕忘记的话,也可以为该工作空间设置一个一劳永逸的方法:

在home下,找到隐藏文件 .bashrc(ctrl+h可以显示隐藏文件),然后在最后一行加入你要一直source的指令,例如source /home/你的用户名/catkin_ws/devel/setup.bash,保存该.bashrc文件,然后再重启终端,让刚刚的设置生效。

例如:

cd ~/catkin_ws/src
catkin_create_pkg test_pkg std_msgs rospy roscpp
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash

其中:std_msgs 是ros中关于消息的依赖,rospy python的依赖,cpp是c++的依赖


版权声明:本文为m0_46093829原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。