使用变体 [待校准@6582]

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

1

https://wiki.debian.org/metapackage

2

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

ROS 2的不同变体在 REP-2001 中具体说明。 [待校准@6586]

除了官方的变体,可能还有特定机构或机器人的元包,如 REP-108 中所述。 [待校准@6587]

添加变体 [待校准@6588]

可以通过对描述新变体中包含的包的 REP-2001 via pull request 进行更新来提出对ROS社区普遍使用的其他变体。机构和机器人特定的变体可以由它们各自的维护者直接发布,不需要更新REP-2001。 [待校准@6589]

创建项目特定的变体 [待校准@6590]

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

  1. 最小变体包被创建为具有 ament_cmake 构建类型的包, ament_cmake 上的 buildtool_depend 包和您想要包含在变体中的每个包的 exec_depend 条目。 [待校准@6592]

<?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 ,在ROS 2中 它将 package.xml 注册为使用的ament包。 [小鱼@6593]

cmake_minimum_required(VERSION 3.5)

project(my_project_variant NONE)
find_package(ament_cmake REQUIRED)
ament_package()
  1. 然后,您可以在其他私有包旁边构建和安装变体包。 [待校准@6594]

使用特定于平台的工具创建自定义变体 [待校准@6595]

某些平台具有用于创建基本包的工具,这些包不需要完整的ROS构建服务器场环境或等效的基础架构。可以使用这些工具来创建依赖于平台的变体。这种方法不包括对ROS打包工具的支持,并且依赖于平台,但是如果您要创建现有包的集合而不是公共和私有ROS包的混合,则需要更少的基础设施来生产。例如,在Debian或Ubuntu系统上,您可以使用 equivs 实用程序。Debian管理员手册有一个 Section on meta-packages[待校准@6596]