迁移软件包
软件包迁移有两种不同的类型:
- 将现有软件包的源代码从 ROS 1 迁移到 ROS 2,前提是大部分源代码将保持不变或至少相似。 例如 pluginlib,其源代码在同一仓库的不同分支中维护,必要时可以在这些分支之间移植通用补丁。
- 为 ROS 2 实现与 ROS 1 软件包相同或相似的功能,但假设源代码将会有显著不同。 例如 ROS 1 中的 roscpp 和 ROS 2 中的 rclcpp,它们是完全独立的仓库,不共享任何代码。
在将 ROS 1 软件包迁移到 ROS 2 之前,其所有依赖项必须在 ROS 2 中可用。
package.xml 格式版本
Section titled “package.xml 格式版本”ROS 2 仅支持 package.xml 格式版本 2 及以上。
如果你的软件包的 package.xml 使用格式 1,请使用 package.xml 格式 1 到 2 迁移指南 进行更新。
来自 rosdep 的依赖名称不需要更改,因为它们在 ROS 1 和 ROS 2 之间是共享的。
一些发布到 ROS 中的软件包在 ROS 2 中可能有不同的名称,因此可能需要相应地更新依赖项。
元软件包(Metapackages)
Section titled “元软件包(Metapackages)”ROS 2 没有为元软件包设置特殊的软件包类型。
元软件包仍然可以作为仅包含运行时依赖的常规软件包存在。
从 ROS 1 迁移元软件包时,只需删除软件包清单中的 <metapackage /> 标签即可。
有关元软件包/变体的更多信息,请参阅 使用变体。
在 ROS 1 中,我们推荐的许可证是 3-Clause BSD License。 在 ROS 2 中,我们推荐的许可证是 Apache 2.0 License。
对于任何新项目,无论是 ROS 1 还是 ROS 2,我们都推荐使用 Apache 2.0 许可证。
但是,在将代码从 ROS 1 迁移到 ROS 2 时,我们不能简单地更改许可证。 对于已有的贡献,必须保留现有许可证。
为此,如果正在迁移一个软件包,我们建议保留现有许可证,并在现有的 OSI 许可证下继续为该软件包做贡献,对于核心组件来说,我们预期这将是 BSD 许可证。
这样可以保持清晰和易于理解。
更改许可证是可能的,但你需要联系所有贡献者并获得许可。 对于大多数软件包来说,这可能是一项巨大的工作,不值得考虑。 如果软件包的贡献者数量较少,那么这可能是可行的。