Attitude Control of a Quadrotor using Reinforcement Learning

This project was completed as the final project for the course ENPM808F Robot Learning. The project involves tuning the PID controller for a half a quadrotor using reinforcement learning. The success of the learning algorithm was demonstrated using a custom-fabricated test rig.

The system works by using random values of gains and using a reward and punishment system to make the system stabilize at the 0 degrees. The algorithm considered to have converged if the system remains with +/- 1 degrees of the desired position for at least 10 seconds.

An Arduino based controller was developed from scratch for this project. 

The training algorithm is as follows:


  • Generate random gain Є [-10,10]            (gain)

  • For 2000 iterations

    • Generate gain for fine tuning Є [-1,1]     (fine_gain)

    • For 200 iterations

      • Kp=gain+fine_gain

      • If (angle Є [-1,1] degrees), increment reward

    • If (total reward after 200 iterations) > highest reward, update gain=Kp

    • If(total reward = 200), Training complete