ROS2不同版本的区别
ROS2 版本演进
ROS2(Robot Operating System 2)作为面向机器人开发的开源框架,其发行版遵循字母顺序 + 动物命名规则,且分为长期支持版(LTS) 和短期支持版(非 LTS)。LTS 版本支持周期长(通常 5 年),适合生产环境;非 LTS 版本支持 6-12 个月,适合开发和尝鲜。以下从版本概述、核心区别对比、关键版本特性三个维度详细说明。
一、ROS2 发行版基本概述
-
命名规则:按字母顺序命名,每个版本对应一种动物(如 Ardent Apalone、Foxy Fitzroy 等)。
-
支持周期:LTS 版本支持 5 年(与 Ubuntu LTS 同步),非 LTS 版本支持 6-12 个月。
-
依赖系统:主要适配 Ubuntu(如 Ubuntu 20.04 对应 Foxy,22.04 对应 Humble),同时逐步完善对 Windows、macOS、ROS 2 for Embedded Linux(REP 2000)的支持。
-
核心目标:从早期版本的功能探索,到 LTS 版本的稳定性优化,逐步提升实时性、分布式能力、跨平台兼容性和工具链成熟度。
二、主要版本核心区别对比表
版本名称 | 发布时间 | 支持截止时间 | 对应 Ubuntu 版本 | 类型 | 核心特性亮点 |
---|---|---|---|---|---|
Ardent Apalone | 2017.12 | 2018.12 | Ubuntu 16.04/18.04 | 非 LTS | 首个正式发行版,引入 DDS 中间件、基本节点通信机制。 |
Bouncy Bolson | 2018.07 | 2019.01 | Ubuntu 16.04/18.04 | 非 LTS | 完善服务(Service)和动作(Action)通信,支持 Python 3。 |
Crystal Clemmys | 2018.12 | 2019.07 | Ubuntu 18.04 | 非 LTS | 优化 CMake 工具链,引入ament_cmake ,提升编译效率。 |
Dashing Diademata | 2019.05 | 2024.05 | Ubuntu 18.04 | LTS | 首个 LTS 版本,API 初步稳定,支持 Cyclone DDS,完善导航栈(Navigation2)。 |
Eloquent Elusor | 2019.11 | 2020.11 | Ubuntu 18.04/20.04 | 非 LTS | 增强实时性(支持 PREEMPT_RT),优化参数服务器(Parameters)。 |
Foxy Fitzroy | 2020.06 | 2025.05 | Ubuntu 20.04 | LTS | API 完全稳定,默认 DDS 为 Cyclone DDS,完善工具链(colcon、ros2cli)。 |
Galactic Geochelone | 2021.05 | 2022.11 | Ubuntu 20.04 | 非 LTS | 引入组件节点(Component Nodes),优化分布式通信效率。 |
Humble Hawksbill | 2022.05 | 2027.05 | Ubuntu 22.04 | LTS | 支持 C++17/Python 3.10,优化实时性能,增强安全性(加密通信)。 |
Iron Irwini | 2023.05 | 2024.11 | Ubuntu 22.04 | 非 LTS | 完善生命周期节点(Lifecycle Nodes),优化调试工具(ros2 doctor)。 |
Jazzy Jalisco | 2024.05 | 2025.11 | Ubuntu 24.04 | 非 LTS | 支持 C++20,默认 DDS 为 Fast DDS,增强 AI/ML 集成工具(如 TensorRT 支持)。 |
三、关键版本特性详解
1. 早期非 LTS 版本(探索阶段)
-
Ardent Apalone(2017):ROS2 的第一个正式版本,奠定核心架构。支持基本的发布 - 订阅(Pub-Sub) 通信,依赖 DDS 中间件(默认 Fast RTPS),但 API 不稳定,工具链简陋(无成熟的
colcon
编译工具)。 -
Bouncy Bolson(2018):完善通信模型,新增服务(Service) 和动作(Action) 机制(动作用于长周期任务,如导航路径跟踪)。首次全面支持 Python 3,逐步替代 Python 2。
-
Crystal Clemmys(2018):优化开发工具链,引入
ament_cmake
构建系统(替代传统 CMake),提升跨包依赖管理效率。开始支持 Windows 平台,但兼容性有限。
2. 首个 LTS 版本:Dashing Diademata(2019)
作为 ROS2 的第一个长期支持版,Dashing 标志着框架从 “实验” 走向 “可用”:
-
API 初步稳定:核心接口(如
rclcpp
/rclpy
)基本固定,减少后续版本的破坏性更新。 -
导航栈起步:Navigation2 包首次在 ROS2 中稳定运行,支持机器人路径规划、避障等基础功能。
-
DDS 多样化:除默认 Fast RTPS 外,新增对 Cyclone DDS 的支持(轻量级,适合嵌入式)。
-
局限性:实时性能较弱,无加密通信支持,工具链(如
ros2cli
)功能简单。
3. 成熟 LTS 版本:Foxy Fitzroy(2020)
Foxy 是 ROS2 的里程碑版本,被工业界广泛采用:
-
API 完全稳定:核心库(
rcl
、rmw
)接口冻结,后续版本兼容此 API,降低升级成本。 -
默认 DDS 优化:将 Cyclone DDS 设为默认(替代 Fast RTPS),提升低资源设备兼容性。
-
工具链完善:
colcon
编译工具成熟,ros2cli
支持节点列表、话题查看、参数修改等实用功能。 -
跨平台增强:完善 Windows 10 和 macOS 支持,可在非 Ubuntu 系统中稳定运行。
4. 最新 LTS 版本:Humble Hawksbill(2022)
Humble 是当前生产环境的首选版本,支持至 2027 年:
-
语言与系统升级:支持 C++17(提升代码效率)和 Python 3.10,适配 Ubuntu 22.04(长期支持至 2032 年)。
-
实时性能优化:通过
ros2_realtime
包增强对 PREEMPT_RT 内核的支持,满足机器人实时控制需求(如机械臂关节控制)。 -
安全性增强:支持 DDS-Security(加密通信、身份认证),适合多机器人协作或敏感场景。
-
生态扩展:集成更多成熟功能包(如 SLAM Toolbox、MoveIt 2),降低开发门槛。
5. 近期非 LTS 版本(功能迭代)
-
Galactic Geochelone(2021):引入组件节点(Component Nodes),支持动态加载 / 卸载节点,提升模块化能力;优化分布式通信的 QoS(服务质量)配置。
-
Iron Irwini(2023):完善生命周期节点(Lifecycle Nodes),支持节点状态管理(如 “未配置 - 活跃 - 关闭” 状态切换);增强调试工具
ros2 doctor
,可自动检测系统依赖和配置问题。 -
Jazzy Jalisco(2024):紧跟技术趋势,支持 C++20 和 Python 3.12;默认 DDS 切换为 Fast DDS(性能更强);新增 AI/ML 集成工具,支持 TensorRT 加速推理,适配机器人视觉和决策场景。
四、版本选择建议
-
生产环境:优先选择 LTS 版本(如 Humble Hawksbill),支持周期长、稳定性高,且社区文档和问题解决方案丰富。
-
开发验证:若需尝鲜新功能(如 AI 集成、动态节点),可选择最新非 LTS 版本(如 Jazzy Jalisco),但需注意支持周期,避免项目中期版本过期。
-
系统适配:需与 Ubuntu 版本匹配(如 Ubuntu 20.04 选 Foxy,22.04 选 Humble,24.04 选 Jazzy),减少兼容性问题。
-
迁移成本:从旧版本升级时,需关注 API 变化(如 Foxy 到 Humble 无破坏性更新,可平滑迁移;但早期版本升级可能需修改代码)。
ROS2 的版本迭代体现了从 “功能实现” 到 “稳定可靠” 再到 “性能优化” 的演进,选择版本时需结合项目周期、功能需求和系统环境综合判断。