A Framework for Vehicle Motion Planning Research
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
News
20 Aug, 2023
: We renamed our repository to "tuPlan Garage" due to trademark conflicts.01 Aug, 2023
: We released the code for GC-PGP!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!
Overview
-
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.
Contributing
If you consider contributing to tuPlan Garage, make sure to check out our Contribution Guidelines
Method
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.
Results
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 | 56 | 55 | 83 | 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
To Do
- 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
Getting started
1. Installation
To install tuPlan Garage, please follow these steps:
- setup the nuPlan dataset (described here) and install the nuPlan devkit (see here)
- download tuPlan Garage and move inside the folder
git clone https://github.com/autonomousvision/tuplan_garage.git && cd tuplan_garage
- make sure the environment you created when installing the nuplan-devkit is activated
conda activate nuplan
- install the local tuplan_garage as a pip package
pip install -e .
- add the following environment variable to your
~/.bashrc
NUPLAN_DEVKIT_ROOT="$HOME/nuplan-devkit/"
2. Training
When running a training, you have to add the hydra.searchpath
for the tuplan_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.
3. Evaluation
Same as for the training, when running an evaluation, you have to add the hydra.searchpath
for the tuplan_garage
correctly.
The example below runs an evaluation of the pdm_closed_planner
on the val14_split
, both of which are part of the tuplan_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://tuplan_garage.planning.script.config.common, pkg://tuplan_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/
Contact
If you have any questions or suggestions, please feel free to open an issue or contact us ([email protected]).
Citation
If you find tuPlan 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}
}
Disclaimer
tuPlan Garage includes code from Motional's nuplan-devkit. We are not affiliated with Motional, and the repository is not published, maintained or otherwise related to Motional.