ROS 三、工作空间和功能包


创建工作空间和功能包

一、工作空间(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功能包的路径。


文章作者: 拓佑豪
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 拓佑豪 !
评论
  目录