对于rosbuild,请参阅:rosbuild / Packages
ROS中的软件以包的形式组织。软件包可能包含ROS 节点,与ROS无关的库,数据集,配置文件,第三方软件或逻辑上构成有用模块的任何其他内容。这些包的目标是以易于消费的方式提供这种有用的功能,以便软件可以轻松重用。一般来说,ROS包遵循“Goldilocks”原则:足够的功能是有用的,但不是太多,因为该包是重量级的,难以从其他软件使用。
软件包很容易用手工制作,或者像catkin_create_pkg这样的工具。一个ROS包就是一个从ROS_PACKAGE_PATH(见ROS环境变量)中下载的一个目录,其中包含一个package.xml文件。包是最小单元。这意味着一个包是您可以在ROS中构建的最小的单独的东西,它是软件捆绑发行的方式(例如,每个ROS包都有一个debian包)。
有关如何读取和写入package.xml文件的文档,请参阅catkin / package.xml部分。
常见文件和目录
ROS包往往遵循一个共同的结构。以下是您可能注意到的一些目录和文件。
-
include / package_name:C ++包含头(确保在CMakeLists.txt中导出)
-
msg /:包含消息(msg)类型的文件夹
-
src / package_name /:源文件,特别是导出到其他包的Python源代码。
-
srv /:包含Service(srv)类型的文件夹
-
scripts /:可执行脚本
-
CMakeLists.txt:CMake构建文件(参见catkin / CMakeLists.txt)
-
package.xml:package catkin / package.xml
-
CHANGELOG.rst:许多软件包将定义一个可以自动注入到二进制打包中并进入wiki页面的更改日志
命令行工具
软件包是ROS文件如何组织的一个非常核心的概念,所以在ROS中有很多工具可以帮助您管理它们。这包括:
-
rospack:查找和检索有关包的信息
-
catkin_create_pkg:创建一个新的包
-
catkin_make:构建包的工作区
-
rosdep:安装包的系统依赖项
-
rqt:在rqt中有一个名为“Introspection / Package Graph”的插件,它将包的依赖性视为图形
还有一些常见的Unix shell的扩展,可以提供额外的功能来帮助您导航和使用软件包。最常用的是rosbash,它提供常见的Unix shell命令的ROS变体。最常用的是roscd,它执行cd到包的目录,例如
roscd roscpp_tutorials
客户端库支持