Quadcopter PID Explained

by Oscar

Most quadcopter software including Betaflight and KISS allows users to adjust PID values to improve flight performance. In this post I will try to explain what PID is, how it affects stability and handling of a drone, and also share some tips on how to tune PID.

The Art of Quadcopter PID Tuning

Quadcopter PID tuning really is an art form. Understanding how to balance different aspects of the flight characteristics to make the craft respond perfectly for your particular flying style, doesn’t happen over night.

You might want a quad to feel snappy, but without oscillations, or maybe you want to have very smooth stick response, but without feeling too sloppy… The key is finding where the balance is.

A working knowledge of PID tuning will help you achieve this, and the more you work with PID settings, the easier it will become to tune your quads to fly exactly the way you want them to.

Back in the early days of the hobby, flight controller firmware was not optimized. A quadcopter would always fly badly with default PID values, which made PID tuning absolutely essential. But that’s no longer necessarily the case (at least for mini quads), thanks to the sophisticated noise filtering and optimized algorithms in modern FC software. These improvements have enabled quadcopters to fly great out of the box. Unless you are using some poor quality parts or flying a model that is badly built.

That’s not to say you can forget about PID tuning, there is always room for improvement in a quad’s performance. And everyone has a different preference when it comes to the handling characteristics of a mini quad. Knowing how to tune PID provides the capability to change a quad that “flies well”, into one that “flies perfectly” for your individual style.

PID tuning tab in Betaflight Configurator

PID Adjustment Page in Betaflight Configurator

What Is PID in a Quadcopter?

PID stands for Proportional, Integral, Derivative, it’s part of a flight controller software that reads the data from sensors and calculates how fast the motors should spin in order to retain the desired rotation speed of the aircraft.

The goal of the PID controller is to correct the “error“, the difference between a measured value (gyro sensor measurement), and a desired set-point (the desired rotation speed). The “error” can be minimized by adjusting the control inputs in every loop, which is the speed of the motors.

quadcopter pid diagram

There are 3 values in a PID controller, they are the P term, I term, and D term:

  • “P” looks at present error –  the further it is from the set-point, the harder it pushes
  • “D” is a prediction of future errors – it looks at how fast you are approaching a set-point and counteracts P when it is getting close to minimize overshoot
  • “I” is the accumulation of past errors, it looks at forces that happen over time; for example if a quad constantly drifts away from a set-point due to wind, it will spool up motors to counteract it

PID Tuning is like Playing Golf :)

A PID system can be simplified into 3 things, measurement, setpoint, and error.

  • Sensors on an FPV drone, i.e. the gyro, takes measurements of what is going on – how fast the drone is rotating.
  • Setpoint is the desired state of the system – i.e. how fast the drone should be rotating.
  • Error is basically the difference between measurement and setpoint.

A PID system on a drone basically tries to minimize error, by telling how fast each motors should spin.

One less accurate but easy to understand analogy I often use is playing golf. What PID does, is like trying to get the golf ball into the hole (setpoint). Every time you hit the ball, it might end up too far, or too short (error), but hopefully it gets closer and closer. You repeat until you eventually get it.

PID tuning is like improving your golf skills, so you can get the golf ball into the hole in as few strikes as possible.

What is Looptime?

From the PID controller reading sensor data to calculating the output, this whole process is called a “loop”. Modern flight controllers in racing drones are capable of doing thousands of “loops” per second.

The time it takes for the FC to complete a loop, is called “looptime”. Looptime can be measured in milli-second, but more commonly it’s measured in Hz. For example:

  • A loop that takes 1 second = 1 cycle per second = 1Hz
  • A loop that takes 1ms (0.001 second) = 1KHz

It is now quite common to see flight controllers that are capable of doing 8KHz looptime, some can even do up to 32KHz. But whether faster is better or not, that’s another long topics. There are pro’s and con’s doing 32KHz, so many people prefer to stick with 8KHz or even lower looptime.

Further Reading: Is faster looptime better for a quadcopter?

The Effect Of Each PID Parameter

Altering PID values affects a quadcopter’s behavior in different ways.

P Gain

P gain determines how hard the flight controller works to correct error and achieve the desired flight path (i.e. where the pilot wants the quad to go by moving the transmitter sticks).

Think of it as a sensitivity and responsiveness setting. The snappy response provided with a high P gain can even make it feel like you have increased your rates.

Generally speaking, higher P gain means sharper control while low P gain means softer control.

If P is too high, the quadcopter becomes too sensitive and tends to over-correct, eventually it will cause overshoots, and you will have high frequency oscillations.

You can lower P to reduce the oscillations, but reduce it too much and your quadcopter will start to feel sloppy.

I Gain

I term determines how hard the FC works to hold the drone’s attitude against external forces, such as wind and off-centered CG.

Think of it as the stiffness setting in the stall motion of your quadcopter, and how well it holds its attitude.

In Betaflight, default I gain works pretty well on most setups. But if you notice some drifting without user command, then increase it. When I is too low you might find yourself having to correct the quad’s flying path a lot more with your sticks, especially when you are active with the throttle.

When I gain gets too high, your quadcopter will be overly constrained by this, and start to feel stiff and unresponsive. It’s similar to having a slower reaction and a decreased P gain. Excessive I gain in extreme cases can create a low frequency oscillation.

Another issue that I gain can address or improve is “throttle dips“.

In the real world, no two ESC’s, motors or propellers are identical, thus they will provide different levels of thrust even when spinning in the same air. When you do a punch out and immediately lower your throttle, one motor might increase and decrease RPM faster than the others, this will cause an unwanted dip movement.

You can increase I gain to “fix” these tiny details in the flight performance. To avoid bringing in undesired “stiffness” to our quads with high I gain, a new feature was introduced in Betaflight called “Anti Gravity“. In a nutshell it allows you to have lower I gain when cruising, and only increase your I gain when doing punchouts.

D Gain

D gain works as a damper and reduces the over-correcting and overshoots caused by P gain. Like a shock absorber stops the suspension from being bouncy, adding D gain can “soften” and counteract the oscillations caused by excessive P gain, as well as minimizing propwash oscillations.

When D is too low, your quad will have bad bounce-backs at the end of a flip or roll, and you will also experience worse propwash oscillations in vertical descents.

Increasing D gain can improve these problems, however, an excessive D value can introduce vibration in your quadcopter because it amplifies the noise in the system. Eventually this will lead to motor overheat and quad oscillation. This post explains in detail why excessive D gain can cause vibration to a drone.

Another side effect of too much D gain is the decrease in the quad’s response, this effect is often described as “mushy”.

Before Adjusting PID…

  • Backup your current PID values, so you can go back if something goes wrong
  • Always tune your quad in Rate Mode (aka Acro Mode)
  • Make sure your quadcopter’s CG (centre of gravity) is right in the middle, CG has an effect on how well your quad will fly, and how easy it is to tune. You can simply shift your battery to move the COG forth and back

Remember, PID tuning is subjective !

There is no right or wrong way of tuning PID, whatever works for you is the right way. Give two people the same quad, they will most likely come up with different PID values that suit their individual flying style.

My Simple Tuning Process and Techniques

I always set RC rates, super rates and expo first, to roughly how I normally like them. Then you can focus on tuning PID and avoids any confusions in the process.

I normally try flying a new build with default PID before starting to tune it just to see how it feels. With modern FC software such as Betaflight, Raceflight and KISS, the stock values usually work quite well for most setups. Take notes of any undesirable behaviour and then adjust PID accordingly.

The other popular method is to to start with really low values – e.g. lower all the values by at least half or more, then increase each one until you see undesired behaviour.

Every time you change a value, you should ask yourself: “is it getting better or worse?” Try to find the peak where the quad has the best flight characteristics before performance starts to degrade again.

Tune one axis at a time: first roll, then pitch, and finally yaw. I adjust one value at a time on each axis, starts with P, then D, and finally I. You might need to go back and forth to fine tune each value because changes to one, will affect the others.

Tuning a quad can take time, it might take 10 mins, an hour or even days to get a perfect tune. It really depends on the quality of the parts, the build, and especially your expectation!

Pro Tip: Always backup your PID, rates and other necessary settings before updating FC firmware which might reset all the settings to default.

P on Roll

Cruise around, with good P, the control should feel precise and the quad should follow your sticks very closely.

Try to do some sharp turns (where you use both the throttle and roll), if P is too low the quad will dip to one side (like a wobble), or in the form of slow oscillation. When P is too high, you will get very fast oscillations. When P is right, you should get minimum oscillations when doing sharp turns.

P on Pitch

Do a split-S (where you move both the throttle and pitch sticks), and as you increase throttle to recover, pay attention to the pitch movement. If the quad pitches up more than it should, then P is probably too low. but if you get some fast oscillations then you need to decrease P.

Fine tune it until you get to a point where the quad feels very responsive and nimble, making sure there is no excessive amount of vibration. Also listen to your motors, twitching motors are a sign of excess P gain which might not be visible in the camera.


TPA is a setting to reduce the effectiveness of P gain as throttle increases.

If your quad flies fine in low to mid throttle, but only gets oscillations with high throttle, then increasing TPA will help.

Do a punch out and see if there is any fast oscillations, if so, increase TPA. Good TPA will give you a relatively smooth punch out. I personally wouldn’t use TPA higher than 0.4, otherwise your quad might feel “loose” at high throttle.

D on Roll and Pitch

When you do aggressive maneuvers like flips and rolls, and your quad overshoots at the end of the move then bounce back, increase D for the affected axis.

Increasing D gain can also help reduce prop wash (oscillation when you descent).

Be careful because excessive D gain can introduce oscillations to your quad, and also make motors run hot, so use just enough to minimize propwash. Another sign of too much D term is fast oscillations at the end of a roll or flip.

Note that to eliminate bounces at the end of a flip or roll, you can also use Setpoint Transition which we will talk about next.

I on Roll

Bank your quad to the left and right to see if it’s holding the angle well. Ideally it should just stay at the same attitude as you release the roll stick. If the quad can’t hold the angle then it’s an indication that I gain is probably too low.

Your quad can drift with the wind, so you might want to increase I a bit more on a windy day depending how bad it is.

I recommend setting I term just high enough to stay level, excessively high I gain can result in a stiff, robotic feeling, and even oscillations.

I on Pitch

When you are flying forward, the pitch angle should stay the same. If it’s not keeping the same angle and changes over time, Increase I on pitch.

If the noise wanders when you are not increasing throttle, then increase I gain.

Anti Gravity Gain

Fly in a straight line and do some rapid punchouts to see if pitch stays at the same angle, if the quad dips down then increase Anti Gravity. I found 3 to 5 to be a good range for most of my setup’s.

P on Yaw

Yaw PID needs to be tuned separately. Default values usually work pretty well on all setups.

Spin quickly on the yaw axis and see how it stops, if you get fast oscillations then decrease P, but if the quad dips one side, then increase P.

Excessive Yaw P won’t cause as much vibration as on roll and pitch because yaw movement is much weaker on a quadcopter (aka. lacking yaw authority). Look for any twitching and oscillations on the yaw axis. Another sign of Yaw P being too high, is the quadcopter gaining altitude when doing rapid yaw movements.

When Yaw P is right the spin should be clean and snappy.

I on Yaw

“I” is there to prevent drift, and “sliding out” in turns, but excessive yaw “I” can introduce instability and actually reduces responsiveness. Yaw “I” should not be higher than just enough to prevent drift.

In most cases just leave Yaw I at default if there is no issue.

Yaw Performance VS. PID

The hardest part to understand and recognize in PID tuning, is probably the yaw axis. However, because you can normally just leave the default Betaflight settings, tuning yaw can wait until you are confident that you can recognize how the changes you make are affecting the characteristics.

PID tuning can help with yaw performance of your quad to certain extent, but you have to understand there are many other factors that can introduce yaw destabilization too.

One of the most common problem with yaw is, when you do a fast yaw spin, the quad shoots upwards and fails to maintain its altitude.

A quadcopter’s yaw performance depends heavily on the hardware, i.e. your motors, propellers and ESC, which determines your maximum yaw rate – how fast you can spin around yaw axis, until you get destabilization.

Apart from PID, there are other things you can do to improve yaw performance:

  • Using Heavier Propellers: Higher pitch propellers can generate more counter-torque at the cost of efficiency
  • Increase Motor RPM by using higher KV motors or increasing battery voltage (e.g. higher cell count LiPo)
  • Using ESC’s with stronger braking – Yaw destabilization can occur when an accelerating motor increases its speed faster than a decelerating motor can slow down
  • Reducing motor distance can help increase yaw authority too: A 6″ frame running 5″ props will have worse yaw performance than a 5″ frame with the same props because of moment of inertia

If you cannot afford to mess around with hardware, the last resort would be to lower your yaw rate, or increase yaw expo, either way will slow down the beginning and the end of a yaw spin to improve stability.

D-Term Setpoint Weight and Setpoint Transition

Setpoint Weight is extremely important, it can totally mask a bad tune, and changes the handling of the quad just as much as PID’s. Therefore I recommend spending a bit more time tuning it.

I have a whole article to explain what Setpoint Weight and Transition is and how they affect flight characteristics of a quad, please check it out. Here is the short version :)

If Setpoint Weight is high, the quad will feel more snappy, robotic, precise and locked-in, but it will also feel rougher. When it’s low, the quad feels smoother but also looser and more sluggish. Racers prefer to have it higher, while freestyle pilots prefer a lower value. I personally use 0.9-1.0, which I believe is a good balance and should work for most people.

For Setpoint Transition, a high value will feel slower, mushier, but smoother between acro moves. A lower value will make the quad accelerate into the next move more aggressively.

The default Setpoint transition of 1 should give you maximum smoothing effect and will help reduce bounces at the end of a flip or roll. I recommend a lower value such as 0.1 to 0.3 which is a good balance between response and smoothness IMO.

ESC Idle Throttle Value

Default is 4% for DShot which is a good starting point for most builds. I usually lower it as much as I can which gives me longer “hang time”, the time you can spend inverted in the air :) But when you set this too low you might get a dip at the end of a roll or flip because it takes longer to get RPM up to speed again.

Not Every Vibration Problem is related to PID

Your hardware configuration plays a big part in the performance of your quadcopter, there are a few things you should check and get right first.


Not all oscillations are caused by high P or D gains. You need to eliminate vibration sources as much as possible on your quadcopter before tuning PID. The balance of motors and propellers, soft-mounting flight controllers and motors, even frame rigidity, can factor in vibrations. With a vibration-free copter, you can set much higher P and D gains for smoother yet more locked-in flight characteristics.

Center of Gravity

Ideally, the center of gravity (CG) to be right in the middle of your quadcopter, where the 4 motors intersect on a horizontal plane, and be as close as possible to the line of propellers on the vertical plane.

When your CG is off-centered, some motors will have to work harder than others, which will affect stability, cause motors to overheat, and limits your maximum speed.

For example – if the LiPo battery is mounted too far back in a quad, it shifts the CG further towards the rear. Now the 2 rear motors might be pushing at 100%, while the 2 front motors are only at 80%. At this point, if you want to push the throttle harder, you can’t! You quad might wobble back and forth, but it will fail to deliver any extra power because the rear motors have already maxed out.

Mass Distribution and Moment of Inertia

Quadcopters with more centralized mass tend to feel more precise, snappy and responsive. When there is more mass on the outside of a quad, it takes more force to rotate it, and longer to accelerate to the desired velocity. Likewise, due to the higher angular mass and inertia, it’s also harder to stop it from rotating.

That’s why X frames (mini quad frame shape) have taken over the racing drone industry from “H designs” when people realized the benefits. Apart from the frame design, lighter motors and ESC’s also help to reduce rotational inertia.

“What’s your PID?” – Wrong Question!

It’s pretty meaningless to use someone else’s PID on your quad. Every quad is unique in some way: motor, propellers, ESC, FC, weight distribution, COG, frame… Even the wind speed and climates are different where we are flying, so the ideal PID values are going to be different too.

What Affects PID Tuning?

Trying some new props? You might want to “re-tune” your PID.

In fact most parts in our quadcopters can have certain effect on the optimal PID. For example frame, propellers, motors, ESC’s etc… So when you swap out components for a different brand or model, it’s a good idea to adjust your PID values accordingly.

In Betaflight and Cleanflight, changing Looptime or ESC protocol can also have an impact on PID. It’s good practice to “re-tune” PID when you change these settings for the best possible performance.

Edit History

  • Oct 2013 – Article created
  • Dec 2015 – Added examples how PID affects flight characteristics in Cleanflight/Betaflight
  • Jan 2018 – Updated article for the latest Betaflight firmware, simplified section “What’s PID Tuning”, and merged with article “My Simple PID Tuning Guide”
  • Feb 2018 – Added info about Setpoint Weight/Transition
  • July 2018 – Added Golf Analogy

I hope you find this tutorial useful. Please consider supporting me on Patreon.

Leave a Comment

By using this form, you agree with the storage and handling of your data by this website. Note that all comments are held for moderation before appearing.


Mike Duncan 23rd November 2019 - 11:29 pm

Is there anyway to tell will your articles were published?

Oscar 1st December 2019 - 4:21 pm

Bottom of the article.

digggs 22nd October 2019 - 10:29 pm

Hi Oscar,

have you ever heard of this symptom:

When I give more throttle or do little punch outs, the quad would yaw a bit to the left. I think I replaced the motors at least twice and am using a new ESC and FC. Before switching the FC I wanted to ask you if you know what my could be. My guess is fried gyro due to soldering.

Jako 8th September 2019 - 7:08 pm

Hello Oscar! First of all thank you for all this informations.
I wanted to ask if you know how works the graupner gr16 (with build in FC) and your opinion about it? So, here I have a ROLL FACTOR, and it says for true X quads it can be 100%, if not simmetrical(usually longer than wider) it must be reduced. So if the distance between the side motors is half the distance of front and rear motors it should be 50%? How is this called in betaflight? I have been driving for half year now, and now I saw it was on 100%(totally non simmetric quad:D). How will affect the quad this change now?
Any information would help.
Thank you and goodbye.

Oscar 10th September 2019 - 6:38 pm

Sorry I am not familiar with the Graupner radios.
Maybe try asking on IntoFPV.com?

Vlad Vinnichenko 12th August 2019 - 8:02 pm

Thank you, Oscar, for sharing knowledge.
Could you, please, expand it to real examples on which axis PIDs should be adjusted depending on X-quad flight errors/issues?


DoctorG 18th February 2019 - 11:38 am

People keep talking about PID settings here and on different websites and youtube videos. I understand now better than before thanks to Oscar (big fan) and other contributors to the hobby.

However no one tackles the GUI of Betaflight, so while I understand PID values I dont understand which settings I am changing. ie. Profiles.

Which profile am I supposed to set PIDS on and doe they relate to Acro/Horizon mode? Should I just change the PIDS on profile 1? Whats Profile 2 for and how do I select it? In flight or before flight?

Thanks oscar much help!

Jeffrey F 15th February 2019 - 9:07 pm

Is there still much to pid tuning with the feedforward option since 3.5? And will u update this guide with that in mind?

Btw great work on all your articles!

Oscar 25th February 2019 - 4:31 pm

Yes I will update this when 4.0 comes out :)
At the moment I am still trying to catch up with all the changes they made since!

Winfried Rijssenbeek 31st October 2018 - 3:03 pm

Dear Oscar, we are building a huge drone with a cage around props to have protection total mass is ca 60 kg. So inertia is quite high. Currently with arducopter we if we use eg PID as 1.35 0.135, 0.004 it is sluggish and can come into a slow oscillation! We can increase the values but slow oscillation is still not solved. We are close to ground flying to be safe. Ground effect? Having such high distributed mass, is there any recommendation for this on PID settings?

Best regards, Winfried

Raf 20th October 2018 - 7:14 pm

I have read many articles and seen many youtube videos but this is the first that makes it really understandble for newbees.

Great work !!!!

Nils Astrologo 17th August 2018 - 7:41 pm

Hi Oscar I’m your super fan I
Love your work, written articles are way better than infinite YouTube videos where peoples never get to the point 😂. One question, I’m tuning my quad and it flies amazing but when is windy I get tiny jello vibrations in the hd footage in the sunny days, someone told me that playing with I gain could fix it?, is that the value I have to work on?
Thank you

Oscar 20th August 2018 - 6:19 pm

One dirty fix to this kind of tiny oscillation is to use “ND filter” :)
It’s hard to say, better to check Blackbox log to find out which term is causing vibration. It could also be filters…
Join our forum for further troubleshoot:

Darmach 6th August 2018 - 10:15 pm

I am not sure if I understood correctly – I do get oscillations on low throttle “drops”, when I’m at let’s say 30 metres and drop the throttle really low. Should the D increase help this?

Oscar 11th August 2018 - 4:12 pm

You mean prop wash? If so then yes increasing D term helps reduce prop wash.

Dave 6th May 2018 - 5:41 am

I just ordered my first tuneable 65 mm quad from China. This article is very clear and concise and is an excellent primer for a nubee like me. Thanks!

Chinedu Amadi 16th June 2017 - 11:16 am

Hello Oscar,

This article has been invaluable in my research. I am working on designing and implementing a model predictive controller on a quadcopter. The current controller on the quadcopter is PID so I needed to grasp the interactions before implementing mine. My question is how do you determine the “desired rotational rate” for the rate PID? I have looked around but so far I have come up short.

The PID rate controller on the quadcopter I am using simply multiplies the euler angle error by a constant to get the desired rate. I did not understand that. Any assistance will be greatly appreciated. Thank you.

Chinedu Amadi

Damian 16th March 2017 - 2:05 pm

Thanks for this article. As an experiment, I installed a F3 brushed into quadcopter with geared rotors. Using the method as described, I have observed some interesting reactions made by this relatively slow aircraft. Surprisingly, it flies well. It has unusually high P & D settings which took many tries to get right.

Paul Faugeras 30th December 2016 - 8:03 am

Hello Oscar,
Thank you so much for this amazing article, I would like to use it as a source for my engineering project this year (I’m a french student) : What would you like me to cite it as ?
Thanks a lot, and happy new year ! ;)

sri 28th September 2016 - 8:40 am

Excellent post for PID sir,

For the PID algorithm, one input is from sensors that will give Yaw,Pitch,roll angles and another input is PWM widths(calculated) from the Receiver.
How can we find the error from angles and PWM widths ??

Thanks in advance

Zer0 8th October 2016 - 1:37 pm

For that you have to convert your PWM widths in angles. In rate mode you say like 1500 (wich should be the middle position of your sticks) is 0 degrees per second. If you have 1000, we wan’t maybe 500 degrees per second, wich should be eonugh for most acrobatic maneuvers. At 1250 we should have 250 degrees now. All thoose numbers are the desired angular motion!
Now your gyro gives you the actual angular motion of your quad. Whats left is simply calculating the difference between both of them. That is the value you have to use for feeding your pid loop.

Hopefully I understood your question right and helped you a bit, sry for my english, school’s long ago.

Mohammad Mahdi Jabbarpour 12th October 2015 - 6:00 pm

I have a quad copter with t-motor mn-3508 motors and t-motor air 25A speed control and t-motor carbon propeller and naza m-lite without GPS flight control.
my quad copter not flight. and only motors rotate with speed.
what is the best setting for this quad copter ?
and how can I fix this.
Thank You.

Raha 9th December 2015 - 2:13 am

Hi Mohammad Mahdi,
Size of propellers seems to be the issue here…since you are using 700kv motors, use bigger props from 11-12 inch…use a 3s battery…it should get you to hover at respectable throttle provided your set up isnt too heavy…but its still a matter of experimentation….

Lee 5th July 2016 - 8:46 pm

Check your motors are going the correct way for they’re position. Front left CW. Front right CCW. Back right CW. Back left CCW. Then check Props are up the correct way and are in the correct position for they’re rotation.

Nivaldo 14th July 2015 - 9:22 pm

Hi, to tune the pid’s which mode we have to use? Stabilized or Non-Stabilized? Thanks

Oscar 15th July 2015 - 12:18 pm

PID tuning should be done under Acro mode (rate mode) which is not stabilized.

Andrew 14th February 2018 - 10:32 am

Hi Oscar, I can see why tuning should be done in Acro mode, so that you are only observing the effect of stick inputs, rather than additional corrections by the flight controller in angle mode.

I have a question, how do you would set up the rates to fly a 250 size quad copter really really slowly with a 3 axis gimbal on? I have tried using Angle mode and really slowing all of the rates down, but i cannot get it to work. I loose control of it and the quad just drifts. Do you have any tips for me please? I am using an Omnibus F3 with a barometer and Betaflight. Once I have mastered flying it really really slowly round a warehouse at work I plan to add the GPS in and try it outside.

Thanks Oscar.

moosestang 5th July 2015 - 1:18 pm

I’m trying to correct a wobble i get when making sharp turns at speed. this maybe inherent to this particular quad copter and i think it’s mostly cause by yaw. I first thought it was from hitting the max angle in angle mode, so i increase it to 90, thanks for clueing me in to that. Increasing max angle did seem to help. I tried lowering the level pid and also the overall leveling in angle mode. The thing weighs 140grams with battery and is only 122mm, so it might just be too heavy for it’s size.

It also is not symetrical, see pic. pbase.com/paulyoly/image/160538758 The one on the left, the rear motors are closer together than the fronts.

See the wobble i’m talking about at 39 seconds. youtube.com/watch?v=uIm0-dQ908s&feature=youtu.be

These are the pids used in the flight video above. pbase.com/paulyoly/image/160638362 I’m going to try lowering the yaw rate first and see how it changes. The hermit pictures with it above doesn’t share this wobble issue and it has a 1.00 yaw rate. I wanted to get an experts thoughts.

Ruben John 12th March 2015 - 12:56 am

hi Oscar..

could you go into yaw pid tuning in more detail. Because of the horizontal axis it works on in it seems harder to know what to look for when turning up the P, I or D. eg…something like the integral on the pitch and roll axis I can put in a command at a steep angle and see how long it flies hands off that way. How do you do something like that for yaw ?

Anthony 8th October 2014 - 10:31 am

PID theory is really well explained !
I’m facing the problem of PID tuning. I’ve implemented the cascaded PID shown in this post. How can I adjust P values of cascaded PID? Should I start from the “Stabilise PID” with P = someValue and “Rate PID” with P = 1 ?

Thank you for your help

Wilson 13th February 2014 - 3:36 am

Nice explanation. I have a yaw problem with my quad. On fast forward flight, it tends to turn sideways on its own. More to the left but sometime to the right. I think I need to increase the P and I setting to the yaw. It hovers solid

Markus 28th December 2013 - 5:26 pm

thanks for this great article.

When i was flying my quadcopter (scratchbuild with nanowii) it sometimes began to oversteer and crashed.
But with the I parameter set to 0 it doesn’t happen.

What’s your thought about it?

bogus bob 28th November 2013 - 10:38 pm

Nice article, thank you. I like the tuning part. Might I suggest expanding it with an example of PID values? Right now I have no idea which order of magnitude I’ll be looking for. 1? 0.001? 1000? (Although your description helps to find out, kuddos!)

Oscar 29th November 2013 - 3:46 pm

There is not standard range of PID values, each system or flight controller has their own value range. some wider range, some smaller.

Tim 3rd May 2015 - 5:47 pm

My experience is all chemical process control, BUT the pitch/roll/yaw and maybe altitude are all integrating processes. Meaning if you’re slightly off the error will keep growing (and therefore the P term will keep increasing/decreasing to reach set point). It’s similar to filling a tank that you’re also draining and trying to control level. If the in-flow and out-flow aren’t exactly the same the level will continue rising or falling forever. It’s integrating the error of the two flows on its own. On a quadcopter, if the left/right, front/back, diagonals aren’t perfectly producing the same thrust it will continue to pitch/roll/yaw forever. That would be different than a heater, For a given heat input, the temperature won’t rise or fall forever, it’ll get to a temperature and line out (the other type of control scenario, a self regulating process).

I’ve never done it, but you could do PD control (or just P) if the integrating error is large (e.g. a small tank or large flows in my tank example where a small difference would quickly change the level) or you don’t care about tight control (you don’t mind if the level swings a bit for the process to naturally integrate to the point the P term corrects things. We have the former for multicopters, but definitely not the latter. Therefore I would be really surprised if you could find some tuning work without I. You’d want to catch that small difference before the multicopter pitched/rolled/yawed to the point the P would catch it.

What I haven’t figured out yet is why multicopters use D (along with PI). I think of D as undoing all of the I windup as it approaches set point (SP). The process “sees” that it’s on its way to reaching SP, therefore the P term is shrinking but the I term is now really large and still growing because it’s still below SP (or above…). If unchecked, it would likely overshoot and then the I term would start shrinking and eventually it would settle in after a few oscillations. We only use D in chemical process control when there is large deadtime or lag between a change in an input to the process and seeing the response. I’m talking many minutes, if not hours, for us to want D tuning (along with PI). For example, the temperature on a very large tank or distillation operation. In fact these are the only two loops that we would usually even consider D and they’re both self-regulating. I can’t think of any integrating process examples using D. I wonder why it’s used for multirotors since things are moving so quickly? The “I term” should not have “wound up” since it shouldn’t have been off SP for very long.

After logging some data, I want to approach tuning as we do at work and see what it suggests. The problem is that we’ll usually hold an output fixed, change it, and then watch for a response. Most notably watching how long it takes to see the response to begin to move (the deadtime), and how much it changed by (the process gain). That’s not much of an option for a flying quadcopter, it would be quickly on the ground. There are some on-the-fly tuning tricks but with modern computers and process data collection, it’s become passe. I’ll have to find some old timers to teach me. ;-)

Oscar 6th May 2015 - 12:15 pm

Hi Tim,
you probably have a much better understanding in PID control theory than me :)
It’s easier to explain PID to someone using real life examples, for example how PID affects the flight behaviour of a quadcopter.
PID might be slightly different when it comes to implementation, thus how P,I and D affects the system (there are now 6 PID controllers). Not sure how good you are with coding, if you can check out how PID controller is implemented in Baseflight/cleanflight that should help your multirotor tuning.