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

使用rosbags提取Carla ROSBAG控制指令话题报Key Error问题

rosbags读取Carla控制话题反序列化失败解决方案

核心问题判断

你可以正常读取图像、车速类话题,是因为这类话题使用的sensor_msgs、geometry_msgs、nav_msgs属于ROS通用标准消息,rosbags可以直接从运行环境中匹配到对应的消息结构定义。
读取/carla/ego_vehicle/vehicle_control_cmd_manual失败的核心原因是:rosbags无法获取该话题对应自定义消息的正确结构定义,CDR反序列化流程无法匹配二进制数据格式,直接抛出错误。

具体排查&修复方案

按优先级从高到低排查:

  • 问题1:运行环境未加载Carla自定义消息
    /carla/ego_vehicle/vehicle_control_cmd_manual使用的是carla_msgs包下的自定义消息,不属于ROS原生标准消息。如果你运行脚本前没有在当前终端source Carla ROS桥的工作空间环境(比如未执行source 你的carla-ros-bridge工作空间/devel/setup.bash),或是使用独立Python虚拟环境运行脚本、没有继承ROS环境变量,rosbags就搜索不到该消息的结构定义,直接报错。
    修复方式:
    1. 运行脚本前,在同一终端先执行source命令加载Carla ROS工作空间环境,再运行Python脚本
    2. 最稳妥的方式是直接在代码中注册rosbag包内自带的消息定义,彻底绕开本地环境的消息依赖,修改后的代码如下:
    from rosbags.rosbag2 import Reader
    from rosbags.serde import deserialize_cdr
    from rosbags.typesys import get_types_from_msg, register_types
    
    def print_data(topic):
        with Reader('carla_data') as reader:
            # 预注册bag包内所有连接的消息定义
            for conn in reader.connections:
                if conn.msgtype not in deserialize_cdr.typestore.FIELDDEFS:
                    register_types(get_types_from_msg(conn.msgdef, conn.msgtype))
            # 正常读取消息
            for i, (connection, timestamp, rawdata) in enumerate(reader.messages()):
                if connection.topic == topic:
                    msg = deserialize_cdr(rawdata, connection.msgtype)
                    print(i, msg)
                    break
    
  • 问题2:消息版本不匹配
    如果你录包时使用的Carla版本(对应carla_msgs版本)和当前环境安装的carla_msgs版本不一致,比如录包用Carla 0.9.13,当前环境装的是0.9.15版本的carla_msgs,两个版本的CarlaEgoVehicleControl消息存在字段增删、顺序调整,反序列化时会出现字段错位、类型不匹配的错误。
    修复方式:
    1. 安装和录包时版本完全一致的Carla ROS桥及对应carla_msgs包
    2. 直接使用上面给出的预注册bag内自带消息定义的代码,不需要依赖本地安装的carla_msgs,从根源避免版本问题。
  • 问题3:包内数据损坏
    这个场景概率极低,可先在录包的原环境下执行ros2 bag play carla_data,同时用ros2 topic echo /carla/ego_vehicle/vehicle_control_cmd_manual查看是否能正常输出消息,如果可以正常输出,直接按前两个问题排查即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:54:38