Welcome to Multi-Rotor UK. Please login or sign up.

Thursday,March 28, 2024, 18:44:04

Login with username, password and session length

Shoutbox

Bad Raven:
26 Mar 2024 08:41:05
 :(
Andy7:
25 Mar 2024 14:49:21
An excess of work and rain.  :thumbdown:
Bad Raven:
23 Mar 2024 18:12:38
Almost a personal Blog, it would seem. LOTS of members, but NO posts.  :-/   :shrug:
Gaza07:
06 Mar 2024 16:59:49
Anyone still here  :shrug:
ched:
24 Dec 2023 11:48:48
Hope you all have a Great Christmas and a happy New Year.
Bad Raven:
20 Dec 2023 06:17:47
 ~~   :beer2: 
Gaza07:
19 Dec 2023 22:20:27
Merry Christmas All  :beer2:
Bad Raven:
01 Dec 2023 06:59:57
New Simulator Section started!   :beer2:
Bad Raven:
17 Jun 2023 06:52:23
Yes, smaller, same as lots of things as time passes.
Andy7:
08 Jun 2023 22:49:18
 ~~
Members
Stats
  • Total Posts: 201,420
  • Total Topics: 20,260
  • Online today: 31
  • Online ever: 530
  • (Tuesday,June 26, 2012, 08:34:46 )
Users Online
Users: 0
Guests: 22
Total: 22

Theme Changer





3d - Printworx

Tuning PIDS Arducopter / MegaPirateNG 2.9.1 + , FAQ - Draft - Work in progress

Started by Jumpy07, Tuesday,February 12, 2013, 17:17:15

Previous topic - Next topic

Jumpy07

Tuning PID`s

This is intended as a guide / reference to PID';s in Arducopter 2.9.1 + , (Also applies to latest versions of MegaPirateNG), please feel free to comment / add information for others, will maintain /edit the FAQ as appropriate.

A proportional-integral-derivative controller (PID controller) is a generic control loop feedback mechanism (controller) widely used in industrial control systems. A PID controller calculates an "error" value as the difference between a measured process variable and a desired setpoint. The controller attempts to minimize the error by adjusting the process control inputs.

In specific multicopter terms this means the PID software will be taking data measured by the sensors on the flight controller (gyros / accelerometers etc) and comparing that against expected/desired values to alter the speed of the motors to compensate for any differences and maintain control.

The PID controller calculation (algorithm) involves three separate constant parameters, and is accordingly sometimes called three-term control: the proportional, the integral and derivative values, denoted P, I, and D. Heuristically, these values can be interpreted in terms of time:

       
  • P depends on the present error
  • I on the accumulation of past errors
  • D is a prediction of future errors, based on current rate of change
Depending on your flight controller there will be PID';s associated with a number of flight modes. This FAQ focuses on Arducopter but the principles apply to other FC';s that use PID tuning.

Current PID tuning parameters for Arducopter 2.9.1 + are shown below, as you can see certain PID';s are only active in certain flight modes in Arducopter. You should always start tuning standard PID';s first,  Rate Roll, Rate Pitch and Rate Yaw. Until you get these stable then there little point in moving on to the others.

The PID';s in Arducopter are optimised for the 3DR/jDrones quad with 850 motors and 10" props. If you';re using more powerful motors/props and are seeing bad flight behaviour in stabilize, start by turning down Rate Roll P in 25% steps first.

Unless you have a Multi with strange motor layout, Pitch and Roll are normally locked to each other, ie: change one the other matches the same settings.

From 2.9.1+ it is important that the FC is not hard mounted, the board should be mounted on foam, gel or isolation mount. Failure to do this will make the Multi hard to tune. Pay special attention to prop balancing and motor balance. If you are still having problems with Alt Hold or Loiter then try changing the setting for AHRS_MPU6K_FILTER in advanced parameters in Mission Planner to 20 or lower.


[attachimg=1]

Rate Roll

       
  • P - Too much rate P will oscillate quickly, and cause to copter to sound angry under stick input, bouncing rather than smoothly following your inputs. It will also shake more at full throttle and under hard turning. Not enough you will not feel like you have full control,  it will feel lazy and be very easy to over correct with your inputs, inputs will feel delayed.

       
  • I -  Too much rate_I will oscillate if you get high enough (a much slower oscillation than a rate_P shake).  But quite a long while before it oscillates it will have other detrimental effects on flight performance, like a sluggish feeling or a tendency to flip over on take-off. Not enough will cause the copter to get pushed by a constant wind, then it will fight back using just P.  It will not hold a very firm angle during forward flight and will need more correction. This will not be as smooth as it could be in either case.

       
  • D - Too much rate_D will cause fast oscillations, you will see a twitch forming then a fast buzzing oscillations. Not enough rate_D will result in you not being able to dial enough rate_P in, you will then suffer the effects of having rate_P too low

       
  • IMAX - The maximum possible build up of Roll
Rate Pitch

       
  • P - Too much rate P will oscillate quickly, and cause to copter to sound angry under stick input, bouncing rather than smoothly following your inputs. It will also shake more at full throttle and under hard turning. Not enough you will not feel like you have full control,  it will feel lazy and be very easy to over correct with your inputs, inputs will feel delayed.

       
  • I - Too much rate_I will oscillate if you get high enough (a much slower oscillation than a rate_P shake).  But quite a long while before it oscillates it will have other detrimental effects on flight performance, like a sluggish feeling or a tendency to flip over on take-off. Not enough will cause the copter to get pushed by a constant wind, then it will fight back using just P.  It will not hold a very firm angle during forward flight and will need more correction. This will not be as smooth as it could be in either case.

       
  • D - Too much rate_D will cause fast oscillations, you will see a twitch forming then a fast buzzing oscillations. Not enough rate_D will result in you not being able to dial enough rate_P in, you will then suffer the effects of having rate_P too low

       
  • IMAX - The maximum possible build up of Pitch
Rate Yaw

       
  • P - Should be set higher get more aggressive control and lower to slow reaction time.
  • I -
  • D -
  • IMAX - The maximum possible build up of Yaw

Stablize Roll

       
  • P - The desired rate at which the copter will return to level from roll.  If this is too high, it could cause an oscillation.
  • I - Acts like a trim to overcome poor copter balance. Defines time it takes to achieve max value. Higher = faster.
  • IMAX -
Stabilize Pitch

       
  • P - The desired rate at which the copter will return to level from pitch forward or back.  If this is too high, it could cause an oscillation.
  • I - Acts like a trim to overcome poor copter balance. Defines time it takes to achieve max value. Higher = faster.
  • IMAX -
Stabilize Yaw

       
  • P - The desired rate at which the copter will return to the target heading.  If this is too high, it could cause an oscillation.
  • I - Acts like a trim to overcome poor copter balance. Defines time it takes to achieve max value. Higher = faster.
  • IMAX -
Loiter Speed

       
  • P - Too low and Multi will overshoot position.
  • I - Overcomes wind to hold position (turn to zero in no wind conditions to tune P)
  • IMAX - Maximum speed to position.
Rate Loiter

       
  • P - The rate at which the copter will move towards the target point.  If this is not high enough, the copter will not be able to fight high winds and will drift.  If it';s too high, it will oscillate around the target.
  • I - This will help the copter fight winds while having a zero error.  However use it with caution because it will also cause an oscillation if it';s too high.
  • D
  • IMAX - The maximum possible build up of Loiter
Throttle Rate

       
  • P - amount of throttle output used to change the climb rate
  • I - compensates for error in achieving desired climb rate (zero by default.)
  • D
  • IMAX  - The maximum possible build up of throttle.
Altitude Hold

If you are having problems tuning ALT HOLD, make sure you have minimised all vibrations of the frame and mounted the FC on foam or gel etc. Also try setting AHRS_MPU6K_FILTER to 20 in advanced params in Mission Planner

       
  • P - Used to convert altitude error in centimeters to a desired climb_rate in centimeter/second. Higher = faster climb rate
  • I - Used to account for a copter having trouble holding altitude, usually due to a low voltage battery.
  • IMAX - Amount of throttle we can adjust  (units: 1000 = 100%)
Crosstrack Correction

       
  • Gain - Cross track correction is intended to guide the Multi to an optimal path, as opposed to simply pointing towards the desired waypoint. This is desired when wind blows the Multi off course. It can also be useful to keep a Multi on a certain line between waypoints for photography. Gain is the amount of multiplied force used to keep the Multi on the original track.
Nav WP

       
  • P - we use our speed (4m/s as defined m/s) offset as the error. high numbers = more pitch to achieve the desired speed
  • I - Allows ramp up against the wind force. Higher value ramps faster.
  • D -
  • IMAX - Amount of Pitch we can add to overcome wind
  • m/s - Maximum Speed in metres per second between waypoints.
Throttle Accel

       
  • P - Tune Throttle Accel P and I terms but try to keep P about 1/2 the size of I
  • I - Should be twice size of P
  • D -
  • IMAX -
Tips
"My copter slowly rises or descends when I enable Alt-Hold or Loiter" .
The throttle deadband when in alt-hold or loiter mode is from 40% ~ 60% of the throttle.  If you have an overpowered or underpowered copter then when in stabilize mode the throttle required to maintain a hover may be outside this range.  So when you engage alt-hold or loiter your throttle is outside of the deadband and arducopter thinks you want to climb or descend.  The simple solution is to move your throttle back to center as you engage alt-hold.  A permanent solution is to modify the THR_MID parameter through the mission planner';s Adv Parameter List screen.  If your copter hover at 40% of throttle stick when in stabilize mode, make THR_MID = 400.  If it hovers at 60% of throttle make the parameter 600, etc.

BNUC-S Pilot with PfCo /PFAW.
UAQ / CAA PfCo Instructor / Flight Assessor

"All that is necessary for the triumph of evil is that good men do nothing"

Jumpy07

BNUC-S Pilot with PfCo /PFAW.
UAQ / CAA PfCo Instructor / Flight Assessor

"All that is necessary for the triumph of evil is that good men do nothing"


Leebo914


Gaza07

[url="https://www.youtube.com/channel/UCN6zN99iLCIJea5FCQPKf_g"]YouTube[/url]   [url="https://www.printing-3d.co.uk"]printing-3d[/url]  [url="https://www.thingiverse.com/Gaza07/about"]Thingiverse[/url]  [url="https://www.3d-printworx.co.uk"]3d-printworx[/url]

neagron

   :thankyou:   once again an excellent piece of work Craig,thank you,Marty. :scotland:

Mslater

Tis good Craig, one change to note is that Stab I does nothing now - should be set to Zero in all Stab parameters.
Duvet - The quickest way to say Duck Down !

Polleke1949

Very Good Craig.
Thanx a lot  ~~
Got a question though.
What';s the difference in MegaPirateNG 2.9.1 and Arducopter 2.9.1  :confused: ?

Jumpy07

Quote from: Polleke1949 on Thursday,February 14, 2013, 18:30:28
Very Good Craig.
Thanx a lot  ~~
Got a question though.
What';s the difference in MegaPirateNG 2.9.1 and Arducopter 2.9.1  :confused: ?
Arducopter is for genuine APM board and clones such as APM 2.5 and Arduflyer 2.5 (2.9.1 has been released)
MegaPirate is for boards such as Crius AIOP and Blackvortex etc (2.9 is in beta)

BNUC-S Pilot with PfCo /PFAW.
UAQ / CAA PfCo Instructor / Flight Assessor

"All that is necessary for the triumph of evil is that good men do nothing"

Polleke1949

Quote from: Jumpy07 on Thursday,February 14, 2013, 20:24:27
Arducopter is for genuine APM board and clones such as APM 2.5 and Arduflyer 2.5 (2.9.1 has been released)
MegaPirate is for boards such as Crius AIOP and Blackvortex etc (2.9 is in beta)

I have a Crius AIOPro V1.1, so I will have to wait for the 2.9 version......... :waiting:
Any idea when it';s coming?

Jumpy07

Quote from: Polleke1949 on Thursday,February 14, 2013, 20:53:25
I have a Crius AIOPro V1.1, so I will have to wait for the 2.9 version......... :waiting:
Any idea when it';s coming?
Its in Beta at the  moment.. but has a few bugs.. dont think it will be that long until its released.
BNUC-S Pilot with PfCo /PFAW.
UAQ / CAA PfCo Instructor / Flight Assessor

"All that is necessary for the triumph of evil is that good men do nothing"

lakis21


fruitsalad

im in process of tuning..
this guide is very helpful and well explained.
thanks jumpy07..
dont grow up,just buy bigger toys!!!!

robshaw

This post has just saved my bacon.  New transmitter caused my quad to fly terribly.  As it was tuned by somebody else for my old DX6i I was a newbie. Now flying happily tuned with my new 9xr.  Cheers Jumpy07  :beer2:
Tunrnigy Talon Tri, TBS Discovery, TBS Discovery PRO, Spnky 250 Mini, EZUHF, EZOSD

Loiner

Great description of a misunderstood subject, in geeks terms " The effects of the parameters of Differential equations in the time domain"
That';s as it may or may not be, my problem is much more nobish. I can not find any mention of AHRS_MPU6K_FILTER in advanced parameters of Mission Planner. I used the LPF parameters in MultiWii and found them very effective so would like the opportunity of trying same in ArduCopter 2.9.1. Reason being my rig has a tendency to climb quite quickly when "engaging" Loiter. Not necessarily all due to vibration as I have not as yet done very much tweaking but I would like to try and eliminate as many variables as possible before diving in. Yes both the RC Timer clone APM 2.5 and the base on which it is mounted are resiliently mounted via rubber grommets both above and below.

Regards

John

PS
~~
Found the MPU6000 LPF setting its in Advanced params The variable name is INS_MPU6K_FILTER, should look harder before asking for help! :help: Will try and do better in future  :laugh: Now I can give the frame another try at Loiter. I do note that the default value suggested for on ArduCopter is 42Hz, as any one tried both 20 and 42 to get a comparison?


Jumpy07

I don';t have MPNG 2.9 loaded.. still on 2.8... however the screen is the same as Arducopter on my APM.. see below for details of where it is on Mission Planner.. as you can see mine is currently set at 20... would do this before you do and PID tuning..

[attachimg=1]

Would also make sure you have tuned as much vibration out as you can.. FC mount and prop balancing etc

Once you are happy with above.. then look at the PIDS below.. start with Alt Hold P>

Throttle Rate

       
  • P - amount of throttle output used to change the climb rate
  • I - compensates for error in achieving desired climb rate (zero by default.)
  • D
  • IMAX  - The maximum possible build up of throttle.
Altitude Hold

       
  • P - Used to convert altitude error in centimeters to a desired climb_rate in centimeter/second. Higher = faster climb rate
  • I - Used to account for a copter having trouble holding altitude, usually due to a low voltage battery.
  • IMAX - Amount of throttle we can adjust  (units: 1000 = 100%)
BNUC-S Pilot with PfCo /PFAW.
UAQ / CAA PfCo Instructor / Flight Assessor

"All that is necessary for the triumph of evil is that good men do nothing"

bulesz

sorry for my noob question, but I';m a scared rookie so want to be 100% sure before the props chop off my hands... ;)

so I could use this guide with my MPNG 2.8 as well?

Jumpy07

BNUC-S Pilot with PfCo /PFAW.
UAQ / CAA PfCo Instructor / Flight Assessor

"All that is necessary for the triumph of evil is that good men do nothing"


DarrenG

I need to look at tuning now I';ve got my quad built and flying. It all seems pretty good on stock settings but that';s because I know no better I suspect!

Have been putting it off as I want to balance my props first, and can';t do that as RoyalFail have lost the parcel containing my Du-Bro balancer, ass-hats. Shipped 1st Class recorded two weeks ago. Bad enough that they';ve lost it but the Du-Bro';s are hard to find in stock and the retailer is now out. Not happy  :angry:

I take it there is little point in tuning until the props have been properly balanced?
[b]Darren Griffin[/b]
@DarrenGriffin, @TheMacFixer & @PocketGPSWorld
Sky-Hero Little Spyder with Naza V2, Arducopter Quad with Pixhawk and Emax 250 with Naze32

rickp

Quote from: DarrenG on Monday,June 03, 2013, 12:02:26 I take it there is little point in tuning until the props have been properly balanced?

Yeah, you';d be better off waiting I think.

Falcon26

Thank you Craig very Helpful it may take a while for me to soak all this in but with your help its going a lot easier great work :thankyou:

Falcon26

Question one of the many I still have is there a need to link roll and pitch in the PID with a Tricopter IE:one rotor for pitch and two rotor';s for roll ?  :shrug:

ericb

This is a fantastic guide to understanding what is going on and the way to go when correcting any issues  :beer2:

Eric
Alien homemade , 330 homemade wonderful little thing oh and the 250 mini that is wonderful

orfordness

QuoteTips
"My copter slowly rises or descends when I enable Alt-Hold or Loiter" .
The throttle deadband when in alt-hold or loiter mode is from 40% ~ 60% of the throttle.  If you have an overpowered or underpowered copter then when in stabilize mode the throttle required to maintain a hover may be outside this range.  So when you engage alt-hold or loiter your throttle is outside of the deadband and arducopter thinks you want to climb or descend.  The simple solution is to move your throttle back to center as you engage alt-hold.  A permanent solution is to modify the THR_MID parameter through the mission planner';s Adv Parameter List screen.  If your copter hover at 40% of throttle stick when in stabilize mode, make THR_MID = 400.  If it hovers at 60% of throttle make the parameter 600, etc.

So being a bit slow today, I';ve got this exact situation on my quad, when in Loiter or Alt Hold the quad slowly climbs, do I need to increase the the THR_MID or decrease it?

At present its set at 500

Thanks
Steve
DJI Mavic Pro
Tarot 680 Pro Hex
450 (Flamewheel clone) x 4
Hubsan X4
CS022 Mini Quad

robshaw

Tunrnigy Talon Tri, TBS Discovery, TBS Discovery PRO, Spnky 250 Mini, EZUHF, EZOSD

orfordness

Thanks Rob, that';s what I';ve done, ill let you know how I get on!

Steve
DJI Mavic Pro
Tarot 680 Pro Hex
450 (Flamewheel clone) x 4
Hubsan X4
CS022 Mini Quad

hexadec

This is just the info I';ve been looking for...all in one place!

Much appreciated. ~~

TNT

Excellent post. This is what I';m looking for. I just found gold hihihihiiiii.
Simple explain but say it all. Thanks

jacknet

Not sure of thread for this ? so please correct me. I am trying to load MPNG on my Crius and as per Jumpy';s Guide my first compile came up with the error: ';AP I16'; does not have a type. The line of code reads: AP_Int16          format version; This is in the Arduino Parameters.h file. Any ideas?