首页 > 代码库 > ROS学习之包的概念

ROS学习之包的概念

目录

  1. 常见文件和目录
  2. 命令行工具
  3. 客户端库支持
    1. python
    2. C ++

 对于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

客户端库支持

 

ROS学习之包的概念