天天看点

ROS机器人程序设计(原书第2版)2.1.2 功能包

<b>2.1.2 功能包</b>

功能包指的是一种特定的文件结构和文件夹组合。这种结构如下所示:

include/package_name/:此目录包含了你需要的库的头文件。

msg/:如果你要开发非标准消息,请把文件放在这里。

scripts/:其中包括bash、python或任何其他脚本的可执行脚本文件。

src/:这是存储程序源文件的地方。你可能会为节点创建一个文件夹或按照你希望的方式去组织它。

srv/:这表示服务(srv)类型。

cmakelists.txt:这是cmake的生成文件。

package.xml:这是功能包清单文件。

为了创建、修改或使用功能包,ros给我们提供了一些工具:

rospack使用此命令来获取信息或在系统中查找工作空间。

catkin_create_pkg 当你想要创建一个新的功能包时,使用此命令。

catkin_make 使用此命令来编译工作空间。

rosdep 此命令安装功能包的系统依赖项。

rqt_dep:这个命令用来查看包的依赖关系图。如果你想看包的依赖关系图,你会在rqt发现一个称为包图(package graph)插件。选择一个包并查看依赖关系。

若要在文件夹和功能包之间移动文件,ros提供了非常有用的rosbash功能包,其中包含了一些非常类似于linux命令的命令。例如:

roscd 此命令用于更改目录,类似于linux中的cd命令。

rosed 此命令用来编辑文件。

roscp 此命令用于从一些功能包复制文件。

rosd 此命令列出功能包的目录。

rosls 此命令列出功能包下的文件,类似于linux中的ls命令。

文件package.xml必须在功能包中,用来说明此功能包相关的各类信息。如果你发现在某个文件夹内包含此文件,那么这个文件夹很可能是一个功能包或综合功能包。

打开一个package.xml文件,可以看到包的名称、依赖关系等信息。功能包清单的作用就是为了更容易地安装和分发这些功能包。

在package.xml文件中使用的两个典型标记是&lt;build_depend&gt;和&lt;run_depend&gt;。

&lt;build_depend&gt;标记会显示当前功能包安装之前必须先安装哪些功能包。这是因为新的功能包会使用其他包的一些功能。

&lt;run_depend&gt;标记显示运行功能包代码所需要的包。右面截图是package.xml文件的示例。

继续阅读