使用变体
元包不直接提供软件,而是依赖于一组其他相关包,为整个包组提供方便的安装机制。[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>
最小的 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>”_。