创建工作空间和功能包
一、工作空间(workspace)
工作空间可以类比为,我们新建一个工程项目,会建立一系列的文件夹目录。工作空间就是一个存放ROS工程开发相关文件的文件夹
-
src(Source Space):代码空间
放置功能包,代码,配置文件,launch文件等等
-
build(Build Space):编译空间
放置编译过程中产生的中间文件,通常不需要太关注这些文件
-
devel(Development Space):开发空间
放置编译完成的可执行文件,一些库,脚本等等,编译完成的文件会在这运行。
- 存放的是开发过程中的可执行文件
-
install(Install Space):安装空间
用install指令安装成功后的这部分文件都在这,类比Windows里的
C:\Program Files
。- 存放的是开发完成后的可执行文件
由于devel和install两个开发空间有重复,在ROS2里只保留了install space,在ros1里就还留有devel space
1.1 创建工作空间
1、创建工作空间
workspace名可以自己随便起
这里我们叫 “ros_ws”
但后面跟随的路径名,如src等名字一定要一致。
mkdir -p ~/ros_ws/src
cd ~/ros_ws/src
下面这个指令会把当前文件夹变成ros工作空间的属性
执行成功后,src目录底下会生成一个CMakeLists.txt
catkin_init_workspace
2、编译工作空间
cd ~/ros_ws/
catkin_make
执行完上述指令,会产生build空间和devel空间。
如果需要生成install工作空间,需要执行的指令是
catkin_make install
3、设置环境变量
source devel/setup.bash
4、检察环境变量
echo $ROS_PACKAGE_PATH
> 查看输出路径是否含有当前该工作环境的路径
二、功能包
2.1 创建功能包
创建代码的时候,我们一定要创建功能包。功能包是放置代码的最小单元。我们的代码吗不能直接放置在src底下编译,是不允许的。
创建功能包的指令要求是:
catkin_create_pkg <package_name> [depend 1][depend 2]...[depend n]
package_name:是功能包的名字
depend:指定功能包的依赖,可以依赖很多个
# 创建功能包
cd ~/ros_ws/src
catkin_create_pkg test_pkg std_msgs rospy roscpp
执行上述指令,就会在src里创建一个test_pkg
功能包(文件夹)
依赖:
- std_msgs:ros定义的标准消息结构
- rospy、roscpp:用python或c++开发的接口写程序。
打开test_pkg
后,可以看到有include文件夹,src文件夹,package.xml和CMakeLists.txt
-
src文件夹:所有代码开发的文件都在这
-
include文件夹:放置头文件
-
package.xml:用xml描述功能包相关信息
会存放作者email,开源许可证,版本号,以及编译依赖,运行依赖等等信息
-
CMakeLists.txt:描述功能包的编译规则,语法是cmake。
2.2 编译功能包
cd ~/ros_ws
catkin_make
source ~/ros_Ws/devel/setup.bash #设置环境变量
编译完成需要将其添加到环境变量。需要验证是否已经加入环境变量,只需要在中端运行以下指令:
echo $ROS_PACKAGE_PATH
会打印所有ROS功能包的路径。