迁移包

有两种不同类型的软件包迁移:

  • 将现有软件包的源代码从 ROS 1 迁移到 ROS 2,目的是使源代码的很大一部分保持不变或至少相似。

例如 pluginlib,其中源代码在同一存储库中的不同分支中维护,并且可在必要时在这些分支之间移植通用补丁。 * 为 ROS 2 实现与 ROS 1 软件包相同或相似的功能,但假设源代码会有很大不同。 例如 ROS 1 中的 roscpp 和 ROS 2 中的 rclcpp,它们是独立的存储库,不共享任何代码。

先决条件

在将 ROS 1 包迁移到 ROS 2 之前,其所有依赖项都必须在 ROS 2 中可用。

Package.xml 格式版本

ROS 2 仅支持 package.xml 格式版本 2 及更高版本。

如果您的包的 package.xml 使用格式 1,则使用 Package.xml 格式 1 到 2 迁移指南 对其进行更新。

依赖项名称

来自 rosdep 的依赖项名称不需要更改,因为它们在 ROS 1 和 ROS 2 之间共享。

发布到 ROS 中的某些包在 ROS 2 中可能具有不同的名称,因此可能需要相应地更新依赖项。

元包

ROS 2 没有针对元包的特殊包类型。 元包仍然可以作为仅包含运行时依赖项的常规包存在。 从 ROS 1 迁移元包时,只需删除包清单中的 <metapackage /> 标签。 有关元包/变体的更多信息,请参阅 使用变体

许可

在 ROS 1 中,我们推荐的许可证是 3-Clause BSD 许可证。 在 ROS 2 中,我们推荐的许可证是 Apache 2.0 许可证

对于任何新项目,我们建议使用 Apache 2.0 许可证,无论是 ROS 1 还是 ROS 2。

但是,在将代码从 ROS 1 迁移到 ROS 2 时,我们不能简单地更改许可证。 必须为任何预先存在的贡献保留现有许可证。

为此,如果要迁移软件包,我们建议保留现有许可证并继续在现有 OSI 许可证下为该软件包做出贡献,我们希望该许可证是核心元素的 BSD 许可证。

这将使事情变得清晰易懂。

更改许可证

可以更改许可证,但您需要联系所有贡献者并获得许可。 对于大多数软件包来说,这可能是一项重大工作,不值得考虑。 如果软件包的贡献者很少,那么这可能是可行的。