muAO-MPC

muAO-MPC: A free code generation tool for embedded real-time linear model predictive control. μAO-MPC is a code generation software package for linear model predictive control. μAO-MPC generates highly portable C code tailored for embedded applications. The underlying optimization algorithm and its implementation explicitly consider many of the limitations and requirements of real-time embedded applications, and in particular of microcontroller applications: low memory footprint, deterministic execution time, only additions and multiplications are performed (no divisions, square roots, etc.), and support for fixed-point and floating- point arithmetic. μAO-MPC is developed at the Laboratory for Systems Theory and Automatic Control, is written in Python, and provides MATLAB/Simulink interfaces to the generated C code. The MPC optimization algorithm is a quadratic program (QP) solver based on an augmented Lagrangian method (also called method of multipliers) combined with Nesterov’s fast gradient method. Other QP solvers can also be easily used. The generated code has been tested in several platforms, including x86/AMD64 PCs, ARM Cortex-M microcontrollers, Lego Mindstorms NXT, and Arduino microcontrollers.