Code Generation and Conic Constraints for Model-Predictive Control on Microcontrollers with Conic-TinyMPC
Ishaan Mahajan, Khai Nguyen, Samuel Schoedel, Elakhya Nedumaran, Moises Mata, Brian Plancher, Zachary Manchester
AI summary
Problem
Deploying model-predictive control with expressive conic constraints on resource-limited microcontrollers is computationally prohibitive, and existing embedded solvers lack native conic support, efficient warm-starting, or easy code generation for tiny hardware.
Approach
The authors extend the TinyMPC framework with second-order cone support and a multi-language code-generation tool that exploits problem structure, caches precomputed terms, and uses division-free ADMM iterations for efficient embedded deployment.
Key results
- Up to 142.7× speedup and two-order-of-magnitude memory reduction over state-of-the-art embedded solvers
- Enables solving order-of-magnitude larger problems within tight microcontroller memory constraints
- Successfully deployed on a 27g Crazyflie quadrotor for trajectory tracking with conic glideslope constraints
- Provides open-source, dependency-free C++ code generation with Python, MATLAB, and Julia interfaces
Why it matters
It enables advanced, constraint-rich MPC on tiny, low-cost robots and embedded systems that previously lacked the compute to run them.
Abstract
Model-predictive control (MPC) is a state-of-the- art control method for constrained robotic systems, yet deploy- ment on resource-limited hardware remains difficult. This chal- lenge is magnified by expressive conic constraints, which offer greater modeling power but require significantly more com- putation than linear alternatives. To address this challenge, we extend recent work developing fast, structure-exploiting, cached solvers for embedded applications based on the Alternating Direction Method of Multipliers (ADMM) to provide support for second-order cones, as well as C++ code generation from Python, MATLAB, and Julia. Microcontroller benchmarks show that our solver provides up to a two-order-of-magnitude speedup, ranging from 10.6x to 142.7x, over state-of-the-art embedded solvers on QP and SOCP problems, and enables us to fit order-of-magnitude larger problems in memory. We validate our solver’s deployed performance through simulation and hardware experiments, including trajectory tracking with conic constraints on a 27g Crazyflie quadrotor. Our open-source code is available at https://tinympc.org.