Paper | Supplementary | Talk | Slides | Video
Parting with Misconceptions about Learning-based Vehicle Motion Planning
Daniel Dauner1,2, Marcel Hallgarten1,3, Andreas Geiger1,2, and Kashyap Chitta1,2
1 University of Tübingen, 2 Tübingen AI Center, 3 Robert Bosch GmbHThis repo is intended to serve as a starting point for vehicle motion planning research on nuPlan. We provide a publicly accesible configuration for validation, comprehensive set of baselines, and pre-trained planning models.
teaser.mp4
04 Jul, 2023
: We released the code and models for our ML planners. Additional baselines are coming soon, please stay tuned!26 Jun, 2023
: We released our supplementary material and the code for PDM-Closed.14 Jun, 2023
: We released our paper on arXiv.2 Jun, 2023
: Our approach won the 2023 nuPlan Challenge!
-
The release of nuPlan marks a new era in vehicle motion planning research, offering the first large-scale real-world dataset and evaluation schemes requiring both precise short-term planning and long-horizon ego-forecasting. Existing systems struggle to simultaneously meet both requirements.
-
Indeed, we find that these tasks are fundamentally misaligned and should be addressed independently.
-
We further assess the current state of closed-loop planning in the field, revealing the limitations of learning-based methods in complex real-world scenarios and the value of simple rule-based priors such as centerline selection through lane graph search algorithms.
-
More surprisingly, for the open-loop sub-task, we observe that the best results are achieved when using only this centerline as scene context (i.e., ignoring all information regarding the map and other agents).
-
Combining these insights, we propose an extremely simple and efficient planner which outperforms an extensive set of competitors, winning the nuPlan planning challenge 2023.
If you consider contributing to nuPlan Garage, make sure to check out our Contribution Guidelines
We decompose the process of determining a safe and comfortable trajectory into two sub-tasks: (1) planning the short-term motion, and (2) accurately forecasting the long-term ego trajectory. While the former primarily impacts closed-loop performance, the latter is essential for the open-loop task. Our method employs a rule-based predictive planner to generate a trajectory proposal, and a learned ego-forecasting module that refines the trajectory with a particular emphasis on long-term forecasting.
Planning results on the proposed Val14 benchmark. Please refer to the paper for more details.
Method | Representation | CLS-R ↑ | CLS-NR ↑ | OLS ↑ | Time (ms) ↓ |
---|---|---|---|---|---|
Urban Driver* | Polygon | 44 | 45 | 76 | 64 |
GC-PGP | Graph | 54 | 57 | 82 | 100 |
PlanCNN | Raster | 72 | 73 | 64 | 43 |
IDM | Centerline | 77 | 76 | 38 | 27 |
PDM-Open | Centerline | 54 | 50 | 86 | 7 |
PDM-Closed | Centerline | 92 | 93 | 44 | 91 |
PDM-Hybrid | Centerline | 92 | 93 | 84 | 96 |
Log Replay | GT | 80 | 94 | 100 | - |
*Open-loop reimplementation of Urban Driver
- Additional baselines
- Visualization scripts
- Contribution guide
- ML planners code & checkpoints
- Supplementary material, video, slides
- Val14 benchmark
- Installation tutorial
- PDM-Closed release
- Initial repo & main paper
To install nuPlan garage, please follow these steps:
- setup the nuPlan dataset (described here) and install the nuPlan devkit (see here)
- download nuPlan Garage and move inside the folder
git clone https://github.com/autonomousvision/nuplan_garage.git && cd nuplan_garage
- make sure the environment you created when installing the nuplan-devkit is activated
conda activate nuplan
- install the local nuplan_garage as a pip package
pip install -e .
- add the following environment variable to your
~/.bashrc
NUPLAN_DEVKIT_ROOT="$HOME/nuplan-devkit/"
When running a training, you have to add the hydra.searchpath
for the nuplan_garage
correctly.
Note: since hydra does not yet support appending to lists (see here), you have to add the original searchpaths in the override.
Training scripts can be run with the scripts found in /scripts/training/
.
Before training from an already existing cache, please check this issue.
You can find our trained models here.
Same as for the training, when running an evaluation, you have to add the hydra.searchpath
for the nuplan_garage
correctly.
The example below runs an evaluation of the pdm_closed_planner
on the val14_split
, both of which are part of the nuplan_garage
python $NUPLAN_DEVKIT_ROOT/nuplan/planning/script/run_simulation.py \
+simulation=closed_loop_nonreactive_agents \
planner=pdm_closed_planner \
scenario_filter=val14_split \
scenario_builder=nuplan \
hydra.searchpath="[pkg://nuplan_garage.planning.script.config.common, pkg://nuplan_garage.planning.script.config.simulation, pkg://nuplan.planning.script.config.common, pkg://nuplan.planning.script.experiments]"
You can find exemplary shells scripts in /scripts/simulation/
If you have any questions or suggestions, please feel free to open an issue or contact us (kashyap.chitta@uni-tuebingen.de).
If you find nuPlan garage useful, please consider giving us a star 🌟 and citing our paper with the following BibTeX entry.
@article{Dauner2023ARXIV,
title={Parting with Misconceptions about Learning-based Vehicle Motion Planning},
author={Dauner, Daniel and Hallgarten, Marcel and Geiger, Andreas and Chitta, Kashyap},
journal={arXiv},
volume={2306.07962},
year={2023}
}
nuPlan garage includes code from the following projects: nuplan-devkit. Thanks to the community for these great open-source contributions!