更喜欢哪个风格呢?
ROS2 Jazzy Jalisco(2024年5月发布)与Kilted Kaiju(2025年5月发布)版本对比分析:Jazzy为长期支持版(LTS),提供5年稳定支持,适合生产环境;Kilted为短期支持版,仅支持1.5年,但引入新功能如动作自省、DDS主题实例等。Jazzy推荐Gazebo Harmonic集成,强化DDS安全特性;Kilted可能升级至Gazebo Ionic,支持更复杂仿真。开发工具方面,Jazzy优化RViz2和ROSCLI;Kilted新增Rust支持、进度条等功能。建议根据项目需求选择:稳定性优先选Jazzy,技术前沿选Kilted。

低情商:ROS1已经停更;
高情商:ROS1已经稳定。
对比
ROS 2 Jazzy Jalisco(第十版)与 Kilted Kaiju(第十一版)对比分析
一、版本定位与支持周期
| 维度 | Jazzy Jalisco | Kilted Kaiju |
|---|---|---|
| 版本类型 | 长期支持版(LTS) | 短期支持版(常规版) |
| 发布时间 | 2024年5月23日 | 2025年5月23日 |
| 支持周期 | 至2029年5月(约5年) | 至2026年11月(约1年半) |
| 适用场景 | 生产环境、企业级项目、需要长期稳定性的工业应用 | 需要最新功能、实验性项目或前沿研究 |
二、核心功能对比
1. 平台兼容性
- Jazzy Jalisco:
- 一级支持平台:Ubuntu 24.04(amd64/arm64)、Windows 10(VS2019,amd64)。
- 二级支持平台:RHEL 9(amd64)。
- 三级支持平台:macOS(amd64)、Debian Bookworm(amd64)。
- Kilted Kaiju:
- 继承Jazzy的平台支持,并可能扩展对Windows 11、macOS ARM架构的支持(需验证)。
- 强化对嵌入式平台的优化,如Raspberry Pi 5等。
2. 模拟器集成
- Jazzy Jalisco:
- 推荐与Gazebo Harmonic深度集成,提供
gz_*_vendor包简化安装流程。 - 支持ROSBag记录服务调用,解决故障调试难题。
- 推荐与Gazebo Harmonic深度集成,提供
- Kilted Kaiju:
- 可能引入Gazebo Ignition(现为Gazebo Fortress)作为新推荐模拟器,支持更复杂的物理仿真。
- 优化ROSBag选择性记录功能,支持按主题类型过滤(如仅记录图像数据)。
3. 开发工具链
- Jazzy Jalisco:
- RViz2新增基于正则表达式的TF过滤器、主题频率状态栏、键盘重置时间等功能。
- ROS CLI支持自定义日志文件、QoS设置、服务客户端数量统计等。
- Kilted Kaiju:
- RViz2可能支持3D模型动态加载、AR/VR可视化等前沿功能。
- ROS CLI引入交互式调试模式,支持实时修改节点参数。
4. 性能与安全性
- Jazzy Jalisco:
- 强化DDS安全特性(身份验证、加密、访问控制)。
- 优化多线程处理,降低CPU占用率。
- Kilted Kaiju:
- 可能引入DDS-XRCE协议,支持低带宽、高延迟网络环境(如5G边缘计算)。
- 新增安全审计日志,记录所有敏感操作(如服务调用、参数修改)。
三、生态与社区支持
| 维度 | Jazzy Jalisco | Kilted Kaiju |
|---|---|---|
| 文档成熟度 | 完善,覆盖核心功能与常见问题 | 逐步完善,部分新功能可能缺乏详细教程 |
| 第三方包支持 | 稳定,主流包(如Navigation2、MoveIt2)均已适配 | 逐步适配,部分新包可能仅支持最新版本 |
| 社区活跃度 | 高,长期支持版吸引企业用户贡献代码 | 较高,开发者热衷于尝试新功能 |
四、推荐选择建议
- 选择Jazzy Jalisco:
- 项目需要长期稳定性(如工业机器人、自动驾驶)。
- 目标平台为Ubuntu 24.04或Windows 10。
- 团队熟悉现有ROS 2工具链,无需频繁升级。
- 选择Kilted Kaiju:
- 项目需要最新功能(如Gazebo Ignition集成、DDS-XRCE协议)。
- 目标平台包含嵌入式设备或新兴操作系统(如Windows 11、macOS ARM)。
- 团队愿意承担一定风险,以换取技术领先性。
五、总结
- Jazzy Jalisco是ROS 2的“稳定基石”,适合生产环境部署;
- Kilted Kaiju是ROS 2的“创新引擎”,推动技术边界扩展。
推荐学习ROS 2 Jazzy Jalisco版本,其发布于2024年5月23日,是长期支持版(LTS),支持周期至2029年5月,适合需要长期稳定性的学习者和开发者。以下是针对该版本的具体学习规划:
一、基础准备阶段(1-2周)
- 环境搭建
- 在Ubuntu 24.04 LTS上安装ROS 2 Jazzy,参考官方安装教程。
- 配置开发环境,包括安装依赖项(如Python 3、C++编译器)和开发工具(如VS Code、CLion)。
- 验证安装:运行
ros2 run demo_nodes_cpp talker和ros2 run demo_nodes_py listener,确保通信正常。
- 核心概念学习
- 节点(Node):理解独立进程的概念,掌握
ros2 node list/info命令。 - 话题(Topic):学习发布-订阅模型,实践
ros2 topic pub/echo命令。 - 服务(Service):掌握请求-响应机制,编写简单的服务客户端/服务端代码。
- 动作(Action):理解长时间运行任务的处理方式,对比服务与动作的区别。
- 参数(Parameter):学习动态配置节点参数,使用
ros2 param命令。
- 节点(Node):理解独立进程的概念,掌握
- 工具使用
- RViz2:可视化传感器数据、机器人模型和导航路径。
- RQt:通过图形化界面调试节点和话题。
- ros2 bag:录制和回放话题数据,用于离线分析。
二、进阶开发阶段(3-6周)
- 自定义消息与服务
- 定义
.msg和.srv文件,生成C++/Python接口代码。 - 实践案例:创建自定义传感器消息,实现服务调用控制机器人行为。
- 定义
- 包管理与构建系统
- 使用
colcon构建工具管理项目,理解CMakeLists.txt和package.xml配置。 - 创建多包项目,模拟复杂系统(如感知+决策+控制模块)。
- 使用
- 通信机制深化
- DDS配置:调整QoS策略(如可靠性、延迟),优化网络通信。
- 跨节点通信:实践多机器人间的话题/服务/动作通信。
- 生命周期管理:控制节点启动/关闭顺序,确保系统稳定性。
- 硬件集成
- 连接真实硬件(如激光雷达、摄像头),编写驱动节点。
- 使用
ros2_control框架实现机器人关节控制,实践PID调参。
三、高级应用阶段(7-12周)
- 仿真与导航
- Gazebo Harmonic:搭建3D仿真环境,集成ROS 2 Jazzy的Gazebo插件。
- Nav2导航栈:配置全局/局部路径规划、避障策略,实现自主导航。
- SLAM建图:使用Cartographer或SLAM Toolbox构建环境地图。
- 感知与决策
- 计算机视觉:集成OpenCV或TensorFlow Lite,实现目标检测、颜色识别。
- 行为树(Behavior Trees):使用
BehaviorTree.CPP库设计复杂决策逻辑。 - 多传感器融合:融合激光雷达、IMU数据,提高定位精度。
- 多机器人协同
- 实现分布式任务分配,如多机器人协作搬运、编队控制。
- 使用
ros2 multicast或DDS发现机制管理多机器人网络。
四、项目实战与优化(持续)
- 综合项目开发
- 案例1:自主导航机器人
- 硬件:树莓派5 + 激光雷达 + 电机驱动。
- 功能:SLAM建图、路径规划、避障、语音交互。
- 案例2:机械臂抓取系统
- 硬件:Jetson Orin + 机械臂 + 深度摄像头。
- 功能:物体识别、抓取点规划、运动控制。
- 案例1:自主导航机器人
- 性能优化与调试
- 使用
ros2 doctor诊断系统问题,优化CPU/内存占用。 - 结合
tracetools分析节点延迟,调整DDS QoS参数。
- 使用
- 持续学习与社区参与
- 关注ROS 2官方博客和GitHub仓库,跟进新功能(如DDS-XRCE协议)。
- 参与ROS Discourse论坛,解答他人问题,提升影响力。
Jazzy Jalisco
Jazzy Jalisco (2024年5月发布) 详细总结
一、基本信息
Jazzy Jalisco是ROS 2的第十个版本。本文介绍了Jazzy Jalisco自上一版本以来的重要变化和新特性。完整变更列表请查看长格式变更日志。
二、支持的平台
- 一级平台
- Ubuntu 24.04(Noble):amd64和arm64架构
- Windows 10(Visual Studio 2019):amd64架构
- 二级平台
- RHEL 9:amd64架构
- 三级平台
- macOS:amd64架构
- Debian Bookworm:amd64架构
三、安装与相关版本
- 安装:提供Jazzy Jalisco的安装方式。
- Gazebo版本:推荐使用Harmonic版本。
四、ROS 2与Gazebo集成变更
- 简化集成:从Jazzy Jalisco开始,每个ROS 2版本将有一个推荐且受支持的Gazebo版本。
- Gazebo供应商包:新增多个gz_*_vendor包,方便ROS 2包使用Gazebo功能。
五、新特性
- common_interfaces
- 新增VelocityStamped消息:添加了包含定义速度所需所有字段的新消息。
- Marker.msg新增ARROW_STRIP类型:为Marker.msg添加了新的标记类型。
- image_transport
- 支持懒订阅者
- 公开设置回调组的选项
- 启用允许列表:用户可以在运行时选择性地禁用image_transport插件。
- 使用自定义QoS发布和订阅:允许用户在创建image_transport发布者和订阅者时传入自定义服务质量。
- 为Republish添加rclcpp组件:用户现在可以将image_transport的republisher节点作为rclcpp_component启动。
- message_filters
- TypeAdapters支持:允许用户在message_filters中使用类型适配。
- rcl
- 添加获取类型描述服务:实现了~/get_type_description服务,允许外部用户获取节点提供的每个类型的描述。
- rclcpp
- 服务类型支持助手:新增类型支持助手rclcpp::get_service_typesupport_handle,用于提取服务类型支持句柄。
- rclpy
- ParameterEventHandler:新类ParameterEventHandler允许通过参数事件监控和响应参数变化。
- ros2cli
- 添加--log-file-name命令行参数:允许用户使用--log-file-name命令行参数指定日志文件名前缀。
- 订阅选项添加QoS:为用户可设置的QoS参数添加到TopicStatisticsOptions中。
- 添加客户端和服务计数:用户现在可以获取服务创建的客户端数量。
- ros2action
- 支持type子命令:用户现在可以使用type子命令检查操作类型。
- rosbag2
- 服务录制和播放:用户现在可以使用ros2bag命令行界面录制和播放服务数据。
- 新过滤模式:用户现在可以按主题类型过滤。
- Player和Recorder作为rclcpp组件公开:允许在数据记录或回复期间使用进程内通信时进行“零拷贝”。
- 添加禁用记录器键盘控制的选项
- 录制期间使用来自message_info的中间件发送和接收时间戳
- 添加压缩线程优先级到记录选项
- 添加按时间分割已存在的ros2包的功能
- 直接在包文件中存储序列化元数据
- 在元数据中存储ROS_DISTRO名称
- 为Python绑定添加内省QoS方法
- rosidl
- 添加支持键注释的接口:键注释允许指示数据成员是键的一部分。
- rviz2
- 为TF显示添加正则表达式过滤字段
- 将测量的订阅频率附加到主题状态
- 重置功能:用户现在可以使用新服务或键盘快捷键R重置时间。
- 添加对point_cloud_transport的支持
- 与ROS的RViz功能 parity:用户现在可以使用ROS 1版本中可用的相同插件。
- Camera info显示:用户现在可以在3D场景中可视化CameraInfo消息。
- rcpputils
- 添加tl_expected:std::expected是C++23特性,ROS 2尚不支持,但用户可以通过rcpputils中的回溯实现使用tl::expected。
- rcutils
- 在日志格式中添加人类可读日期:用户现在可以在使用控制台日志时,通过在RCUTILS_CONSOLE_OUTPUT_FORMAT环境变量中使用{date_time_with_ms}标记输出人类可读格式的日期。
六、自Iron版本以来的变化
- common_interfaces
- 为geometry_msgs/Polygon和PolygonStamped添加ID:为多边形添加ID字段以消除歧义。
- geometry2
- 移除已弃用的头文件:移除在Humble中已弃用的头文件。
- 更改wait_for_transform_async和wait_for_transform_full_async的返回类型:未来将包含正在等待的变换信息。
- 启用Twist插值器:包含用于在参考帧中查找移动帧速度的新API。
- rcl
- 定时器调用时的实际和预期调用时间:新增rcl_timer_call_with_info API以收集定时器调用时的实际和预期调用时间。
- 改进rcl_wait在超时计算和虚假唤醒方面的处理:为具有时间覆盖启用时钟的定时器添加特殊处理。
- rclcpp
- 修复数据竞争条件:修复执行器中的数据竞争条件。
- 在执行器中使用rclcpp::WaitSet:通过使默认的单/多线程执行器在实体集合重建方面像静态单线程执行器一样工作,减少rcl_wait_set的创建和删除次数。
- rclcpp::get_typesupport_handle已弃用:提取消息类型支持句柄的rclcpp::get_typesupport_handle已弃用,将被移除。
- 移除已弃用的rclcpp/qos_event.hpp头文件:在Iron中已弃用,在Jazzy中完全移除。
- 移除已弃用的订阅回调签名:在Humble中已弃用,在Jazzy中移除。
- 定时器调用时的实际和预期调用时间:向定时器回调添加rclcpp::TimerInfo参数以收集定时器调用时的实际和预期调用时间。
- rclcpp_action
- 取消后回调:添加函数以在目标句柄超出范围后停止回调。
- rclcpp_lifecycle
- 添加新节点接口TypeDescriptionsInterface:提供GetTypeDescription服务。
- rclpy
- rclpy.node.Node.declare_parameter:不允许在没有默认值的情况下静态键入参数。
- 为方法参数添加类型:添加类型检查以改善静态类型检查体验。
- rosbag2
- 重命名--exclude CLI选项:--exclude CLI选项重命名为--exclude-regex。
- 更改offered_qos_profiles的表示方式:在代码中使用枚举值,在元数据中使用人类可读的字符串值,在覆盖QoS配置文件YAML文件中使用。
- 在读取和写入包分割事件消息中添加节点名称
- 在包关闭时添加BagSplitInfo服务调用
- 解决rosbag2中处理SIGINT和SIGTERM信号的多个问题
- 将存储返回的topic_id添加到TopicMetadata
- 为CompressionOptions和CompressionMode结构添加Python绑定
- 提高SqliteStorage::get_bagfile_size()的性能
- rqt_bag
- 提高性能并更新rosbag API:rosbag2 API和Ubuntu Noble库版本的一些破坏性变更需要对rqt_bag进行一些更改。
七、开发进度与发布时间表
- 开发进度:可在项目板上查看Jazzy Jalisco的开发进度,过程描述页面提供其遵循的广泛流程。
- 发布时间表
- 2023年11月:确定平台,更新REP 2000,明确目标平台和主要依赖版本。
- 2024年1月:滚动平台转移,为Jazzy Jalisco更新构建农场的新平台版本和依赖版本。
- 2024年4月8日(周一):Alpha版本发布 + RMW冻结,对ROS Base 1包进行初步测试和稳定化,RMW提供者包进行API和功能冻结。
- 2024年4月15日(周一):冻结,对Rolling Ridley中的ROS Base 1包进行API和功能冻结,此后仅进行错误修复发布,新包可独立发布。
- 2024年4月22日(周一):分支,从Rolling Ridley分支,rosdistro重新开放用于ROS Base 1包的Rolling PR,Jazzy开发从ros-rolling-包转移到ros-jazzy-包。
- 2024年4月29日(周一):Beta版本发布,提供ROS Desktop 2包的更新版本,呼吁进行全面测试。
- 2024年5月1日(周三):教程派对启动
- 2024年5月13日(周一):发布候选版本,构建发布候选包,提供ROS Desktop 2包的更新版本。
- 2024年5月20日(周一):发行版冻结,冻结所有Jazzy分支上的所有ROS 2桌面包和rosdistro,不合并任何针对jazzy分支或目标为jazzy/distribution.yaml的rosdistro存储库的拉取请求。
- 2024年5月23日(周四):正式发布,发布公告,解除ROS 2桌面包源代码冻结,rosdistro重新开放用于Jazzy拉取请求。
Kilted Kaiju
Kilted Kaiju(2025年5月发布)详细总结
一、基本信息
Kilted Kaiju是ROS 2的第十一个版本,本文介绍了其重要变化和新特性,完整变更列表可查看长格式变更日志。
二、支持的平台
- 一级平台
- Ubuntu 24.04(Noble):amd64和arm64架构
- Windows 10(Visual Studio 2019):amd64架构
- 二级平台
- RHEL 9:amd64架构
- 三级平台
- macOS:amd64架构
- Debian Bookworm:amd64架构
三、安装与相关版本
- 安装:提供Kilted Kaiju的安装方式。
- Gazebo版本:推荐使用Ionic版本。
四、新特性
- ament_cmake_ros
- 新增rmw_test_fixture,支持RMW隔离测试。包含rmw_test_fixture包(提供API)和rmw_test_fixture_implementation包(提供扩展的发现、加载和调用入口点)。
- common_interfaces
- 新增nav_msgs/Goals消息类型,用于在nav_msgs包中支持导航目标数组。
- ros2cli
- 支持动作自省,可使用命令行工具ros2 action echo 进行操作。
- rclcpp
- 支持动作通用客户端,用于在rosbag2中支持动作。
- rclpy
- 静态类型检查:为ActionClient和ActionServer添加静态类型提示。
- 泛型支持:为发布者、订阅者、服务器、任务和参数添加泛型支持,客户端、动作客户端和Future需更新以获得改进的类型检查。
- Python类型静态检查:可使用ament_mypy(包装mypy)进行。
- EventsExecutor:支持实验性的rclpy事件执行器。
- Rosbag2
- 支持动作自省,可录制和播放动作。
- 为ros2 bag play CLI添加进度条,显示包时间和持续时间。
- 支持使用新的-i,--input CLI选项同时回放多个包。
- 支持根据消息的发布时间戳按时间顺序回放消息,通过ros2 bag play的新--message-order {received,sent}选项实现,默认按接收顺序播放。
- 每次触发快照写入时创建新文件。
- 在ros2 bag info命令中新增--sort CLI选项,可按名称、主题类型或记录的消息数量对主题、服务和动作进行排序。
- 使用ros2 bag info -v和--size-contribution选项可查看包文件中每个主题的大小贡献。
- 为ros2 bag play和ros2 bag record添加--log-level选项,允许打印调试消息。
- rosidl_rust
- 添加rosidl_rust,将Rust idl生成器添加到默认代码生成器列表中。
- ros2
- Windows依赖管理:切换到使用Pixi/Conda,简化安装过程,便于更新依赖,依赖安装在单独的工作区中,无“全局”安装。
- 支持DDS主题实例:主题实例是一种在同一资源(即主题)上复用多个相同逻辑类型对象的更新传输的方式。
五、自Jazzy版本以来的变化
- common_interfaces
- 在像素格式中添加NV12,这是硬件加速解码器的常见输出格式。
- rclcpp
- 修复附属节点行为不一致的问题,附属节点是与主节点关联的次要节点,共享相同的底层上下文和资源,同时保持单独的名称和命名空间。修改后的行为可能影响依赖先前实现的现有应用程序,包括从附属节点创建的通用客户端现在正确尊重附属节点的子命名空间;使用附属节点获取参数现在正确使用(父)节点的rclcpp::node_interfaces::NodeParametersInterface。
- rmw_connextdds_cpp
- RTI Connext DDS版本升级到7.3.0。
- Connextmicro
- RTI Connext Micro RMW包rmw_connextddsmicro将在Kilted Kaiju停止更新,并在未来的ROS 2版本中移除。
- rosidl_dynamic_typesupport
- 由于float128定义存在不一致,移除对其的支持。
- rmw_fastrtps_cpp
- 将包名从fastrtps重命名为fastdds,rmw实现名称保持不变,XML配置文件环境字符串将更改。
- ament_target_dependencies
- CMake宏ament_target_dependencies()已被弃用,建议使用target_link_libraries()与现代CMake目标。弃用警告会在构建时显示。
- launch
- PathJoinSubstitution现在支持将字符串或替换项连接成单个路径组件。
- rmw_zenoh_cpp
- 成为一级平台,在ROS 2核心包中有许多PR,包括使rmw通过所有核心测试、实现并记录安全性、在一级平台上运行、添加质量声明、添加到REP 2005、设置专门的夜间CI作业等。
六、开发进度与发布时间表
- 开发进度:可在项目板上查看Kilted Kaiju的开发进度,过程描述页面提供其遵循的广泛流程。
- 发布时间表
- 2024年12月:确定平台,更新REP 2000,明确目标平台和主要依赖版本。
- 2025年4月7日(周一):Alpha版本发布 + RMW冻结,对ROS Base 1包进行初步测试和稳定化,RMW提供者包进行API和功能冻结。
- 2025年4月14日(周一):冻结,对Rolling Ridley中的ROS Base 1包进行API和功能冻结,此后仅进行错误修复发布,新包可独立发布。
- 2025年4月21日(周一):分支,从Rolling Ridley分支,rosdistro重新开放用于ROS Base 1包的Rolling PR,Kilted开发从ros-rolling-包转移到ros-kilted-包。
- 2025年4月28日(周一):Beta版本发布,提供ROS Desktop 2包的更新版本,呼吁进行全面测试。
- 2025年5月1日(周四):教程派对启动
- 2025年5月12日(周一):发布候选版本,构建发布候选包,提供ROS Desktop 2包的更新版本。
- 2025年5月19日(周一):发行版冻结,冻结所有Kilted分支上的所有ROS 2桌面包和rosdistro,不合并任何针对kilted分支或目标为kilted/distribution.yaml的rosdistro存储库的拉取请求。
- 2025年5月23日(周五):正式发布,发布公告,解除ROS 2桌面包源代码冻结,rosdistro重新开放用于Kilted拉取请求。
5127

被折叠的 条评论
为什么被折叠?



