NAVSIM 核心概念总结
一、核心名词解释
1. NAVSIM (Navigation Simulation)
定义: 用于自动驾驶的伪仿真(Pseudo-Simulation)评估框架 特点: 结合了开环(open-loop)评估的效率和闭环(closed-loop)评估的鲁棒性
2. Agent (智能体)
定义: 执行自动驾驶决策的核心模块 类型:
- ConstantVelocityAgent: 恒速直行基线
- EgoStatusMLPAgent: 基于车辆状态的MLP智能体
- TransfuserAgent: 融合相机和LiDAR的端到端智能体
- HumanAgent: 人类驾驶行为智能体
3. PDM (Predictive Driver Model)
定义: 预测驾驶员模型,用于生成和评估轨迹 扩展: EPDMS (Extended PDM Score) - 扩展的评分系统
4. Trajectory (轨迹)
定义: 车辆未来的位置序列 格式: [x, y, heading] 在BEV(鸟瞰图)坐标系中
5. Scene (场景)
定义: 包含车辆、道路、交通信号等信息的驾驶环境快照 类型:
- 初始场景(initial scene)
- 后续场景(follow-up scene)
6. Sensor Config (传感器配置)
包含:
- 8个相机(cameras)
- 合并的点云(merged point cloud from 5 LiDARs)
- 历史帧(2秒,2Hz频率)
二、核心动词/动作
1. Initialize (初始化)
作用: 加载模型权重、配置参数 时机: 推理前调用一次
2. Compute Trajectory (计算轨迹)
输入: AgentInput(包含传感器数据和车辆状态) 输出: Trajectory(未来4秒,10Hz的轨迹)
3. Forward (前向传播)
作用: 神经网络的前向计算 用于: 基于学习的智能体
4. Score/Evaluate (评分/评估)
方法: 使用EPDMS评分系统 包含: 碰撞、舒适度、车道保持等多个维度
5. Cache (缓存)
作用: 预计算和存储评估指标 优势: 加速评估过程
6. Train (训练)
框架: PyTorch Lightning 支持: 特征构建器、目标构建器、损失计算
三、核心引擎
1. PDM Planner (PDM规划器)
位置: navsim.planning.simulation.planner.pdm_planner
功能:
- 轨迹生成(Trajectory Generation)
- 轨迹评分(Trajectory Scoring)
- 轨迹模拟(Trajectory Simulation)
2. PDM Simulator (PDM仿真器)
功能:
- 车辆动力学模拟(使用Kinematic Bicycle Model)
- LQR控制器
- 轨迹执行
3. PDM Scorer (PDM评分器)
评分维度:
- NC: 无责任碰撞(No at-fault Collisions)
- DAC: 可行驶区域合规(Drivable Area Compliance)
- DDC: 行驶方向合规(Driving Direction Compliance)
- TLC: 交通灯合规(Traffic Light Compliance)
- EP: 自车进度(Ego Progress)
- TTC: 碰撞时间(Time to Collision)
- LK: 车道保持(Lane Keeping)
- HC: 历史舒适度(History Comfort)
- EC: 扩展舒适度(Extended Comfort)
4. Metric Caching Engine (指标缓存引擎)
作用: 预计算场景的静态指标 优势: 避免重复计算,提高效率
5. Traffic Agents Policy (交通参与者策略)
类型:
- ConstantVelocity: 恒速策略
- LogReplay: 日志回放
- IDM (Intelligent Driver Model): 智能驾驶员模型
四、点火钥匙(启动流程)
1. 评估流程启动
run_pdm_score.py → 主入口
↓
初始化Agent
↓
加载场景数据(SceneLoader)
↓
加载缓存指标(MetricCacheLoader)
↓
两阶段评估:
- Stage 1: 初始场景评估
- Stage 2: 后续场景加权评估
↓
生成EPDMS分数
2. 训练流程启动
run_training.py → 训练入口
↓
构建特征(FeatureBuilder)
↓
构建目标(TargetBuilder)
↓
前向传播(Forward)
↓
计算损失(Compute Loss)
↓
反向传播和优化
3. 提交流程启动
run_create_submission_pickle.py → 生成提交文件
↓
加载测试场景
↓
运行Agent推理
↓
保存轨迹预测
↓
打包为pickle文件
五、数据流向
传感器数据 → AgentInput → Agent.compute_trajectory()
↓ ↓
相机图像/LiDAR点云 特征提取
↓ ↓
神经网络前向传播
↓
轨迹预测
↓
PDM评分系统
↓
EPDMS分数
六、核心设计理念
1. 伪仿真(Pseudo-Simulation)
- 结合开环和闭环的优势
- 通过增强真实数据实现闭环效果
- 计算效率提升6倍
2. 两阶段评估
- 第一阶段:评估初始4秒轨迹
- 第二阶段:评估多个可能的后续场景
- 高斯加权聚合最终分数
3. 模块化设计
- Agent抽象接口
- 可插拔的评分器
- 灵活的传感器配置
- 统一的数据加载器