This is the official implementation of When Planners Meet Reality: How Learned, Reactive Traffic Agents Shift nuPlan Benchmarks by Steffen Hagedorn, Aron Distelzweig, and Alexandru Condurache, accepted at ICRA 2026. The code allows the users to reproduce and extend the results reported in the paper. Please cite the paper below when reporting, reproducing, or extending the results.
This software is a research prototype, solely developed for and published as part of the publication cited above. It will neither be maintained nor monitored in any way.
Clone both repositories into the same directory.
git clone https://github.com/motional/nuplan-devkit.git
git clone https://github.com/rainmaker22/SMART.git
cd nuplan-devkit/nuplan
rm -rf planning
git clone https://github.com/boschresearch/interactive-closed-loop.git planning
cd planning
conda env create -f environment.yml
conda activate nuplan_smart
run the following pip installs to use the correct versions:
pip install selenium==4.35.0
pip install numpy==1.23.4 urllib3==1.26.20
Make sure to adjust these paths to your setup:
- export NUPLAN_DEVKIT_ROOT="path/nuplan-devkit"
- export NUPLAN_DATA_ROOT="path/nuplan/dataset"
- export NUPLAN_MAPS_ROOT="path/nuplan/dataset/maps"
- export NUPLAN_MAP_VERSION="nuplan-maps-v1.0"
- export NUPLAN_EXP_ROOT="path/nuplan/exp"
- export NUPLAN_CACHE_ROOT="path/nuplan/exp/cache"
- export SMART_ROOT="path/SMART"
- export PYTHONPATH="$NUPLAN_DEVKIT_ROOT:$SMART_ROOT:$PYTHONPATH"
For the simulation we provide a checkpoint of the model under planning/checkpoint. After installing and setting everything up correctly you can run this example command to check if the simulation runs correctly:
python nuplan-devkit/nuplan/planning/script/run_simulation.py \
experiment_name=simulation_smart_agents \
+simulation=closed_loop_smart_reactive_agents \
planner=log_future_planner \
scenario_builder=nuplan \
scenario_filter=test_one_scenario
If you want to train the SMART model with nuPlan data, you can use the provided preprocessing script: generate_pkl_from_nuplan_for_smart.py which you can find under planning/script.
This script can be configured similar to the scenario filter YAML files to select scenarios for preprocessing. It generates pickle files which can then be used as input to train the SMART model, as described in the SMART GitHub repository.
To cite the paper please use the following bibtex:
@inproceedings{hagedorn2026planners,
title={When Planners Meet Reality: How Learned, Reactive Traffic Agents Shift nuPlan Benchmarks},
author={Hagedorn, Steffen and Distelzweig, Aron and Condurache, Alexandru P},
booktitle={2026 IEEE International Conference on Robotics and Automation (ICRA)},
pages={17107--17114},
year={2026},
organization={IEEE}
}This project builds on and modifies the nuPlan devkit (Apache-2.0, Copyright 2021 Motional) and uses the SMART traffic agent model (Apache-2.0) as reactive agents. We thank the authors of these works for their great work to build upon. See 3rd-party-licenses.txt for details.
interactive-closed-loop is open-sourced under the AGPL-3.0 license. See the LICENSE file for details.
For a list of other open source components included in interactive-closed-loop, see the file 3rd-party-licenses.txt.
