使用变体

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

1

https://wiki.debian.org/metapackage

2

https://help.ubuntu.com/community/MetaPackages

ROS 2中的不同变体在`REP-2001 <https://ros.org/reps/rep-2001.html>`_中有详细说明。

除了官方的变体外,还可能存在针对特定机构或机器人的元包,如`REP-108 <https://www.ros.org/reps/rep-0108.html#institution-specific>`_中所述。

添加变体

对于ROS社区有用的其他变体可以通过向`REP-2001提出更新的方式 <https://github.com/ros-infrastructure/rep/blob/master/rep-2001.rst>`_ 来提议。在更新中描述所包含的新变体中的软件包。机构和机器人特定的变体可以直接由各自的维护者发布,不需要对REP-2001进行更新。

创建项目特定的变体

如果您在自己的项目中创建ROS软件包供私人使用,您可以使用官方的变体作为示例来创建特定于您的项目的变体。要做到这一点,您只需要创建两个文件:

  1. 创建一个最小化变体包作为具有 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()
  1. 然后,您可以将您的变体包与其他私有包一起构建和安装。

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

有些平台提供了创建基本包的工具,不需要完整的ROS构建环境或等效基础设施。可以使用这些工具创建平台相关的变体。这种方法不包括对ROS打包工具的支持,且是平台相关的,但如果您创建的是一组现有软件包而不是公共和私有ROS软件包的混合物,则所需的基础设施要少得多。例如,在Debian或Ubuntu系统上,您可以使用 equivs 实用工具。Debian管理员手册中有一节关于 元软件包