迁移包
有两种不同类型的软件包迁移:
将现有软件包的源代码从 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 许可证。
这将使事情变得清晰易懂。
更改许可证
可以更改许可证,但您需要联系所有贡献者并获得许可。 对于大多数软件包来说,这可能是一项重大工作,不值得考虑。 如果软件包的贡献者很少,那么这可能是可行的。