使用变体 [待校准@6582]
元包不直接提供软件,而是依靠一组其他相关包为整个包组提供方便的安装机制。1 变体是一个官方元包的列表,用于常用的ROS包组。 [待校准@6583]
ROS 2的不同变体在 REP-2001 中具体说明。 [待校准@6586]
除了官方的变体,可能还有特定机构或机器人的元包,如 REP-108 中所述。 [待校准@6587]
添加变体 [待校准@6588]
可以通过对描述新变体中包含的包的 REP-2001 via pull request 进行更新来提出对ROS社区普遍使用的其他变体。机构和机器人特定的变体可以由它们各自的维护者直接发布,不需要更新REP-2001。 [待校准@6589]
创建项目特定的变体 [待校准@6590]
如果要创建ROS包以在您自己的项目中私下使用,则可以使用官方变体作为示例来创建特定于您的项目的变体。为此,您只需要创建两个文件: [待校准@6591]
最小变体包被创建为具有
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>
最小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()
然后,您可以在其他私有包旁边构建和安装变体包。 [待校准@6594]
使用特定于平台的工具创建自定义变体 [待校准@6595]
某些平台具有用于创建基本包的工具,这些包不需要完整的ROS构建服务器场环境或等效的基础架构。可以使用这些工具来创建依赖于平台的变体。这种方法不包括对ROS打包工具的支持,并且依赖于平台,但是如果您要创建现有包的集合而不是公共和私有ROS包的混合,则需要更少的基础设施来生产。例如,在Debian或Ubuntu系统上,您可以使用 equivs
实用程序。Debian管理员手册有一个 Section on meta-packages 。 [待校准@6596]