2. 自动驾驶仿真基础
自动驾驶仿真不是“把车放进游戏引擎里跑一圈”这么简单。它是一套从模型到硬件、从软件到整车、从单传感器到交通流的验证体系。理解这套体系,关键在于三个维度:仿真分级决定“测什么”,在环测试决定“在哪测”,场景库与模型决定“测得真不真”。
一、仿真分级:从纯软件到整车在环
行业通常把仿真分为五个层级,层级越高,接入的真实部件越多,置信度越高,但成本和搭建难度也越大。
| 层级 | 被测对象 | 接入真实部件 | 典型用途 |
|---|---|---|---|
| MIL | 控制算法模型 | 无 | 算法逻辑快速迭代 |
| SIL | 编译后的目标代码 | 无(PC 运行) | 代码级功能验证 |
| PIL | 目标处理器 | ECU 芯片 | 实时性与资源验证 |
| HIL | 真实 ECU | ECU + IO 板卡 | 硬件接口与故障注入 |
| VIL | 整车或台架 | 整车、传感器、执行器 | 系统级闭环验证 |
MIL(Model-in-the-Loop)阶段,控制器和被控对象都是 Simulink 等环境中的模型,适合验证算法逻辑是否正确。SIL(Software-in-the-Loop)把控制算法生成 C/C++ 代码后在 PC 上运行,重点检查代码实现与模型是否一致。PIL(Processor-in-the-Loop)进一步把代码烧录到目标芯片,验证浮点、中断、时序等真实约束。HIL(Hardware-in-the-Loop)接入真实 ECU,用实时仿真机模拟传感器和执行器信号,是量产前最关键的硬件验证环节。VIL(Vehicle-in-the-Loop)则把真实车辆或底盘台架接入虚拟环境,验证整车级行为。
二、场景库:仿真的“题库”
场景库决定了仿真能覆盖多少真实风险。一个完整的场景通常包含道路、交通参与者、环境条件和自车任务四要素。按来源可分为:
- 自然驾驶场景:从真实路采数据中提取,最贴近实际交通。
- 事故场景:来自碰撞数据库,用于验证安全边界。
- 参数化场景:对关键参数(车速、距离、角度)做组合生成。
- 对抗场景:主动构造边缘案例,如加塞、鬼探头、施工改道。
场景库不是越多越好,而是要有覆盖度和可追溯性。每个场景应标注来源、参数范围、预期行为和评价指标,否则仿真结果无法用于安全论证。
三、传感器模型与车辆动力学基础
传感器模型决定感知输入的真实度。摄像头模型通常包含内参、外参、畸变、曝光和噪声;激光雷达模型包含线束、扫描模式、反射率和天气衰减;毫米波雷达模型关注距离、速度、角度和多径效应。仿真中常见的误区是只做理想几何投影,忽略噪声和失效模式,导致感知算法在仿真中表现过好。
车辆动力学模型则决定车辆对控制指令的响应。常用模型从低到高包括:运动学自行车模型、动力学自行车模型、多体动力学模型。低速泊车场景可用运动学模型,高速紧急避障则需要考虑轮胎侧偏、载荷转移和悬架特性。
# 典型动力学参数示例
m = 1500 # 整车质量 kg
Iz = 2500 # 横摆转动惯量 kg·m²
lf = 1.2 # 前轴到质心距离 m
lr = 1.5 # 后轴到质心距离 m
Cf = 80000 # 前轮侧偏刚度 N/rad
Cr = 90000 # 后轮侧偏刚度 N/rad
四、常见工具链与闭环关系
工具链通常分为场景编辑、仿真运行、车辆动力学、传感器仿真和测试管理五类。CarMaker、CarSim 擅长车辆动力学;PreScan、VTD 擅长传感器与场景;CARLA、LGSVL 偏开源和感知算法;dSPACE、NI 提供 HIL 实时平台。实际项目中往往需要多工具联合,通过 FMI/FMU 或 ROS/ROS2 接口打通。
五、常见误区与复盘
误区一:仿真通过等于安全。仿真只能证明“在给定场景和模型下通过”,不能替代真实道路测试。模型误差、场景遗漏和传感器理想化都会导致仿真结果偏乐观。
误区二:场景越多越好。没有覆盖度分析和评价指标的场景库只是数据堆积。应按 ODD 边界、风险等级和功能模块组织场景。
误区三:忽略实时性。HIL 和 VIL 对时间步长、通信延迟和计算资源有严格要求,非实时仿真中表现良好的算法可能在实时环境中失效。
复盘一个典型项目:某低速泊车算法在 MIL 中成功率 99%,上 HIL 后降到 82%。排查发现,HIL 中超声波传感器模型加入了真实回波延迟和盲区噪声,而 MIL 中使用了理想距离值。这说明传感器模型的真实度直接决定在环测试的有效性。后续团队在 SIL 阶段就引入噪声模型,问题提前暴露,节省了大量台架时间。
总结来看,仿真分级回答“测什么”,场景库回答“测哪些”,传感器与动力学模型回答“测得像不像”,工具链回答“怎么测”。四者构成闭环,缺一不可。