navsim
https://github.com/autonomousvision/navsim
在自动驾驶领域,规划任务,或者说自车轨迹预测任务( Planning/trajectories prediction)是非常重要的任务,直接影响自动驾驶的效果。
过去大家常用的数据集,比如 NuScenes, 是为感知专门设计的,优先考虑的是感知场景的多样性和标注准确性,并不适用于规划任务。事实上,大约 75% 的 nuScenes 场景涉及简单的直线驾驶,其中仅基于运动自我状态(忽略感知)的 MLP 就可以实现最好的 ADE(平均位移误差)指标。
NuScenes 仅支持开环评测(open-loop evaluation),常常用 ADE/FDE 等简单的指标,无法评测安全性(safety)、舒适性(comfort)和驾驶完成度(progress)等更重要的指标。
闭环评测(close-loop evaluation)支持这些指标的评测, 但是又存在“领域差异(domain-gap)”问题 —— 闭环评测使用的合成传感器数据和真实世界数据的差距比较大,而且,因为计算量大,不具备可扩展性( Scability)。
也就是说,不管是开环评测,还是闭环评测,都存在比较大的问题,需要一种新的评测方案。
NAVSIM 是什么?
NAVSIM 是介于开环和闭环评测之间一种新的评测方案,旨在同时获得 NuScenes 这种开环评测集的数据丰富度,以及 NuPlan 这种数据闭环评测集的指标丰富度。这是一种数据驱动的非反应式的自动驾驶仿真&基准测试方案(Data-Driven Non-Reactive Autonomous Vehicle Simulation & Benchmarking。
什么意思呢?一个个词分开看
- Data-driven:NAVSIM 是基于 OpenScene 数据集,经过筛选过滤得到。
- Non-Reactive:NAVSIM 计算评测指标时,对每个场景(Scene),即一个视频片段,只取第 1 帧输入对应的轨迹输出,且不考虑其他 agent 和自车的交互
NAVSIM 是如何进行 Planning 评测的?
1. 数据处理
NAVSIM 框架本身和数据集无关。任何包含annotated HD maps, object bounding boxes, and sensor data 的数据集都可以转成 NAVSIM 格式,用来评测。
NAVSIM 选择基于 OpenScenes 数据集制作标注数据集。这是一个 NuPlan 的子集,包含 120 小时的驾驶数据,以 2Hz 的频率进行采样。原始数据包含 8 个相机的原始图像(1920×1080)和从 5 个 LiDAR 传感器拼接得到的点云数据。

为了提高数据质量,NAVSIM 还对 OpenScenes 数据集进一步过滤:
- 过滤自车匀速行驶(constant velocity agent)的轨迹
- 过滤明显有标注错误的场景
经过过滤的场景表现出更高的 diversity,比如有更高比例的非常规场景。 最终得到:
- navtrain (103k samples)
- navtest (12k samples)
- navmini (396 scenarios),一个用来快速测试的小数据集
2. 具体评测方案
具体来说:输入第一帧的感知输入和历史轨迹,Planning 算法给出未来一段时间(这里取 h=4s)的轨迹,然后假设未来 4s 这个轨迹固定,自车不会再接受其他环境输入,其他 agent 的行为也不会因为这个轨迹而变化。
因为 NAVSIM 的评测完全基于初始帧的输入,评测的轨迹不能太长,否则差别会累积得越来越大。所以,NAVSIM 只评测 4s 的轨迹输出。这个时长对于闭环评测已经足够( 在NuPlan 的论文里已经论证)。
仿真评测 planning 轨迹,需要模拟车辆真的按轨迹行进。在每个仿真迭代里,NAVSIM 用 LQR controller 来计算车辆的转角和加速度值,用一个 kinematic bicycle mode 来计算车辆在仿真模式下的位置。
通过上面的仿真评测方式,NAVSIM 就可以得到 safety,comfort,progress 等闭环指标了。最后,参考 NuPlan 的做法把这些指标聚合成 PDM(Predictive Driver Model) Score

- 惩罚项(penalities):保持安全和在路上,对 planning 任务是非常重要的, 如果出现碰撞 road user(车辆、行人、骑行者等),或者跑出法规道路的情况,则设置 score_NC=0 或者 score_DAC=0,这会导致该场景下的 PDMS 直接等于 0。但是也有一些特殊情况:
- 对 Non-Reactive 的环境,情况不考虑被动碰撞的情况,比如自车静止被其他车撞了时不考虑
- 当碰撞静态障碍物时,设置 score_NC=0.5
2. weighted average
- EgoProgress(EP):指的是预测轨迹沿着 route center line 行进,EP被计算后会归一化到。特殊处理:PDM-closed Planner 会计算一个最大安全行进距离 (safe upper bound),如果这个最大安全行进距离只有 5m,就忽略低的或者负数进度分数。最后,把 EP 归一化到 0-1 之间
- TTC 用来保证自车和他车的安全距离,默认为1 。在 4s 轨迹里,每个仿真迭代都假设速度和朝向在当前迭代是不变,如果此时自车 ttc 小于某个阈值,则设置 TCC为 0
- Comfort:就是比较轨迹里的 acceleration 和 jerk 是否在一个提前设置的阈值范围内
- 最后,参考 NuPlan,给上述的 subscores 设置的权重分别为:weightEP = 5, weightTTC = 5, weightC = 2.
通过这个公式可以看出,如果想要获得高 PDMS,首先需要确保轨迹不会发生 “碰撞(collision)和脱离法规道路行驶(off-road driving)”,其次,还要提高进度分数、TTC、Comfort 等子分数。
用 NAVSIM 做基准测试的效果如何?
- 相比开环指标(OLS), PDMS 和 闭环指标()CLS的一致性更高


2. 从一些开源的端到端算法的评测结果看,PDMS 指标也是合理的
- 用 NAVSIM 评测不同算法

- 用 NAVSIM 评测 Transfuser 在不同设置下的效果

未来工作
- 增加指标(比如是否遵守 stop sign,traffic light等行驶规则的评测指标)
- 增加环境的反应(这在 NAVSIM-V2 已经部分实现, ICCV2025 闭环自动驾驶比赛用的就是 NAVSIM-V2)
- 在更多数据集上尝试
参考资料
- NIPS2024-NAVSIM: Data-Driven Non-Reactive Autonomous Vehicle Simulation and Benchmarking
NIPS2024-NAVSIM:数据驱动非反应式自动驾驶车辆仿真与基准测试 - Pseudo-Simulation for Autonomous Driving
- Is ego status all you need for open-loop end-to-end autonomous driving?