使用变体

元包不直接提供软件,而是依赖于一组其他相关包,为整个包组提供方便的安装机制。[1] [2] 变体是常用 ROS 包组的官方元包列表。

ROS 2 中的不同变体在 REP-2001 中指定。

除了官方变体之外,可能还有针对特定机构或机器人的元包,如 REP-108 中所述。

添加变体

可以通过拉取请求 <https://github.com/ros-infrastructure/rep/blob/master/rep-2001.rst>`_ 向 `REP-2001 贡献更新来提议 ROS 社区普遍使用的其他变体,该请求描述了新变体中包含的软件包。 机构和机器人特定变体可以由其各自的维护者直接发布,无需更新 REP-2001。

创建项目特定变体

如果您要创建 ROS 软件包以在自己的项目中私下使用,则可以使用官方变体作为示例创建特定于您项目的变体。 为此,您只需创建两个文件:

#.最小变体包被创建为一个具有“ament_cmake”构建类型的包,在“ament_cmake”上有“buildtool_depend”,并且在变体中包含每个包的“exec_depend”条目。

<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format2.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="2">
  <name>my_project_variant</name>
  <version>1.0.0</version>
  <description>A package to aggregate all packages in my_project.</description>
  <maintainer email="maintainer-email">Maintainer Name</maintainer>
  <license>Apache License 2.0</license>
  <!-- packages in my_project -->
  <exec_depend>my_project_msgs</exec_depend>
  <exec_depend>my_project_services</exec_depend>
  <exec_depend>my_project_examples</exec_depend>

  <export>
    <build_type>ament_cmake</build_type>
  </export>
</package>
  1. 最小的 ament_cmake 包包含一个“CMakeLists.txt”,它将 package.xml 注册为 ament 包以供在 ROS 2 中使用。

    cmake_minimum_required(VERSION 3.5)
    
    project(my_project_variant NONE)
    find_package(ament_cmake REQUIRED)
    ament_package()
    

然后,您可以构建并安装变体包以及其他私有包。

使用平台特定工具创建自定义变体

某些平台具有用于创建基本包的工具,这些包不需要完整的 ROS 构建农场环境或等效基础设施。 可以使用这些工具创建依赖于平台的变体。 这种方法不包括对 ROS 打包工具的支持,并且依赖于平台,但如果您创建的是现有包的集合,而不是公共和私有 ROS 包的混合,则需要的基础设施要少得多。 例如,在 Debian 或 Ubuntu 系统上,您可以使用“equivs”实用程序。 Debian 管理员手册有一个“关于元包的部分<https://www.debian.org/doc/manuals/debian-handbook/sect.building-first-package.en.html#id-1.18.5.2>”_。