实现 VAD/UniAD 风格规划器,掌握感知-规划联合训练、可解释性分析与安全性验证。
端到端自动驾驶 (End-to-End Driving) 从传感器输入直接输出驾驶轨迹,跳过了传统的模块化 pipeline。本章详细解析 UniAD 和 VAD 两种代表性架构。
学完本章你将获得:
- UniAD 规划导向感知的完整理解
- VAD 向量化规划的实现能力
- 端到端 vs 模块化的工程判断力
传统自动驾驶 pipeline:
Sensor → Perception → Prediction → Planning → Control → Actuator
每个模块独立训练,存在以下问题:
1. 误差累积: 上游误差在传递中放大
2. 目标不对齐: 检测 IoU 高不等于规划好
3. 信息瓶颈: 模块间通常只传递最简信息 (bbox, 轨迹)
Sensor → Unified Model → Trajectory
1. 联合优化: 所有组件同时为最终驾驶质量优化
2. 信息丰富: 中间特征可以在模块间流动
3. 数据驱动: 可利用大量驾驶演示数据
UniAD 的关键洞察: 感知应该为规划服务。
五大 Transformer 模块:
1. TrackFormer: 目标检测 + 跟踪 (继承 MOTR/DETR)
2. MapFormer: 在线高精地图 (继承 MapTR)
3. MotionFormer: 多模态运动预测
4. OccFormer: 占用网格预测
5. Planner: 自车轨迹规划
每个模块的 query features 被传递到下游模块,规划 query 与所有 task queries 通过 attention 交互。
UniAD 的问题:
- Occupancy 预测计算量大
- 规划隐式地从特征中解码,可解释性低
VAD 的改进:
1. 向量化场景表示: 用向量替代稠密栅格
2. 显式轨迹采样: 采样候选轨迹 → 评分 → 选择
3. 碰撞约束: 在向量空间中直接计算碰撞
Agent: [cx, cy, vx, vy, w, h, theta]
Lane: [(x1,y1), (x2,y2), (x3,y3), ...]
Boundary: [(x1,y1), (x2,y2), ...]
UniAD/VAD 输出未来 N 步的轨迹航点:
trajectory = [(x_1, y_1), (x_2, y_2), ..., (x_T, y_T)]
1. L2 Error: 与 GT 轨迹的平均距离
2. Collision Rate: 碰撞比例 (越低越好)
3. Comfort Score: 加速度/jerk 的平滑度
4. Progress: 沿路线的进展
- 开环: 从数据集预测轨迹, 不执行
- 闭环: 实际执行预测 → 观察结果 → 再预测
- 闭环更难但更真实, 需要仿真器 (CARLA/MetaDrive)
项目地址: vla_learn/chapter15_e2e_driving/
预计时间: 1-2 天