ROS主流版本与适用场景建议

ROS主流版本与适用场景建议

在机器人开发中,ROS(Robot Operating System)是当前最流行的开发框架。随着ROS 1和ROS 2的推出,开发者可以选择不同的ROS版本来满足各种需求。ROS的版本与操作系统(如Ubuntu版本)以及Linux内核的兼容性密切相关。本文将探讨ROS 1和ROS 2的主要版本、生命周期以及如何根据Ubuntu版本和Linux内核选择最合适的组合,并提供一些具体的应用场景建议。


1. ROS 版本概览与支持情况

ROS 1 版本

ROS 1已经存在多年,虽然ROS 2逐渐成为未来的方向,但ROS 1仍然在很多老旧项目中被广泛使用。以下是ROS 1的主要版本及其维护状态:

版本 发布日期 EOL(结束维护日期) 支持的Ubuntu版本
ROS Noetic 2020年5月23日 2025年5月(Ubuntu 20.04 LTS支持) Ubuntu 20.04 LTS
ROS Melodic 2018年5月23日 2023年6月27日 Ubuntu 18.04 LTS
ROS Lunar 2017年5月23日 2019年5月 Ubuntu 16.04 LTS
ROS Kinetic 2016年5月23日 2021年4月 Ubuntu 16.04 LTS

维护状态:

  • ROS 1 Noetic 是目前支持的最新LTS版本,维护至 2025年5月。是开发长期稳定项目时的推荐版本。
  • ROS 1 Melodic 已于 2023年6月结束维护,不推荐用于新项目,但仍可用于现有项目的维护。
  • ROS 1 KineticLunar 版本已停止维护,除非必须在遗留项目中使用,否则不推荐。

ROS 2 版本

ROS 2是ROS 1的继任者,强调实时性、分布式系统支持和更好的跨平台支持。随着ROS 2的逐步发展,很多版本已经进入了EOL(生命周期结束)。以下是ROS 2版本的详细维护状态:

版本 发布日期 EOL(结束维护日期) 维护者
ROS 2 Jazzy 2024年5月23日 2029年5月 Marco A. Gutiérrez
ROS 2 Iron 2023年5月23日 2024年12月4日 Yadunund Vijay
ROS 2 Humble 2022年5月23日 2027年5月 Audrow Nash
ROS 2 Galactic 2021年5月23日 2022年12月9日 Scott Logan
ROS 2 Foxy 2020年6月5日 2023年6月20日 Jacob Perron / Dharini Dutia
ROS 2 Eloquent 2019年11月22日 2020年11月 Michael Carroll
ROS 2 Dashing 2019年5月31日 2021年5月 Steven! Ragnarök

维护状态:

  • ROS 2 Jazzy(即 Jazzy Jalisco)是即将发布的下一个LTS版本,计划支持到 2029年5月,适合长期使用。
  • ROS 2 Iron 目前仍然有效,但计划于 2024年12月4日停止维护,适合短期项目或准备迁移至更新版本的用户。
  • ROS 2 Humble 是当前的LTS版本,计划支持到 2027年5月,非常适合长期项目开发。
  • ROS 2 FoxyROS 2 Galactic 已经结束维护,不推荐用于新项目。

2. Ubuntu版本与Linux内核的关系

ROS版本与Ubuntu版本的兼容性非常重要。Ubuntu LTS(长期支持版)是机器人开发中最常用的操作系统,且具有较长的支持期。以下是主要的Ubuntu版本及其支持的Linux内核版本:

  • Ubuntu 20.04 LTS(支持Linux内核5.4及以上)

    • 推荐搭配 ROS 1 NoeticROS 2 FoxyROS 2 Galactic
  • Ubuntu 22.04 LTS(支持Linux内核5.15及以上)

    • 推荐搭配 ROS 2 HumbleROS 2 Iron,并且支持 ROS 2 Jazzy

注意: 如果你使用的是ROS 1版本,建议选择Ubuntu 20.04 LTS,因为这是ROS 1 Noetic的官方支持版本。如果使用ROS 2,Ubuntu 22.04 LTS更适合使用较新的ROS 2版本,如 HumbleIron


3. ROS与Ubuntu版本的最佳匹配

选择ROS 1的场景(需要稳定性)

  • 长期稳定的项目:如一些商业化或已部署的系统,使用ROS 1的Noetic版本与Ubuntu 20.04 LTS相结合,能够确保系统的稳定性和长期支持。
  • 不需要实时性要求:如果项目对实时性要求较低,但需要高度稳定的框架(例如一些小型机器人或学术研究项目),使用ROS 1仍然是一个较好的选择。
  • 需要兼容性与现有软件:ROS 1有着较为成熟的生态和大量的第三方库,很多已经开发的工具和库都只兼容ROS 1。

选择ROS 2的场景(需要最新特性)

  • 实时性要求较高的项目:ROS 2专注于支持实时操作系统,适合要求精确控制和响应时间的项目,如工业自动化、无人驾驶等。
  • 分布式或跨平台应用:ROS 2的分布式架构使其非常适合需要多个节点协作或跨平台部署的场景(如Windows、Linux或Mac系统共存的场景)。
  • 未来可扩展性:如果项目的需求可能会随着时间的推移而增加(例如扩展到云端或集成更多的传感器和控制器),ROS 2的更高灵活性和模块化架构提供了更好的支持。
  • 使用较新的硬件:ROS 2支持更多的现代硬件接口和新技术(例如DDS通信中间件),因此适合最新硬件平台的开发。

不推荐的选择(已经不再维护的版本)

  • ROS 1的老版本:如ROS 1的KineticMelodic版本,虽然这些版本在过去被广泛使用,但它们已经逐渐不再得到社区支持。除非项目已经有现成的ROS 1代码,否则不推荐使用过时的版本。
  • ROS 2的已停止维护版本:如DashingEloquentGalactic版本,这些版本已经停止维护,不再接收安全更新和功能改进,因此不推荐选择这些版本进行新项目开发。

4. 总结与推荐

场景 推荐的ROS版本 推荐的Ubuntu版本 推荐的Linux内核版本
需要稳定性的项目 ROS 1 Noetic Ubuntu 20.04 LTS Linux 5.4及以上
实时性要求高的项目 ROS 2 Humble/Iron Ubuntu 22.04 LTS Linux 5.15及以上
跨平台分布式应用 ROS 2 Humble/Iron Ubuntu 22.04 LTS Linux 5.15及以上
长期维护且稳定的系统 ROS 1 Noetic Ubuntu 20.04 LTS Linux 5.4及以上

关键建议:

  • ROS 1 NoeticROS 2 Humble/Iron 是目前推荐的稳定版本,适合长期维护和开发。
  • 对于需要实时性、分布式功能或跨平台支持的应用,ROS 2 HumbleROS 2 Iron 版本是最佳选择,特别是 Humble 是一个LTS版本,适合长期使用。
  • 避免使用 ROS 2 DashingEloquentGalactic 等已停止维护的版本,除非是为了兼容旧项目。