当前位置: 首页 > news >正文

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 Apalone2017.122018.12Ubuntu 16.04/18.04非 LTS首个正式发行版,引入 DDS 中间件、基本节点通信机制。
Bouncy Bolson2018.072019.01Ubuntu 16.04/18.04非 LTS完善服务(Service)和动作(Action)通信,支持 Python 3。
Crystal Clemmys2018.122019.07Ubuntu 18.04非 LTS优化 CMake 工具链,引入ament_cmake,提升编译效率。
Dashing Diademata2019.052024.05Ubuntu 18.04LTS首个 LTS 版本,API 初步稳定,支持 Cyclone DDS,完善导航栈(Navigation2)。
Eloquent Elusor2019.112020.11Ubuntu 18.04/20.04非 LTS增强实时性(支持 PREEMPT_RT),优化参数服务器(Parameters)。
Foxy Fitzroy2020.062025.05Ubuntu 20.04LTSAPI 完全稳定,默认 DDS 为 Cyclone DDS,完善工具链(colcon、ros2cli)。
Galactic Geochelone2021.052022.11Ubuntu 20.04非 LTS引入组件节点(Component Nodes),优化分布式通信效率。
Humble Hawksbill2022.052027.05Ubuntu 22.04LTS支持 C++17/Python 3.10,优化实时性能,增强安全性(加密通信)。
Iron Irwini2023.052024.11Ubuntu 22.04非 LTS完善生命周期节点(Lifecycle Nodes),优化调试工具(ros2 doctor)。
Jazzy Jalisco2024.052025.11Ubuntu 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 完全稳定:核心库(rclrmw)接口冻结,后续版本兼容此 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 的版本迭代体现了从 “功能实现” 到 “稳定可靠” 再到 “性能优化” 的演进,选择版本时需结合项目周期、功能需求和系统环境综合判断。

http://www.dtcms.com/a/326389.html

相关文章:

  • JVM 运行时全景:从类加载到 GC 的底层原理与调优指南
  • JVM运维
  • javaJVM ‘
  • 电子电气架构 --- 软件定义汽车的驱动和挑战
  • C++多态是如何实现
  • # Java制作堆Dump
  • 学习观察和行动:机器人操作中任务-觉察的视图规划
  • 如何解决 JetBrains IntelliJ IDEA 2024.2 和 2025.2 新版本区域选择问题:key is invalid
  • 【后端】struct.pack()
  • 【昇腾】Atlas 500 A2智能小站M.2 SATA盘启动Ubuntu22.04系统CPU占用过高问题处理_20250811
  • Qt-信号和槽
  • Android16新特性速记
  • Python day 41
  • [langchian]使用langchain构建一个chatbot
  • JS深拷贝 浅拷贝、CSS垂直水平居中
  • CRM(客户关系管理)框架详解
  • 【09-神经网络介绍2】
  • 快速了解TF-IDF算法
  • 高精度蓝牙定位:技术、应用与未来发展
  • AI Copilot
  • istio如何采集method、url指标
  • Linux系统编程Day12 -- 环境变量(初识)
  • [特殊字符][特殊字符][特殊字符]【Maven】pom依赖的版本推荐与依赖冲突问题
  • C#使用EPPlus读写Excel
  • 定制化4G专网架构,满足多行业专属需求
  • 在线代码比对工具
  • HTML5中华美食网站源码
  • 布控球:临时布防场景的高清回传利器-伟博
  • 双椒派™ E2000D 开发板深度解析
  • 【Altium designer】一键添加多个器件参数的“备注”