ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ROS从入门到放弃第三篇(创建工作空间和功能包)

2021-09-18 23:31:25  阅读:277  来源: 互联网

标签:src 功能 第三篇 catkin 入门 文件夹 空间 ROS


前面两篇文章大概了解了一下ROS的基本概念和如何使用命令行工具。这一篇文章我们大概聊一聊如何创建工作空间与功能包。

3.1 创建工作空间与功能包

工作空间(workspace)是一个存放工程开发相关文件的文件夹:

  1. src:代码空间(Source Space)用于放置功能包。
  2. build:编译空间(Build Space)用于放置编译过程中产生的中间文件。
  3. devel:开发空间(Development Space)用于放置编译生成的可执行文件。
  4. install:安装空间(Install Space)用install指令安装的东西存放在这里。

ps:开发空间和安装空间里面的内容有一定重复,所以ROS2里面做了一些修正,只保留了安装空间。

3.1.1 创建工作空间:

  1. 打开终端输入以下指令来创建文件夹:
    mkdir catkin_ws
    

    可以看到上图出现了名为“catkin_ws”的文件夹 

  2. 先输入以下指令定位到catkin_ws文件夹:

    cd catkin_ws/

    然后输入如下指令创建src文件夹:

    mkdir src

    如上图我们看到了名为“src”的文件夹。

  3. 先输入以下指令定位到catkin_ws文件夹:

    cd src/

    然后输入如下指令把src文件初始化成ROS的工作空间:

    catkin_init_workspace

    确认之后会出现这样的一个txt文件,说明当前这个路径已经成为了ROS的工作空间了。

  4. 先输入如下指令回到上一级:

    cd ..

    然后输入如下指令进行编译:

    catkin_make

    我们可以看到产生了编译空间和开发空间,但是没有安装空间,我们需要另外运行一个命令来产生:

    catkin_make install

    现在四个文件夹就齐全了。

3.1.2 创建功能包:

功能包是放置ROS源码的最下单元,创建代码的时候一定要先创建功能包,所有的源码必须放在功能包下面,不能直接放在src文件夹下面去编译。

同一个工作空间下,不允许存在同名功能包;不同工作空间下,允许存在同名功能包。

创建功能包的指令为:

catkin_create_pkg<package_name>[depend1][depend2][depend3]
  1. 首先我们通过上面的方法定位到src文件夹,然后再输入如下指令创建功能包:
    catkin_create_pkg test_pkg std_msgs rospy roscpp

     运行结果如上图 

     在src文件下我们可以看到生成了对应名字的功能包

     

  2. 通过上述方法回到catkin_ws文件夹,输入如下指令编译功能包:

    catkin_make

     

3.1.3 运行程序

  1. 要运行功能包里面的某个程序的话,我们需要先设置以下工作空间的环境变量,在catkin_ws终端下输入如下指令:
    source devel/setup.bash

    只有设置了环境变量我们才能让系统找到我们的工作空间,并且找到工作空间下对应的功能包。我们可以输入如下指令来查看环境变量:

    echo $ROS_PACKAGE_PATH

    说明一下:ROS_PACKAGE_PATH是ROS本身的环境变量,它会通过这个环境变量来查找一下所有ROS功能包里面的路径。

     可以看到只要把功能包放在src文件下面,系统就可以通过环境变量找到功能包。所以环境变量设置是非常重要的。

3.1.4 讲解功能包下面的两个重要文件

  •  package.xml

我们打开这个文件,下面对一些信息已经做好了标注。

 

 所以我们如果一开始依赖信息没填好的话可以在这里进行扩展。

  • CMakeLists.txt

这个文件主要用来描述功能包的编译规则,后续会讲解怎么修改这个文件来让代码成功编译。

标签:src,功能,第三篇,catkin,入门,文件夹,空间,ROS
来源: https://blog.csdn.net/lightningwl/article/details/120318687

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有