The controller module is implemented in agilib/src/controller/. There are different kinds of controllers implemented:

  • MPC: Model Predictive Controller. It uses acados with HPIPM solver to build an optimization problem that minimizes the distance between the designed reference and the online prediction.

  • geometric_controller: It implements a differential flatness based geometric controller.

  • PID: It implements a classical PID controller.

  • INDI: Inverse Nonlinear Dynamic Inversion controller. It’s primarily used for inner loop control (tracking body rates).