4. 闭环仿真核心概念
在自动驾驶研发中,仿真并不是简单地“把车放进虚拟世界跑一圈”。真正决定仿真价值的,是闭环二字。开环仿真只负责播放一段固定场景,车辆按预设轨迹运动,传感器数据与车辆动作之间没有因果联系;而闭环仿真中,车辆根据传感器感知结果做出决策,决策又改变车辆运动,运动进一步改变传感器看到的场景,形成持续反馈。这种“感知—决策—控制—运动—再感知”的循环,才是逼近真实道路测试的核心机制。
4.1 闭环仿真定义与反馈机制
闭环仿真可以定义为:在虚拟环境中,将被测自动驾驶系统(ADS)与车辆动力学模型、传感器模型、场景执行器构成一个闭环回路,使系统输出能够实时影响环境状态,环境状态又实时反馈给系统输入。其关键判定标准是是否存在从控制输出到感知输入的反馈通路。
反馈机制通常包含四个环节:
- 决策输出:规划控制模块输出油门、制动、转向或加速度、曲率等控制量。
- 动力学响应:车辆动力学模型根据控制量计算下一时刻的位置、姿态、速度与横摆角速度。
- 传感器重采样:传感器模型基于更新后的自车与环境状态,重新生成摄像头图像、激光雷达点云、毫米波雷达目标等观测。
- 感知再输入:感知模块处理新观测,输出障碍物、车道线、可行驶区域等信息,供决策规划使用。
这个循环的周期称为仿真步长。步长过大,反馈延迟明显,控制容易振荡;步长过小,计算开销急剧上升。工程上常见步长为 10 ms、20 ms 或 50 ms,需与传感器帧率和控制周期匹配。
4.2 传感器模拟:从物理模型到数据生成
传感器模拟是闭环仿真中最容易失真、也最影响验证有效性的环节。它需要回答一个问题:当自车处于某个位姿、环境处于某个状态时,传感器应该看到什么?
常见传感器模拟分为三个层次:
- 理想传感器:直接输出真值目标列表,不考虑噪声、遮挡和探测概率,适合早期算法功能验证。
- 参数化传感器:引入探测距离、视场角、分辨率、噪声方差、虚警率、漏检率等参数,模拟统计特性。
- 物理级传感器:基于光线追踪、雷达散射截面、材质反射率等生成原始数据,最接近真实但计算代价最高。
以激光雷达为例,其模拟通常包括射线投射、回波强度计算、点云噪声叠加和运动畸变补偿。摄像头则涉及投影变换、光照模型、镜头畸变和图像后处理。毫米波雷达更关注多普勒效应、距离分辨率与角度模糊。
4.3 车辆动力学模型与场景交互
车辆动力学模型是闭环回路的“执行器”。它接收控制模块输出的油门开度、制动压力、方向盘转角,计算车辆下一时刻的运动状态。常用模型包括:
| 模型类型 | 自由度 | 适用场景 | 计算开销 |
|---|---|---|---|
| 运动学自行车模型 | 3 | 低速泊车、路径跟踪 | 低 |
| 动力学自行车模型 | 7~10 | 中高速横纵向控制 | 中 |
| 多体动力学模型 | 14+ | 极限工况、舒适性评估 | 高 |
| 轮胎魔术公式模型 | — | 附着极限、冰雪路面 | 中高 |
场景交互则决定车辆运动如何改变环境。例如,自车变道会触发旁车减速或鸣笛;自车急刹会导致后车跟驰距离缩短;行人看到车辆逼近可能加速通过或退回。这些交互行为通常由场景执行器中的行为树、状态机或社会力模型驱动。
# 闭环仿真单步伪代码
for t in simulation_time:
obs = sensor_model.render(ego_state, scene_state)
perception = ads.perception(obs)
trajectory = ads.planning(perception, map)
control = ads.control(trajectory, ego_state)
ego_state = vehicle_dynamics.step(control, ego_state, dt)
scene_state = scenario_engine.update(ego_state, scene_state, dt)
4.4 案例与常见误区
某项目在仿真中验证 AEB 功能时,开环回放显示车辆能在 40 km/h 下于 25 m 内刹停,但闭环测试却频繁碰撞。排查发现,开环时制动指令由脚本直接下发,而闭环中感知延迟 120 ms、控制延迟 80 ms,导致实际制动起点比预期晚了约 2.2 m。这正是闭环仿真暴露出的真实问题。
常见误区二:传感器模型过于理想。忽略遮挡和噪声,会导致感知算法在仿真中“虚高”。
常见误区三:动力学模型参数与实车不一致。轮胎侧偏刚度、质心高度、制动响应等偏差会直接改变闭环结果。
常见误区四:场景交互静态化。其他交通参与者不响应自车行为,闭环就退化为“带反馈的单车仿真”。
复盘闭环仿真时,应重点检查三件事:反馈通路是否完整、传感器误差分布是否可信、动力学与场景交互是否与实车一致。只有这三者同时成立,闭环仿真才能成为安全验证的有效手段,而不是一个看起来热闹的动画播放器。