  Non-linear model predictive control (nMPC) is a powerful approach to control
complex robots (such as humanoids, quadrupeds, or unmanned aerial manipulators
(UAMs)) as it brings important advantages over other existing techniques. The
full-body dynamics, along with the prediction capability of the optimal control
problem (OCP) solved at the core of the controller, allows to actuate the robot
in line with its dynamics. This fact enhances the robot capabilities and
allows, e.g., to perform intricate maneuvers at high dynamics while optimizing
the amount of energy used. Despite the many similarities between humanoids or
quadrupeds and UAMs, full-body torque-level nMPC has rarely been applied to
UAMs.
  This paper provides a thorough description of how to use such techniques in
the field of aerial manipulation. We give a detailed explanation of the
different parts involved in the OCP, from the UAM dynamical model to the
residuals in the cost function. We develop and compare three different nMPC
controllers: Weighted MPC, Rail MPC, and Carrot MPC, which differ on the
structure of their OCPs and on how these are updated at every time step. To
validate the proposed framework, we present a wide variety of simulated case
studies. First, we evaluate the trajectory generation problem, i.e., optimal
control problems solved offline, involving different kinds of motions (e.g.,
aggressive maneuvers or contact locomotion) for different types of UAMs. Then,
we assess the performance of the three nMPC controllers, i.e., closed-loop
controllers solved online, through a variety of realistic simulations. For the
benefit of the community, we have made available the source code related to
this work.
