Arduino hardware based quadcopter which uses the MPU6050 acceleoromter. Information about the desired pitch and roll values are sent to the Arduino via a radio remote. These values are then compared to the current values calculated by the MPU6050 sensor and the errors are corrected by changing the motor speeds. The amount by which the motor speeds should be changed are determined by a proportional-derivative feedback mechanism. The proportional mapping is actually gaussian to produce more drastic changes in motor speed at large errors and small corrections at small errors.
Currently the code works as intended and the correct motors spin faster when the quadcopter is tilted by hand. However upon an attempted takeoff the quadcopter is unable to balance itself. I believe this can be fixed by a good choice of constants in the proportional-derivative feedback part of the code.