3. 端到端驾驶系统架构

端到端驾驶系统并不是把四个模块简单串联,而是要让感知、预测、规划、控制形成一条可验证、可观测、可回放的数据闭环。在仿真验证工程中,架构设计的核心问题不是“模块能不能跑”,而是“模块之间的数据契约是否稳定、时序是否可对齐、异常是否可定位”。如果接口设计模糊,仿真中出现的轨迹抖动、误刹车或漏检,往往无法判断是感知误差、预测偏差,还是规划控制衔接问题。

一、核心原理:四模块的职责边界与端到端集成

感知模块负责从传感器原始数据中提取自车状态、障碍物、车道线、交通标志等环境要素;预测模块基于感知结果推断其他交通参与者的未来运动意图;规划模块结合预测结果、地图和自车任务,生成安全、舒适、合法的行驶轨迹;控制模块将轨迹转化为油门、刹车、转向等执行指令。端到端集成的本质,是让这四个模块在统一的时间基准和坐标系下交换结构化数据,而不是各自维护一套私有格式。

集成方式通常分为三类:松耦合消息总线、共享内存零拷贝和端到端可微网络。仿真验证中最常用的是前两种,因为它们便于注入故障、记录中间结果和复现问题。端到端可微网络虽然训练效率高,但可解释性和故障定位难度大,通常需要额外的中间监督信号。

端到端驾驶系统数据流与接口契约 传感器层 相机 / 激光雷达 / 毫米波 GNSS / IMU / 轮速 感知模块 目标检测 / 跟踪 / 车道线 自车定位 / 可行驶区域 预测模块 轨迹预测 / 意图识别 交互博弈 / 不确定性 规划模块 行为决策 / 路径规划 速度规划 / 轨迹优化 控制模块 横向控制 / 纵向控制 油门 / 刹车 / 转向 车辆动力学 执行器响应 / 底盘反馈 位姿更新 / 状态回传 仿真环境 场景渲染 / 传感器模拟 交通流 / 天气光照 数据记录与回放 Rosbag / 中间件日志 时间戳 / 帧ID / 版本 原始数据 目标列表 预测轨迹 轨迹点 控制指令 位姿反馈 场景更新 全链路记录 统一时间基准与坐标系契约 时间戳:传感器采集时刻 → 感知输出时刻 → 预测输出时刻 → 规划输出时刻 → 控制执行时刻,全链路可追溯 坐标系:传感器坐标系 → 自车坐标系 → 世界坐标系,所有模块输出必须标注参考系与有效时间窗口 关键接口字段示例 感知→预测:object_id, type, pose, velocity, covariance, timestamp, frame_id 预测→规划:trajectory[], probability, intention, valid_horizon, confidence

二、方法流程:从数据契约到闭环验证

端到端集成的第一步是定义数据契约。每个模块的输出必须包含对象标识、时间戳、坐标系、置信度和有效时间窗口。例如感知输出目标列表时,不能只给一个边界框,还要给出速度估计和协方差,否则预测模块无法判断不确定性。第二步是时间对齐。仿真中传感器、感知、预测、规划、控制的运行频率不同,必须通过时间戳插值或缓存机制对齐到同一仿真步。第三步是接口版本管理。当感知输出字段增加或语义变化时,预测和规划必须同步升级,否则会出现“字段存在但含义不同”的隐性故障。

在仿真验证平台中,通常采用中间件(如 ROS 2、Cyber RT 或自研消息总线)承载模块间通信。每个模块以节点形式运行,通过话题或服务交换数据。为了支持故障注入,中间件需要提供消息拦截、延迟注入、丢包模拟和内容篡改能力。这样可以在不修改算法代码的前提下,验证下游模块对上游异常的鲁棒性。

# 典型模块接口配置示例(YAML)
perception:
  output_topic: /perception/objects
  frame_id: ego_vehicle
  fields: [id, type, pose, velocity, covariance, timestamp]
  rate_hz: 20

prediction:
  input_topic: /perception/objects
  output_topic: /prediction/trajectories
  horizon_s: 5.0
  dt_s: 0.2
  rate_hz: 10

planning:
  input_topics: [/prediction/trajectories, /localization/pose]
  output_topic: /planning/trajectory
  rate_hz: 10

control:
  input_topic: /planning/trajectory
  output_topic: /control/command
  rate_hz: 50

三、案例场景:城市路口左转的端到端数据流

以城市无保护左转为例。感知模块检测到对向直行车辆、行人以及左侧车道线;预测模块判断对向车辆可能保持直行,行人可能横穿;规划模块生成“等待—蠕行—加速通过”的行为序列和对应轨迹;控制模块执行转向和纵向加减速。仿真验证时,需要重点检查三个接口:感知给预测的目标速度是否带协方差、预测给规划的轨迹是否包含概率、规划给控制的轨迹点是否包含时间戳和曲率。如果规划输出的轨迹点没有时间戳,控制模块就无法计算前馈加速度,容易导致跟踪滞后。

在仿真中复现真实路测问题时,优先检查接口字段的完整性和时间戳单调性,而不是直接怀疑算法精度。大量“算法问题”实际是接口契约不一致导致的。

四、误区与复盘:端到端集成中的常见陷阱

  • 误区一:把端到端理解为“没有接口”。 即使使用可微网络,训练和验证阶段仍然需要中间监督和可观测的中间结果,否则无法定位失败原因。
  • 误区二:忽略时间戳语义。 感知输出时间戳、传感器采集时间戳和仿真步时间戳如果不区分,回放时会出现“未来数据泄漏”。
  • 误区三:接口字段只增不减。 废弃字段长期保留会导致下游模块误用,应通过版本号和弃用标记管理。
  • 误区四:仿真中不记录中间结果。 只记录最终控制指令,无法复盘是感知漏检还是规划保守,必须全链路记录。
接口 关键字段 常见问题 验证方法
感知→预测 id, type, pose, velocity, covariance, timestamp 速度估计无协方差,预测无法评估不确定性 注入速度噪声,观察预测轨迹分布是否合理
预测→规划 trajectory[], probability, intention, horizon 概率归一化错误,规划误选低概率轨迹 构造多意图场景,检查规划选择是否符合预期
规划→控制 trajectory points, timestamp, curvature, velocity 轨迹点无时间戳,控制前馈计算错误 对比规划轨迹与控制实际跟踪误差
控制→车辆 throttle, brake, steering, timestamp 指令延迟未建模,仿真与实车差异大 注入执行器延迟,观察闭环稳定性
端到端驾驶系统架构的验证重点,不是单个模块的精度指标,而是模块间数据契约的稳定性、时间对齐的准确性和异常传播的可观测性。只有把接口当作一等公民,仿真结果才具备工程可信度。