Last quarter I continued the study of drone simulations and focused on Crazyflie 2.0. By reading Crazyflie’s Technical Report: Design of a Trajectory Tracking Controller for a Nanoquadcopter [1] and looking into Crazyflie’s source codes[2], I had better understanding of the control algorithms used by Crazyflie and other drones. This will help me design the control algorithms for single motor flying robot. The control method used on crazyflie is cascade control. The control system contains two parts: on-board controls and off-board controls. On-board control has two PID control loops: the inner loop is a controller controlling row, pitch and yaw rates, and the outer loop is a controller controls attitudes. In addition to these two controllers, a control mixer is used to convert the row, pitch and yaw rates into motor PWM signals. The off-board controllers read in the desired positions as inputs, and output the desired setpoints for the on-board controllers.

After understanding the control algorithm used on crazyflie, my current work is to implement the algorithm using python so that I can simulate the crazyflie control system on my computer and be able to modify the control for single rotor robot system. So far, I have done testing the PID controller module, and will continue work on the building and testing of other parts of the controller.


  1. Luis, C., & Le Ny, J. (August, 2016). Design of a Trajectory Tracking Controller for a Nanoquadcopter. Technical report, Mobile Robotics and Autonomous Systems Laboratory, Polytechnique Montreal
  2. Bitcraze, GitHub repository,

Next Post Previous Post