Skip to content

SafeRoboticsLab/iLQR_jax_racing

Repository files navigation

Safe Autonomous Racing using ILQR and Rollout-based Shielding: A JAX Implementation

License Python 3.10 Colab Notebook


Logo

Table of Contents

  1. About The Project
  2. Dependencies
  3. Example
  4. License
  5. Contact
  6. Paper
  7. Acknowledgements

About The Project

This repository implements a safe autonomous racing example using ILQR and rollout-based shielding, which relies on JAX for real-time computation performance based on automatic differentiation and just-in-time (JIT) compilation. The repo is primarily developed and maintained by Haimin Hu, a PhD student in the Safe Robotics Lab. Zixu Zhang, Kai-Chieh Hsu and Duy Nguyen also contributed much to the repo (their original repo is here).

Dependencies

This repo depends on the following packages:

  1. jax=0.4.19
  2. jaxlib=0.4.16
  3. matplotlib=3.5.1
  4. numpy=1.21.5
  5. pyspline=1.5.1
  6. python=3.10
  7. yaml=0.2.5

Example

Please refer to the Colab Notebook for a demo usage of this repo.

Alternatively, you can directly run the main script:

python3 example_racecar.py

License

Distributed under the BSD 3-Clause License. See LICENSE for more information.

Contact

Haimin Hu - @HaiminHu - haiminh@princeton.edu

Paper

If you found this repository helpful, please consider citing one of the following papers that turned this repository into research contributions.

  • ILQR-based safety filter:
@article{hu2023active,
  title={Active uncertainty reduction for safe and efficient interaction planning: A shielding-aware dual control approach},
  author={Hu, Haimin and Isele, David and Bae, Sangjae and Fisac, Jaime F},
  journal={The International Journal of Robotics Research},
  pages={02783649231215371},
  year={2023},
  publisher={SAGE Publications Sage UK: London, England}
}
  • ILQR-based Stackelberg game solver:
@inproceedings{hu2024plays,
  title={Who Plays First? Optimizing the Order of Play in Stackelberg Games with Many Robots},
  author={Hu, Haimin and Dragotto, Gabriele and Zhang, Zixu and Liang, Kaiqu and Stellato, Bartolomeo and Fisac, Jaime F},
  booktitle={Proceedings of Robotics: Science and Systems},
  year={2024}
}
  • ILQ-based game solver for data-aware planning:
@inproceedings{lidard2024blending,
  title={Blending Data-Driven Priors in Dynamic Games},
  author={Lidard, Justin and Hu, Haimin and Hancock, Asher and Zhang, Zixu and Contreras, Albert Gim{\'o} and Modi, Vikash and DeCastro, Jonathan and Gopinath, Deepak and Rosman, Guy and Leonard, Naomi and others},
  booktitle={Proceedings of Robotics: Science and Systems},
  year={2024}
}

Acknowledgements

This repo is inspired by the following projects: