TinyMPC is an optimization solver designed for convex model-predictive control, offering high speed and a minimal memory footprint. Implemented in pure C/C++, it carries the MIT license and can be compiled into an embedded solver, making it particularly well-suited for control and robotics applications. Additionally, TinyMPC provides interactive interfaces for seamless integration with high-level languages such as Python, Julia, and Matlab.
Visit the documentation to learn how to use TinyMPC.
Visit our GitHub Discussions page for any questions related to the solver!
If you use TinyMPC in an academic work, please cite the relevant papers:
@inproceedings{tinympc,
title={TinyMPC: Model-Predictive Control on Resource-Constrained Microcontrollers},
author={Khai Nguyen and Sam Schoedel and Anoushka Alavilli and Brian Plancher and Zachary Manchester},
booktitle={IEEE International Conference on Robotics and Automation (ICRA)},
year = {2024}
}
@misc{tinympc2,
title={Code Generation for Conic Model-Predictive Control on Microcontrollers with TinyMPC},
author={Sam Schoedel and Khai Nguyen and Elakhya Nedumaran and Brian Plancher and Zachary Manchester},
year={2024},
eprint={2403.18149},
archivePrefix={arXiv},
}
For more information, please see the TinyMPC website.
This project was conducted within the Robotic Exploration Lab, at Carnegie Mellon University.
The TinyMPC C/C++ code can be found in the main TinyMPC repository, and build instructions can be found in the documentation.
The Python interactive interface with examples is available at tinympc-python.
The MATLAB interactive interface with examples is available at tinympc-matlab.
The Julia interactive interface with examples is available at tinympc-julia.