使用变体
元软件包不直接提供软件,而是依赖于一组其他相关软件包,以便为完整的软件包组提供便捷的安装机制。1 2 变体是一组常用的 ROS 软件包的官方元软件包列表。
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软件包供私人使用,您可以使用官方的变体作为示例来创建特定于您的项目的变体。要做到这一点,您只需要创建两个文件:
创建一个最小化变体包作为具有
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>
一个最小化的 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()
然后,您可以将您的变体包与其他私有包一起构建和安装。