ROS学习总结——关于工作空间以及功能包

工作空间(Workspace)

创建一个ROS工作空间

ROS工作空间用于存放开发的各种ROS包,下面使用的操作方法只适用于ROS Groovy及后期版本
①创建一个目录catkin_ws以及一个子目录src

$ mkdir -p ~/catkin_ws/src

②进入src目录,初始化catkin工作空间

$ cd ~/carkin_ws/src
$ catkin_init_workspace

编译一个ROS工作空间

①进入catkin_ws目录中执行指令catkin_make对工作空间进行编译

$ cd ~/catkin_ws
$ catkin_make

编译成功之后会发现在工作空间中生成了 build 、devel 文件夹。build 内是 cmake 和 make 在编译包时生成的一些配置文件。devel 文件夹用于存放安装包之前一些必要的可执行文件和库。
②添加工作空间的环境

$ source ~/catkin_ws/devel/setup.zsh			#我这里使用的是zsh终端,如果使用的是bash终端将后缀名<.zsh>更改为<.bash>
#每打开一个新的终端就要重新执行该段代码

③检查环境变量是否成功配置<可省略>

$ echo $ROS_PACKAGE_PATH
/home/gyc/catkin_ws/src:/opt/ros/kinetic/share		#这里会发现路径中存在先前所创建的目录

ROS功能包(ROS Package)

在ROS中,软件是以Package为基本单位组织的。一个Package中可能包含了可执行文件、配置文件、第三方的软件等等任何可以构成一个有用模块的东西。 把软件划分称为各个Package的一个主要目的是,降低系统的耦合度,提高代码的复用率。

一个包的组成

1.一个包里必须包含一个package.xml文件,用于说明关于包的基本信息;
2.包必须包含一个CMakeLists.txt文件;
3.一个文件夹只能存在一个包,且同一工作空间内不允许存在重名包;

包与工作空间的关系

一个包通常需要创建在一个工作空间中,也可以单独创建包
包在工作空间内的结构如图
在这里插入图片描述

创建一个 catkin Package

①切换工作目录到创建的工作空间的src目录中

$ cd ~/catkin_ws/src

②使用catkin_create_pkg <package_name> [depend1] [depend2] [depend3] 创建一个包

$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
Created file beginner_tutorials/CMakeLists.txt
Created file beginner_tutorials/package.xml
Created folder beginner_tutorials/include/beginner_tutorials
Created folder beginner_tutorials/src
Successfully created files in /home/long/catkin_ws/src/beginner_tutorials. Please adjust the values in package.xml.

执行完上述指令,则会在当前工作空间的src目录下创建一个名为 beginner_tutorials 的包。这个包包含了一个 package.xml 和 CMakeLists.txt 文件。

$ cd ~catkin_ws/src/beginner_tutorials/
$ ls
CMakeLists.txt  include  package.xml  src

包的依赖

直接依赖:一个包直接依赖的文件
简介依赖:包含依赖的文件可能还依赖别的文件
使用rospack depends1 <name>可以列出一个包/类/库直接依赖的文件
使用rospack depends <package_name>可以列出包/类/库的所有依赖

编译一个 catkin Package

①进入catkin_ws目录,使用catkin_make对工作空间进行编译

$ cd ~/catkin_ws
$ catkin_make               #没有指定参数的情况下catkin_make会对src目录下所有Package进行编译

②使用rosls查看创建的包<可省略>

$ rosls beginner_tutorials/
CMakeLists.txt  include  package.xml  src

关于package.xml文件(Format 2)

package.xml文件定义了有关软件包的一些相关属性,例如软件包名称,版本号,作者,维护者以及对其他catkin软件包的依赖关系。对于新版的ROS系统,该文件有两种版本,这里只介绍格式二。

基本结构

<package format = "2">
</package>

必要标签

为了成功构建一个Package,至少需要在标记内嵌套一组标记:
◆<name> —— 功能包的名字
◆<version> —— 功能包的版本
◆<description> —— 有关功能包的描述
◆<maintainer> —— 正在维护该功能包人员的姓名以及联系方式
◆<license> —— 用于发布代码的软件许可证(GPL,BSD,ASL…)

<package format="2">
  <name>foo_core</name>
  <version>1.2.4</version>
  <description>
  This package provides foo capability.
  </description>
  <maintainer email="ivana@osrf.org">Ivana Bildbotz</maintainer>
  <license>BSD</license>
</package>

依赖关系

用于指定该功能包与其他包之间的依赖关系。一个功能包可以具有六种依赖关系
<build_depend>

构建依赖关系(Build Dependencies):指定固件此功能包需要依赖哪些包;

<build_export_depend>

导出依赖关系(Build Export Dependencies):指定需要哪些包来针对此包构件库;

<exec_depend>

执行依赖关系(Execution Dependencies):指定运行此包中的代码需要哪些包;

<test_depend>

测试依赖关系(Test Dependencies):指定单元测试的附加依赖项;该依赖中不应该存在上面所使用过的构建或运行依赖项;

<buildtool_depend>

构建工具的依赖(Build Tool Dependencies):指定此包需要自行生成的生成系统工具,通常情况下需要的构建工具只有"catkin";

<doc_depend>

文档工具依赖项(Documentation Tool Dependencies):指定此包生成文档所需的文档工具;

<depend>

指定依赖关系是构建,导出和执行的依赖关系。

附加标签

<url> —— 添加一个链接
<author> —— 功能包的作者

文章内容包含个人理解,如有错误欢迎指出,我会及时纠正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值