Yuanfei Lin*, ✉, Sebastian Illing*, Matthias Althoff
Technical University of Munich
(*) Equal contribution. (✉) Corresponding author.
For using SanDRA with OpenAI models, you need an OpenAI API-key. Make sure to export it as environment variable named OPENAI_API_KEY. If you'd rather use local models, you can follow the instructions in section Run with local LLMs.
For leveraging reachability analysis you need to install
- commonroad-reach-semantic: branch
feature/sandra(useexport CXX=/usr/bin/g++-10before installation to use the correct compiler, the whole installation process might take more than 10 minutes.)
Note: After installation, please go to
~/SanDRA/sandra/config.pyand updateCOMMONROAD_REACH_SEMANTIC_ROOTto the directory where you installedcommonroad-reach-semantic.
For set-based predictions, you need to install
- sonia (spot): branch
master(python setup.py install)
- 📄 Release Paper
- 📦 Release Code
- 🌐 Release Project Page
- 📑 Release Updated Paper
There are 2 ways to test SanDRA:
- With a CommonRoad scenario.
- With the highwayenv.
commonroad_run.py and highwayenv_run.py illustrate how to run SanDRA decision making in either of these cases. Please make sure to prepare the seeds for highwayenv / the scenarios for CommonRoad beforehand.
To run SanDRA with local models, you need to follow these steps:
- 📥 Download Ollama
- ⚙️ Install Go (Recommended):
sudo apt update
sudo apt install golang-go- 🤖 Download a model (We recommend to use a model with >=8B parameters to avoid problems with structured outputs):
ollama pull qwen3:8b▶️ Start the Ollama server
ollama serveIf you use SanDRA in your research, please cite:
@article{lin2025sandra,
title = {SanDRA: Safe Large-Language-Model-Based Decision Making for Automated Vehicles Using Reachability Analysis},
author = {Yuanfei Lin and Sebastian Illing and Matthias Althoff},
journal = {arXiv preprint arXiv:2510.06717},
year = {2025}
}