首页
/ 如何快速上手NAVSIM:7个步骤掌握数据驱动的自动驾驶模拟神器

如何快速上手NAVSIM:7个步骤掌握数据驱动的自动驾驶模拟神器

2026-02-05 05:01:25作者:殷蕙予

在自动驾驶技术飞速发展的今天,评估和优化自动驾驶算法至关重要。NAVSIM 正是这样一款基于数据的非反应式自动驾驶车辆模拟器,它采用先进的技术和独特的方法,为业界提供了一种高效、透明的评估工具。无论是算法开发、性能评估还是挑战赛准备,NAVSIM都能满足您的需求,让自动驾驶模拟变得简单而强大!

🚗 什么是NAVSIM?核心功能大揭秘

NAVSIM(Data-Driven Non-Reactive Autonomous Vehicle Simulation)是一个轻量级但功能强大的自动驾驶模拟平台,源自nuPlan项目的思想和数据,并借鉴了nuScenes的易用性。它的核心优势在于通过简化的鸟瞰视图(BEV)抽象场景,对短期驾驶策略进行无回路模拟测试,计算如进步度和碰撞时间等关键指标。

NAVSIM透明logo 图1:NAVSIM项目logo,展示了其专注于自动驾驶模拟的核心功能。

✨ NAVSIM的独特优势

  • 效率与准确性:无回路仿真计算,快速获取接近真实环境的评估结果
  • 标准化评价:公开排行榜,统一指标定义,消除评估混淆
  • 易用性:简单的数据格式、小巧的下载包以及类似nuScenes的友好接口
  • 持续更新:定期维护和更新的开发工具包(devkit),确保最佳用户体验

📊 PDM得分:全面评估驾驶性能的黄金标准

NAVSIM引入了PDM得分(Predictive Driver Model Score),这是一种综合了五个子指标的评估体系,提供对驾驶性能不同方面的全面分析。所有指标均在4秒非反应式仿真后计算,背景车辆遵循记录的未来轨迹, ego车辆基于LQR控制器移动。

PDM得分构成详情

指标 权重 范围 描述
无责任碰撞(NC) 乘数 {0, 1/2, 1} 评估是否发生责任在ego车辆的碰撞
可驾驶区域合规性(DAC) 乘数 {0, 1} 评估车辆是否保持在可驾驶区域内
碰撞时间(TTC) 5 {0, 1} 评估碰撞时间是否在安全范围内
Ego进度(EP) 5 [0, 1] 评估车辆沿路线的前进效率
舒适性(C) 2 {0, 1} 评估驾驶的平滑度和舒适性

PDMS计算公式PDMS = NC * DAC * (5*TTC + 5*EP + 2*C) / 12

💡 小提示:要评估代理的PDM得分,可运行脚本:cd scripts/ && ./run_cv_pdm_score_evaluation.sh,默认将为简单的恒速规划基线生成评估CSV。

🚀 快速开始:7步安装与配置NAVSIM

1️⃣ 克隆代码仓库

git clone https://gitcode.com/gh_mirrors/na/navsim
cd navsim

2️⃣ 下载数据集

NAVSIM提供了方便的脚本下载所需地图和数据集分割:

cd download
# 下载地图
./download_maps
# 下载迷你数据集(用于快速测试)
./download_mini
# 根据需要下载其他数据集
# ./download_trainval
# ./download_test
# ./download_private_test_e2e

3️⃣ 推荐的目录结构

下载完成后,建议组织如下目录结构:

~/navsim_workspace
├── navsim (包含devkit)
├── exp (实验结果)
└── dataset
    ├── maps (地图数据)
    ├── navsim_logs (日志数据)
    │   ├── test, trainval, private_test_e2e, mini
    └── sensor_blobs (传感器数据)
        ├── test, trainval, private_test_e2e, mini

4️⃣ 设置环境变量

将以下内容添加到您的~/.bashrc文件中:

export NUPLAN_MAP_VERSION="nuplan-maps-v1.0"
export NUPLAN_MAPS_ROOT="$HOME/navsim_workspace/dataset/maps"
export NAVSIM_EXP_ROOT="$HOME/navsim_workspace/exp"
export NAVSIM_DEVKIT_ROOT="$HOME/navsim_workspace/navsim"
export OPENSCENE_DATA_ROOT="$HOME/navsim_workspace/dataset"

应用更改:source ~/.bashrc

5️⃣ 创建并激活conda环境

conda env create --name navsim -f environment.yml
conda activate navsim

6️⃣ 安装开发工具包

pip install -e .

7️⃣ 验证安装

安装完成后,您可以运行示例脚本验证是否安装成功:

# 运行恒速代理PDM得分评估
cd scripts/evaluation/
./run_cv_pdm_score_evaluation.sh

🤖 创建自定义代理:从基础到高级

定义代理的第一步是创建一个继承自navsim.agents.abstract_agent.AbstractAgent的新类。该类必须实现以下核心方法:

  • __init__(): 代理的构造函数
  • name(): 返回代理名称(用于定义评估CSV的文件名)
  • initialize(): 在首次推断前调用,可用于加载状态字典等
  • get_sensor_config(): 返回SensorConfig,定义每个帧应加载的传感器模态
  • compute_trajectory(): 主函数,接收AgentInput并返回Trajectory对象

NAVSIM摄像头配置 图2:NAVSIM支持的摄像头配置动画展示,帮助理解传感器布局。

🧠 基于学习的代理

对于涉及学习组件的代理,还需要实现额外功能。NAVSIM提供了轻量级且易于使用的训练接口。您可以参考navsim.agents.ego_status_mlp_agent.EgoStatusMLPAgent作为示例,实现以下方法:

  • get_feature_builders(): 返回特征构建器列表
  • get_target_builders(): 返回目标构建器列表
  • forward(): 模型的前向传播
  • compute_loss(): 计算训练损失
  • get_optimizers(): 定义训练使用的优化器
  • get_training_callbacks(): 返回训练过程的回调列表

📊 可用的基线代理

NAVSIM提供了几个基线代理,作为新端到端驾驶模型的比较或起点:

  1. ConstantVelocityAgent:简单基线,保持恒定速度和航向角,输出直线轨迹
  2. EgoStatusMLPAgent:盲基线,仅使用ego状态信息(速度、加速度和驾驶命令)
  3. TransfuserAgent:利用摄像头和LiDAR输入的传感器代理,基于Transfuser架构

📚 官方文档与资源

要深入了解NAVSIM的更多细节,包括安装指南、代理创建、数据格式和排行榜提交方法,请查阅项目内的文档:

NAVSIM排行榜界面 图3:NAVSIM排行榜界面展示,激励开发者不断优化算法性能。

🏁 总结

NAVSIM作为数据驱动的非反应式自动驾驶车辆模拟器,为自动驾驶算法的评估和优化提供了高效、透明的平台。通过本文介绍的7步安装指南,您可以快速开始使用NAVSIM,并利用其提供的PDM得分系统全面评估驾驶性能。无论您是自动驾驶领域的新手还是专业开发者,NAVSIM都能满足您的需求,帮助您构建更安全、更高效的自动驾驶系统。

立即加入NAVSIM,开启您的自动驾驶模拟之旅!

(返回顶部)

登录后查看全文
热门项目推荐
相关项目推荐