Quadrotor Drift Problem !

Hi All,

I am working on a quadrotor project. With the help of 32 bit 72mhz IC, i am doing 300 Hz attitude and speed control. I made the IMU card with ITG3200, ADXL345, BMP180 and HMC5883 sensors. 
I am using AXI 2217 BL motor and MK ESCs via UART. We also use HiModel PWM esc with up to 400 Hz PWM update rate.

My problems are:

1- I can control the vehicle by hand easily (not as much as Parrot AR Drone !!!), but when i put my hands off of the transmitter (Futaba 10C), it drifts in X and Y axis; and then it stops and go other direction with high speed and the oscillation increases. After some googleing, i found a trick and set the internal filter of ITG3200 gyro to 42Hz (was 256 Hz). After applying the new gyro filter, it helped a bit but the problem still exists. 
My transmitter stick limits between +90 and -90 degrees and the transmitter angle inputs directly goes into the controller.

2- I've looked at the ITG3200's output and see some noise. After powering off and on again; noise has been removed and saw stable output. (Note: i remove the GYRO BIAS after 5 seconds of collecting sensor data). I mean the noise is not predicable; and exists sometimes.

Any help will be appreciated.

You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –


  • What software are you using? The ArduCopter, your own code, or something else?


    If your using your own code or something else, what kind of filter is used to combine the IMU data between the sensors? Kalman filtering or simple complementary filter?


    The quad that I have uses far fewer sensors than you do, relying only on gyro's and accelo's to do the horizontal stabilization. I was having drift problems when I was using just the gyros, and after some reading and thought I can explain this as "an accumulation of quantization error in the ADC process." Angles determined by gryo's must use an integration process, and any small errors in the gryo data will gradually add up and cause the craft to drift.


    The addition of the accelerometer data canceled this out, because the accelerometers have a constant reference (gravity) that is used to determine the angles horizontal to the ground plane. But, the accelerometers could not be used alone.


    Try to disable the other sensors and go with just the gryo's and accello's. Confirm their operation, and then start to add the compass and barometer into the system to see which is giving you problems.

This reply was deleted.