Git Product home page Git Product logo

nuplan_garage's Introduction

nuplangarage

A Framework for Vehicle Motion Planning


This repo is intended to serve as a starting point for vehicle motion planning research on nuPlan. We will provide a publicly accesible configuration for validation, comprehensive set of baselines, and pre-trained planning models.


teaser.mp4

News

  • 04 Jul, 2023: We released the code and models for our ML planners. Additional baselines and a contribution guide 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!

Overview

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 GmbH

  • 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.


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 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

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 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/"

2. Training

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.

3. Evaluation

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/

Contact

If you have any questions or suggestions, please feel free to open an issue or contact us ([email protected]).

Citation

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}
}

Acknowledgements

nuPlan garage includes code from the following projects: nuplan-devkit. Thanks to the community for these great open-source contributions!

nuplan_garage's People

Contributors

danieldauner avatar kashyap7x avatar mh0797 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.