系列文章目录
[ROS]一、ROS的基本概念
[ROS]二、命令与工具的使用
前言
在前两个章节中我们已经学习了ros相关基本概念和基本工具的使用,今天我们来学习,ros工作空间的建立。工作空间就是存放一个工程开发相关文件的文件夹,类似于stm32中工程的创建。
一、工作空间
工作空间是存放工程中的所有配置文件的文件夹,在工作空间中主要包含四个文件夹:
- src:存放代码的文件夹(source space)
- build:存放编译生成的中间文件,不需要特别关注这个文件夹(Build Space)
- devel:开发空间,存放编译生成的可执行文件、库、脚本,编译生成的文件都是在这运行的(Development Space)
- install:安装空间,这个需要手动添加(不加也可以)(Install Space)
工作空间的第一层的结构如图。
二、创建步骤
1.命令
mkdir -p ~/catkin_ws_me/src #这个命令是创建文件的,-p代表文件夹下还可以生成子文件夹,catkin_ws_me/src表示生成文件夹catkin_ws_me,且在生成的catkin_ws_me下又生成了src
cd ~/catkin_ws_me/src #切换到~/catkin_ws_me/src目录,“~”代表根目录的意思
catkin_init_workspace #初始化工作空间,将文件夹变成工作空间,属性上的变化
cd ~/catkin_ws_me #切换路径
catkin_make #编译工作空间
source devel/setup.bash #设置环境变量,如同win10下的添加环境变量,系统才能找到这个目录,不过只能在当前的终端生效,当打开新的终端的时候需要再执行这条命令。为了避免麻烦,下面将会介绍一个一劳永逸的方法。
echo $ROS_PACKAGE_PATH #检查环境变量是否设置成功(即打印设置的环境变量到终端上)
执行到这个命令时catkin_init_workspace,将会生成如下图的文件,说明初始化成功了。
接下来我们来编译工作空间,就如同在其他的IDE中的编译一样,只不过这里是使用命令来完成的,注意的是编译的时候路径必须要切换到工作空间的根目录此下。执行编译命令后,没有报错代表编译成功。
如果先要创建install目录的话可以执行命令,注意也在工作空间的根目录下执行的:
catkin_make install
2.创建功能包
功能包是放在src文件夹下的,注意:同一个工作空间下,不允许存在同名的功能包,在不同的工作空间下允许同名的功能包。
创建功能包之后的目录结构为:
创建功能包的命令格式:
catkin_create_pkg <功能包名称> [依赖1][依赖2][依赖3]
创建功能包的命令:
cd ~/catkin_ws_me/src
catkin_create_pkg test_pkg std_msgs rospy roscpp
编译功能包:
cd ~/catkin_ws_me
catkin_make
source ~/catkin_ws_me/devel/setup.bash #设置环境变量
在src目录下生成了功能包test_pkg
在功能包test_pkg下有如下的文件和文件夹,文件夹include是存放功能包的头文件,比如C++的头文件,src是存放功能包代码的地方;文件CMakeLists.txt和package.xml是每一个功能包必须要有的文件,是功能包的标志。
完成以上操作可以用cd命令返回工作空间的根目录进行编译,检查是否有错误。
cd ~/catkin_ws_me
catkin_make
执行echo $ROS_PACKAGE_PATH 命令将会打印出你设置的所用环境变量。
为了避免每次打开一个新的终端都必须要source一下可以在home目录下按ctr+h快捷键显示隐藏的文件,找到.bashrc文件
双击打开,在最后面添加source ~/catkin_ws_me/devel/setup.bash如图,点击保存退出即可。
CMakeLists.txt描述的是功能包代码编译的规则,语法是cmake的语法。
下面的代码是这个功能包所需要的依赖库、功能包、头文件等。
find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs )
在下一章节中将会介绍如何修改CMakeLists.txt文件使得代码能够成功编译