You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROS 2 Humble无法播放Jazzy录制的bag文件问题求助

解决ROS 2 Jazzy录制Bag在Humble播放的YAML解析错误

问题根源

报错yaml-cpp: error at line 15, column 11: bad conversion是因为ROS 2 Jazzy新增了unknown作为QoS history的枚举值,但ROS 2 Humble的rosbag2解析器不支持这个值,导致无法解析metadata.yaml中的对应字段。

解决方案(无需升级Humble)

方法1:手动修改metadata.yaml

直接编辑bag目录下的metadata.yaml,将第15行的history: unknown替换为Humble支持的有效值:

  • keep_last(默认策略,保留最新N条消息)
  • keep_all(保留所有消息)

修改后的QoS片段示例:

offered_qos_profiles:
  - history: keep_last
    depth: 0
    reliability: reliable
    durability: volatile
    deadline:
      sec: 9223372036
      nsec: 854775807
    ...

方法2:Jazzy端录制时指定明确QoS

录制bag时通过--qos-profile-overrides-path参数指定包含明确history策略的配置文件,避免生成unknown值。例如创建qos_override.yaml:

/ultrasound:
  history: keep_last
  depth: 10

执行录制命令:

ros2 bag record /ultrasound --qos-profile-overrides-path qos_override.yaml

方法3:用Jazzy的迁移工具转换格式(推荐)

在Jazzy机器上使用rosbag2 migrate工具自动将bag转换为Humble兼容格式:

rosbag2 migrate /path/to/jazzy_bag /path/to/humble_compatible_bag --target-distro humble

该工具会自动调整metadata中的不兼容字段,无需手动修改。

验证

修改或转换完成后,在Humble机器上执行播放命令验证:

ros2 bag play /path/to/modified_bag

内容的提问来源于stack exchange,提问作者yazou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 02:52:26