跳转至

闭环仿真与策略评测

仿真评测首先要回答:策略的输出是否真正改变了下一时刻的输入? 对端到端驾驶和视觉-语言-动作模型(Vision-Language-Action,VLA),只比较预测轨迹与人类轨迹,无法检验偏离专家路线后的恢复能力。本节给出从日志回放到交互式评测的工程流程;硬件接入方式见仿真测试方法论,指标定义见仿真评估指标。

1. 区分回放、闭环与交互

评测方式 自车动作影响后续观测 其他参与者响应自车 能回答的问题与边界
开环日志回放 否,输入沿采集车轨迹播放 否 感知和轨迹预测是否准确;不能检验误差累积
自车闭环、交通回放 是,自车状态由动力学更新 否,其他车辆沿日志轨迹行驶 能否跟踪与恢复;交互可能不自然
反应式交通闭环 是 是,由行为模型控制 能否完成让行、汇入、博弈;依赖行为模型可信度
传感器级闭环 是,重新生成自车视角的传感器输入 取决于交通配置 感知、规划、控制联合表现;需要额外验证渲染与传感器模型

这些维度并不互斥:传感器级闭环既可使用日志交通,也可使用反应式交通。软件在环、硬件在环描述的是被测系统如何接入,并不自动保证环境具有闭环反馈。

nuPlan 将闭环规划作为基准的核心问题;使用其规划器评测结果时,应核对观测接口、交通模式与场景划分,不能直接解释为摄像头到控制的全链路能力。nuPlan 论文

例子:汇入主路。 日志中的主路车辆原本减速让行,但被测策略比采集车晚两秒到达汇入口。若主路车辆仍按日志减速,策略可能获得不真实的便利;若日志车辆沿原路径穿过自车,又可能出现不合理碰撞。应保留这一模式用于回归对比,同时用反应式交通复核交互失败。

2. 闭环接口与时间语义

一个简化闭环可以写成:

\[ o_t = R(s_t),\qquad a_t = \pi(o_{\leq t}, c_t),\qquad s_{t+1} = F(s_t, a_t, b_t; \Delta t) \]

其中 \(s_t\) 是世界状态,\(R\) 是观测生成器,\(c_t\) 是导航或语言指令,\(b_t\) 是其他参与者动作,\(F\) 包含动力学与交通更新。传感器延迟、执行器延迟和模型计算时间需要在实现中另行建模。

2.1 接口契约

接口 必须约定的内容 常见故障
观测 时间戳、相机标定、坐标系、历史窗口、缺帧掩码 将不同帧的图像与速度拼成同一时刻
轨迹 坐标原点、单位、航向约定、采样间隔、有效期 把历史自车坐标下的轨迹直接用于当前车辆
控制 转角或方向盘角、油门/制动范围、限幅、执行延迟 归一化控制量被当作物理量
终止 碰撞、完成、超时、传感器失效、仿真异常 将卡住或运行失败的样本从统计中静默删除

输入适配层只能向策略提供部署时可获得的信息。仿真真值可用于评分和离线分析;如果用于控制或安全检查,必须明确该实验带有真值辅助,不能与普通传感器输入的实验混算。

2.2 同步推进不等于满足实时性

CARLA 的同步模式由客户端推进世界;固定时间步长控制每步仿真时间。官方文档同时说明了物理子步约束、多客户端推进和传感器帧同步问题。复现实验时应固定配置并检查帧编号,而不是只设置随机种子。CARLA 时间步与同步文档

如果每一步仿真推进 50 ms,而模型实际计算需要 300 ms,同步仿真仍可等待模型并完成驾驶。这只能说明该策略在这种时间假设下的行为,不能说明它能在车端实时运行。建议分开执行两类测试:

  • 行为回归:同步推进,固定输入与时间步,便于定位模型变化。
  • 时延评测:使用目标硬件测得的延迟分布,模拟旧控制保持、轨迹过期与丢帧,检查实际闭环退化。

报告中同时列出仿真步长、策略更新周期、端到端延迟分位数与超时比例。端到端延迟应从观测采集算到控制可执行,包含预处理、数据传输和解码。

3. 场景集与复现清单

建议将运行配置保存成可版本化的清单。以下 YAML 是项目自定义记录格式示例,不是任何仿真器可直接执行的配置:

experiment_id: merge_policy_b
simulator:
  build: pinned-build-id
  map_hash: sha256-map-placeholder
  asset_hash: sha256-assets-placeholder
  step_seconds: 0.05
traffic:
  mode: reactive
  policy_version: traffic-policy-v1
seeds: [11, 29, 47]
policy:
  checkpoint_hash: sha256-model-placeholder
  adapter_version: adapter-v1
  instruction_set: merge-instructions-v1
  decoding: deterministic
runtime:
  latency_profile: measured-target-device-v1
  timeout_policy: validated-fallback-v1
evaluation:
  scenario_split: heldout-routes-v1
  metric_version: metrics-v1
  termination_rules: termination-v1

还应保存容器、驱动、传感器配置、控制器参数与完整事件日志。固定随机种子有助于配对比较,但不能保证跨硬件、引擎版本和并行调度逐位一致。出现差异时先检查重复运行的自然波动,再判断模型是否发生回归。

3.1 三类测试集分别报告

测试集 构建方式 用途
固定回归集 冻结场景、路线与种子 检查已知缺陷是否复发
分布评估集 按目标运行设计域采样,保留场景权重 估计声明范围内的行为表现
挑战集 对抗搜索、罕见组合、故障注入 找弱点与失效边界

训练、调参和最终测试应按原始日志、路线、地点等分组隔离。同一事件生成的改写指令、不同天气版本和近邻视频帧应保留在同一数据分区,避免泄漏。挑战集刻意放大危险条件,其失败比例不能直接充当真实道路事故率。

4. 学习型与生成式仿真的使用边界

世界模型可用于生成观测或预测交互,但应先确认其能力对应哪一层:

方法 可提供的能力 需要独立检查的条件
神经场景重建 从实采数据合成新视角 远离采集轨迹后的几何与遮挡质量
视频生成 构造天气、外观与场景变化 时间一致性、动作条件是否有效、多相机是否一致
学习型交通模型 为其他参与者生成行为 对自车干预的响应、罕见行为覆盖、碰撞与规则约束
动作条件世界模型 根据候选动作展开未来 长时误差累积、接触与动力学一致性、分布外稳定性

画面逼真不足以证明闭环可用。一个操作性检查是:固定初始状态,分别输入制动和加速,检查自车位移、目标相对距离与生成图像是否一致变化。碰撞判定应有明确几何或状态依据;若只能依赖另一个模型对视频打分,必须报告评分器误差。

训练策略与评测环境若共享数据或生成模型,可能共同忽略同一类错误。可使用独立保留数据、不同交通模型和实测响应做交叉检查,并记录仿真失真的区域。域差距的处理见 Sim-to-Real 迁移。

5. VLA 的语言—动作联合测试

VLA 需要同时接受语义扰动和驾驶扰动。语言答案正确与实际驾驶成功应分开评分,模型训练及动作接口见 VLA 专题。

测试轴 配对场景示例 观察结果
同义改写 “下一个路口右转”与“在前方路口向右转” 合法路线与完成率是否稳定
参照消歧 两栋相似建筑,指令为“在银行后停车” 是否在目标不明确时保持保守行为
条件指令 “确认右侧车道安全后并线” 是否在条件成立前执行动作
冲突指令 导航要求右转,但现场已封闭 是否遵守可通行边界并重新规划
无关文本 路边广告包含命令式文字 是否误把环境文本当成授权指令
时序扰动 指令延迟到达、重复到达或被撤销 是否执行了已失效的目标
物理扰动 遮挡、低附着、制动延迟、切入车辆 是否能在语义正确时仍保持控制稳定

例如,在“前方路口右转”任务中,分别加入封路、导航晚到和行人横穿。记录碰撞、越界、任务完成、等待时间、保护层干预和实际控制轨迹;不要用“解释中提到了行人”替代让行成功。

6. 从评测结果到回归结论

建议按固定场景和种子配对比较候选模型与基线,并记录:

  1. 执行完整性:计划运行数、有效运行数、初始化失败、崩溃和超时各是多少;失败重跑是否改变了统计分母。
  2. 行为结果:安全事件、路线完成、效率与舒适性分别报告,避免用综合分数掩盖关键失效。
  3. 分组差异:按交互类型、天气、指令类别和延迟分桶,检查整体提升是否掩盖局部回退。
  4. 不确定性:提供重复运行和置信区间;同一日志派生的场景存在相关性,可按原始日志或路线分组重采样。
  5. 失败归因:区分策略、控制器、保护层、适配接口与仿真器问题,保存最早出现偏差的时间点。

发布判据应在运行前按项目需求定义,并同时评价原始策略与带保护层的完整系统。保护层阻止碰撞是系统能力,但频繁干预也表明策略存在缺陷。仿真结论只覆盖已校准的环境和测试分布,需要与封闭场地及实车验证共同形成证据。

7. 为具体测试目的校准仿真器

仿真可信度应对应一个用途。例如,评估紧急制动需要较可信的纵向响应与接触判定;评估远距离交通灯识别则需要对应的成像与光照模型。一个仿真器可以适合前者却不适合后者,不能用一个“高保真”标签覆盖所有测试。

7.1 校准数据与独立验证数据

子系统 可比较的实测量 调整对象 保留验证条件
纵向动力学 控制请求到减速度的响应、停车距离 执行延迟、制动力、阻力 不同初速、载荷和路面条件
横向动力学 转向响应、横摆角速度、跟踪误差 转向比、轮胎模型、控制延迟 未用于拟合的曲率与速度
传感器 噪声、曝光响应、丢帧与时间偏差 噪声参数、成像链、调度 不同光照、目标距离与运动状态
交通行为 间隙接受、反应时间、跟驰距离 行为模型参数或训练分布 保留地点、流量与交互类型

先用校准集拟合,再用独立数据检验残差。应保留误差随工况变化的分布,例如某个制动模型可能平均误差很小,却在低附着路面系统性低估停车距离。碰撞模型也要检查车辆尺寸、接触体和离散时间步,防止车辆在相邻仿真帧之间穿过目标而未报告碰撞。

7.2 从单点参数扩展到不确定性范围

将真实参数的不确定性带入仿真,比只使用最佳拟合值更能暴露结论的脆弱性。可以先逐项扰动执行延迟、摩擦系数或交通反应时间,观察哪些因素会改变模型排序,再对敏感因素做联合采样。

参数组合应保持物理和场景上的合理性。随机增加雨量却保持所有传感器和轮胎模型不变,只测试了外观变化;同时将所有参数设为最坏值,则可能生成不在目标运行设计域内的组合。两者都可以用于特定实验,但必须说明测试目的。

记录“可信度范围”时,至少写明已经校准的速度、天气、传感器模式与道路类型,以及尚未验证的条件。详细框架见仿真测试方法论。

8. 贯穿案例:有遮挡的主路汇入

下面给出一个项目自定义实验示例,参数和次数用于演示组织方式,不是行业验收标准。

8.1 从场景意图到具体运行

场景意图:自车从支路汇入主路,停放车辆遮挡部分视野;语言指令要求“确认主路安全后汇入”。目标是检查观察、间隙判断和动作执行是否一致。

参数 示例取值 控制目的
主路来车速度 20、35、50 km/h 改变可用反应时间
可见距离 15、30 m 控制遮挡强度
来车预计到冲突点时间 2、4、6 s 调整交互间隙,以其初始速度计算
观测到控制可用的延迟 0、150、300 ms 区分理想行为与延迟鲁棒性
指令形式 原指令、同义改写 检查语言表述敏感性
交通随机种子 5 个固定种子 检查交通随机性影响

全组合为 \(3\times2\times3\times3\times2\times5=540\) 次运行,每个候选模型都采用同一清单。实例化前要检查初始车辆是否重叠、路线是否连通、遮挡资产是否可放置;不可实例化的组合应报告原因和数量,不能在运行后因模型失败而删除。

8.2 独立定义评分条件

完成判定可定义为:自车已进入目标主路车道,驶过规定终点,且未发生碰撞或越界。等待超过项目规定时限记录为未完成;选择等待和冒险汇入是不同失效,不能合成一个无法解释的总分。

至少记录任务成功率、碰撞场景比例、越界、等待超时、保护层干预与延迟分位数。碰撞依据接触或几何检测;预测碰撞时间只作为风险补充。指令改写的比较应使用相同初始状态和种子。

8.3 一张报告如何避免误判

以下数字完全是假设的教学数据,假设 A、B 各完成了 540 次有效运行,且使用相同交通模式与保护层:

结果 模型 A 模型 B 可以得到的判断
成功完成 486/540 497/540 B 的样本完成率更高
碰撞场景 2/540 5/540 B 的碰撞计数也更高,需逐例分析
保护层干预 18/540 41/540 B 更依赖保护层,完成率不能独立解释
300 ms 延迟下成功完成 151/180 140/180 B 的整体优势未延伸到高延迟子集

这些指标可能重叠,例如一次运行既发生干预又未完成,因此不能把各行计数相加当作总运行数。上述结果也没有给出显著性结论:还需要配对差异和不确定性分析。有限的挑战集无法估计整个运行设计域的事故概率,统计方法见仿真评估指标。

8.4 失败最小化与回归保留

对 B 的新增碰撞,从失败前的共同初始状态重跑,然后一次只改变一个因素:撤去遮挡、降低延迟、切换交通反应模型或恢复原始指令。保持其他配置不变,检查失败是否仍存在,以定位必要触发条件。

简化后的场景适合做快速回归,但原始场景也应保留。修复用过的场景进入训练或开发回归集后,就不再是未见测试;最终结论仍应来自独立场景。每个失败包应包含输入片段、指令版本、模型输出、控制命令、世界状态、评分器版本和异常日志。

参考资料

  1. nuPlan: A Closed-Loop ML-Based Planning Benchmark for Autonomous Vehicles:闭环规划基准。
  2. CARLA — Synchrony and Time-Step:时间步、同步和确定性配置。
  3. LMDrive: Closed-Loop End-to-End Driving with Large Language Models:语言引导驾驶与闭环评测研究。