Skip to content

Welcome to TinyMPC's documentation!

TinyMPC is a model-predictive controller built for robots with small amounts of computational power. It's lean and fast, allowing it to run on cheap microcontrollers that have limited memory and speed.

Get Started Read the Paper Watch the Video

Demos

Dynamic obstacle avoidance

TinyMPC runs fast enough to re-linearize constraints at each time step, allowing it to reason about moving obstacles, as it is doing in both videos. The algorithm can additionally handle any number of arbitrary constraints. On the right, for example, it is avoiding the end of the stick while staying in the yz plane.

Extreme pose recovery

TinyMPC can handle recovering from extreme initial conditions. In this example, it is compared against three of the Crazyflie 2.1's stock controllers. Only TinyMPC was able to keep the control inputs under the drone's limits, and the recovery looks pretty good!

Figure-8 tracking

We compared against the same stock controllers for an infeasible figure-8 tracking task (the time given to complete a single figure-8 could only be met if the drone was much more powerful). TinyMPC and PID were able to stay upright, but TinyMPC's trajectory more closely resembled a figure-8.