The Pipeline Concept

The Pipeline is implemented by agilib/base/pipeline.cpp. Its main purpose is to sequentially execute the different components that form a typical control pipeline. It runs at a fixed rate (100 Hz by default) and executes, most typically,

  • First, it takes care of getting the latest valid state estimate from the estimator

  • Then, it takes the active reference trajectory and uses the sampler to create a sequence of setpoints to be tracked by the controller.

  • Then the controller (inner and possibly outer loops) are run. Different types of controllers can be selected, mainly MPC, Geometric Controller or INDI. The controller outputs a low level command.

  • Finally, a bridge translates the control commands to actual actuator inputs.