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:
    # 从缓存加载静态评估指标

函数调用频率和重要性分析

高频调用(每个场景都会调用)

  1. compute_trajectory() - 轨迹计算
  2. get_agent_input_from_token() - 数据加载
  3. pdm_score() - 评分计算
  4. forward() - 前向传播

系统初始化(调用一次但至关重要)

  1. Agent.initialize() - Agent初始化
  2. build_worker() - 构建工作进程池
  3. instantiate() - Hydra配置实例化

训练关键函数

  1. training_step() - 训练步骤
  2. compute_loss() - 损失计算
  3. get_optimizers() - 优化器获取

代码复杂度和维护优先级

最高优先级(核心逻辑,需要深入理解)

  • PDM评分系统相关代码
  • Agent抽象接口
  • 两阶段评估流程

中等优先级(重要但相对独立)

  • 数据加载器
  • 仿真器实现
  • 训练框架集成

一般优先级(具体实现,可按需了解)

  • 具体Agent实现
  • 辅助工具函数
  • 可视化代码