Files

Controller Module

The simulator is packaged with a geometric tracking controller for a quadrotor, found in quadrotor_control.py. Based on this paper the controller takes flat outputs (position and yaw) and outputs a dictionary containing different control abstractions (e.g., angle, rate, motor speeds).

Currently, the Multirotor object accepts the following controller inputs (abstractions):

  • cmd_motor_speeds: the lowest control abstraction. The controller directly commands individual motor speeds.
  • cmd_motor_thrusts: one step up, the controller commands individual thrusts for each motor.
  • cmd_ctbr: the controller commands a collective thrust (ct) and body rates (br) on each axis.
  • cmd_ctbm: the controller commands a collective thrust (ct) and body moments (bm) on each axis.
  • cmd_ctatt: the controller commands a collective thrust (ct) and attitude (as a quaternion).
  • cmd_vel: the controller commands a velocity vector in the world frame. Assumes yaw is 0.

For higher control abstractions, e.g. cmd_vel or cmd_ctatt, the lower level controllers are hidden in Multirotor. The gains for these controllers were hand-tuned for the Crazyflie parameters, so they may need tuning if a different vehicle is being used.

Other controllers can be developed but must complement the vehicle and the trajectory they are trying to stabilize to.