# TinyMPC
**Repository Path**: shi-feng-logic/tiny-mpc
## Basic Information
- **Project Name**: TinyMPC
- **Description**: Model-predictive control for microcontrollers
- **Primary Language**: C++
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-11-06
- **Last Updated**: 2025-11-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# TinyMPC: Model-Predictive Control on Resource-Constrained Microcontrollers
If you have any questions related to the solver, visit the [GitHub Discussions](https://github.com/orgs/TinyMPC/discussions) page. This guarantees accessibility for everyone.
The documentation is available at [tinympc.org](https://tinympc.org/)
High-level language interfaces with detailed examples and code generation are available in [Python](https://github.com/TinyMPC/tinympc-python), [Julia](https://github.com/TinyMPC/tinympc-julia), and [MATLAB](https://github.com/TinyMPC/tinympc-matlab).
## Building
For Windows - Enable ```wsl``` before following prompts below
1. On terminal, clone this repo
```bash
git clone https://github.com/TinyMPC/TinyMPC.git
```
2. Navigate to root directory and run
```bash
cd TinyMPC && mkdir build && cd build
```
3. Run CMake configure step
```bash
cmake ..
```
4. Build TinyMPC
```bash
cmake --build .
```
## Examples
* Run the `quadrotor_hovering` example
```bash
./examples/quadrotor_hovering
```
* Run the `codegen_cartpole` example then follow the same building steps inside that directory
```bash
./examples/codegen_cartpole
```
## Citing TinyMPC
If you are using TinyMPC, we encourage you to
* Cite the related 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},
year={2024},
booktitle={IEEE International Conference on Robotics and Automation (ICRA)},
}
```
```
@misc{tinympc-conic-codegen,
title={Code Generation and Conic Constraints for Model-Predictive Control on Microcontrollers with Conic-TinyMPC},
author={Ishaan Mahajan and Khai Nguyen and Sam Schoedel and Elakhya Nedumaran and Moises Mata and Brian Plancher and Zachary Manchester},
year={2025},
eprint={2403.18149},
archivePrefix={arXiv},
}
```
```
@inproceedings{tinympc-adaptive,
title={Robust and Efficient Embedded Convex Optimization through First-Order Adaptive Caching},
author={Ishaan Mahajan and Brian Plancher},
booktitle={IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
year={2025}
}
```
* Put a star ⭐ on this repository.
**Excited to hear your TinyMPC success stories—share them with us!**
## Bug reports and support
Please report any issues via the [Github issue tracker](https://github.com/TinyMPC/TinyMPC/issues). All types of issues are welcome including bug reports, documentation typos, feature requests and so on.
## Running on MCUs
Numerical benchmarks against other solvers on MCUs are available [here](https://github.com/RoboticExplorationLab/mcu-solver-benchmarks).
## TinyMPC on the Crazyflie
TinyMPC-integrated firmware on the Crazyflie nano-quadrotor is available [here](https://github.com/RoboticExplorationLab/tinympc-crazyflie-firmware).
## TinyMPC-AL
An earlier version (not optimized) which can deal with nonlinear dynamics (e.g., bicycle models) is available [here](https://github.com/RoboticExplorationLab/TinyMPC-AL).
## Notes