NAVSIM 最重要的10个文件/函数
TOP 10 核心文件
1. navsim/agents/abstract_agent.py
重要性: ⭐⭐⭐⭐⭐ 作用: 所有Agent的抽象基类,定义了Agent接口规范 关键函数:
compute_trajectory(): 计算轨迹的核心接口get_sensor_config(): 定义传感器配置forward(): 神经网络前向传播
2. navsim/planning/script/run_pdm_score.py
重要性: ⭐⭐⭐⭐⭐ 作用: 评估系统的主入口,执行EPDMS评分 关键函数:
run_pdm_score(): 主评估函数,实现两阶段评估流程- 第一阶段和第二阶段的评分聚合逻辑
3. navsim/planning/simulation/planner/pdm_planner/pdm_closed_planner.py
重要性: ⭐⭐⭐⭐⭐ 作用: PDM闭环规划器的核心实现 关键函数:
compute_planner_trajectory(): 计算规划轨迹_get_closed_loop_trajectory(): 闭环轨迹生成
4. navsim/common/dataclasses.py
重要性: ⭐⭐⭐⭐⭐ 作用: 定义所有核心数据结构 关键类:
AgentInput: Agent输入数据结构Trajectory: 轨迹数据结构Cameras,Lidar,EgoStatus: 传感器和状态数据
5. navsim/planning/simulation/planner/pdm_planner/scoring/pdm_scorer.py
重要性: ⭐⭐⭐⭐⭐ 作用: PDM评分系统的核心实现 关键函数:
score_proposals(): 对候选轨迹评分- 计算各种评分指标(碰撞、舒适度、进度等)
6. navsim/common/dataloader.py
重要性: ⭐⭐⭐⭐ 作用: 数据加载和管理 关键类:
SceneLoader: 场景数据加载MetricCacheLoader: 缓存指标加载SceneFilter: 场景过滤器
7. navsim/planning/simulation/planner/pdm_planner/simulation/pdm_simulator.py
重要性: ⭐⭐⭐⭐ 作用: PDM仿真器,执行轨迹仿真 关键函数:
simulate(): 执行仿真- 集成车辆动力学和控制器
8. navsim/agents/transfuser/transfuser_agent.py
重要性: ⭐⭐⭐⭐ 作用: 端到端学习Agent的代表性实现 关键特性:
- 融合相机和LiDAR输入
- 完整的训练和推理流程示例
9. navsim/planning/training/agent_lightning_module.py
重要性: ⭐⭐⭐⭐ 作用: PyTorch Lightning训练模块 关键函数:
training_step(): 训练步骤validation_step(): 验证步骤- 集成特征和目标构建器
10. navsim/evaluate/pdm_score.py
重要性: ⭐⭐⭐⭐ 作用: EPDMS评分计算的具体实现 关键函数:
pdm_score(): 计算完整的EPDMS分数- 实现所有评分维度的计算
TOP 10 核心函数
1. AbstractAgent.compute_trajectory()
位置: navsim/agents/abstract_agent.py:63
功能: 所有Agent计算轨迹的统一接口
def compute_trajectory(self, agent_input: AgentInput) -> Trajectory:
# 特征提取 → 前向传播 → 轨迹生成
2. run_pdm_score()
位置: navsim/planning/script/run_pdm_score.py:39
功能: 执行完整的EPDMS评估流程
def run_pdm_score(args) -> List[pd.DataFrame]:
# 初始化 → 两阶段评估 → 聚合分数
3. PDMScorer.score_proposals()
位置: navsim/planning/simulation/planner/pdm_planner/scoring/pdm_scorer.py
功能: 对多个候选轨迹进行评分和排序
def score_proposals(self, proposals, observation) -> scores:
# 计算每个提议的多维度分数
4. PDMClosedPlanner.compute_planner_trajectory()
位置: navsim/planning/simulation/planner/pdm_planner/pdm_closed_planner.py:65
功能: PDM闭环规划的主函数
def compute_planner_trajectory(self, current_input) -> AbstractTrajectory:
# 构建地图 → 生成轨迹 → 返回最优轨迹
5. SceneLoader.get_agent_input_from_token()
位置: navsim/common/dataloader.py
功能: 从token加载完整的Agent输入数据
def get_agent_input_from_token(self, token) -> AgentInput:
# 加载传感器数据和车辆状态
6. PDMSimulator.simulate()
位置: navsim/planning/simulation/planner/pdm_planner/simulation/pdm_simulator.py
功能: 执行轨迹仿真
def simulate(self, trajectory, initial_state):
# 使用车辆模型仿真轨迹执行
7. pdm_score()
位置: navsim/evaluate/pdm_score.py
功能: 计算单个场景的EPDMS分数
def pdm_score(metric_cache, model_trajectory, ...) -> PDMResults:
# 计算所有评分维度并聚合
8. Agent.forward()
位置: 各个Agent实现文件 功能: 神经网络的前向传播
def forward(self, features: Dict) -> Dict:
# 特征 → 网络层 → 轨迹预测
9. BatchIDMPolicy.get_actions()
位置: navsim/planning/simulation/planner/pdm_planner/proposal/batch_idm_policy.py
功能: 批量计算IDM策略动作
def get_actions(self, states, targets) -> actions:
# 智能驾驶员模型的批量计算
10. MetricCacheLoader.get_from_token()
位置: navsim/common/dataloader.py
功能: 加载预计算的评估指标
def get_from_token(self, token) -> MetricCache:
# 从缓存加载静态评估指标
函数调用频率和重要性分析
高频调用(每个场景都会调用)
compute_trajectory()- 轨迹计算get_agent_input_from_token()- 数据加载pdm_score()- 评分计算forward()- 前向传播
系统初始化(调用一次但至关重要)
Agent.initialize()- Agent初始化build_worker()- 构建工作进程池instantiate()- Hydra配置实例化
训练关键函数
training_step()- 训练步骤compute_loss()- 损失计算get_optimizers()- 优化器获取
代码复杂度和维护优先级
最高优先级(核心逻辑,需要深入理解)
- PDM评分系统相关代码
- Agent抽象接口
- 两阶段评估流程
中等优先级(重要但相对独立)
- 数据加载器
- 仿真器实现
- 训练框架集成
一般优先级(具体实现,可按需了解)
- 具体Agent实现
- 辅助工具函数
- 可视化代码