I need to get my drone flying still enough that I can rest a glass of water on it.

I've tried a few KK boards and APM 2.6 (3.1 software). I've balanced props, set PID settings, auto-trim / autotune and the drone still tends to inconsistently drift a little one way or another.

What is a plausible way to completely isolate drift?


2 Answers 2


Using existing resources:

Very similar answer to @SteveO - I'd focus on tuning the PID control loop for each motor individually, if possible, to eliminate any instability in the power delivery which would result in the aircraft leaning and therefore drifting.

A great video tutorial on PID control that helped me through a control exam

Using additional resources:

The most stable implementation of drift elimination I've ever seen used an optical flow sensor on the base of the aircraft - much like the old-school optical mouse sensors this looks for an offset of pixels in a certain direction through a small camera. The resultant vector of this movement then becomes your drift value, which is corrected by adjusting the power output in the opposite direction. This is what the Parrot Quadcopters in my lab use and their stability is fantastic.

APM's page on adding an optical flow sensor to your drone controller


I am not a UAV guy, so others may be able to provide more specific answers. But from a controls perspective, I would break the problem into two separate areas: aerodynamics and controller response.

For aero, you want to consider both the inherent stability of your system, and the flight dynamics. Essentially you want the uncontrolled system to be as stable as possible, then add the controller to handle unwanted disturbances. For example, where is the cg of your robot? Would moving some masses lower lead to a more naturally stable system? You want as much inherent stability in the mechanics as you can get, so your controller can use its energy to combat (reject) the disturbances. How else can you improve its aerodynamics? What about a larger propeller, or more prop blades? Or stronger motors? Or a lighter frame? Getting a higher lift to weight ratio is a benefit to stability. Also, consider the system's cross-section if wind is contributing to the unsteadiness. A tapered profile may help prevent impulsive disturbances in windy conditions. These areas are complicated and beyond my experience. But hopefully they will help you look into the system's natural dynamics to see if improvements can be made there.

For the control responsiveness, there are also many items that may help. Of course, faster control loop rates, and highly accurate sensors help. What is the loop rate of your controller? Can you program it more efficiently? Or use a faster micro? And, is the most current sensor data getting to the controller quickly? I suspect a loop rate of around 1 kHz, and sensors with that type of bandwidth, would be required to achieve the type of stability you desire. I would also look at the responsiveness and accuracy of your altitude and attitude sensors. If you are using an IMU, could you add other sensors to get more accurate and/or faster data? What about a downward-pointing (possibly laser) rangefinder to get very peppy altitude measurements? Does your power supply and controller have enough slew rate to accommodate the control output changes needed for stability? Finally, what model are you using in your controller? A basic PID controller should be pretty good if the above items are okay, but if you still have nonsteady motion you might need to look into feedforward control, or maybe H$\infty$ control to get the stability you need.

I know this isn't a real answer, but hopefully it gives you some ideas.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.