Cleanflight PID Controller
Moderator: Moderators
- Graham Lawrie
- Moderator
- Posts: 5049
- Joined: Thu Nov 06, 2014 7:14 pm
- Location: Kinlochleven, Scotland
- Contact:
Cleanflight PID Controller
What controller are people setting on Cleanflight? The stock setting is "0" i have just set mine to "3"
Align 600
Align 550
Align 450 Pro V2 AR7200BX
Align150
Mini-Quad 250/Emax NightHawk /Fossil V2/TBS Disco/Volt
DX6i
MHS Brain/Spartan Vortex/AR7200BX /Microbeast Plus HD
Blade mqx
Scorpion BUG
Fatshark Predator V2 & Mobius
CITIZEN # 521
Align 550
Align 450 Pro V2 AR7200BX
Align150
Mini-Quad 250/Emax NightHawk /Fossil V2/TBS Disco/Volt
DX6i
MHS Brain/Spartan Vortex/AR7200BX /Microbeast Plus HD
Blade mqx
Scorpion BUG
Fatshark Predator V2 & Mobius
CITIZEN # 521
- Graham Lawrie
- Moderator
- Posts: 5049
- Joined: Thu Nov 06, 2014 7:14 pm
- Location: Kinlochleven, Scotland
- Contact:
Re: Cleanflight PID Controller
PID controllers
Cleanflight has 6 built-in PID controllers which each have different flight behavior. Each controller requires different PID settings for best performance, so if you tune your craft using one PID controller, those settings will likely not work well on any of the other controllers.
You can change between PID controllers by running set pid_controller=n on the CLI tab of the Cleanflight Configurator, where n is the number of the controller you want to use. Please read these notes first before trying one out.
PID controller 0, "MultiWii" (default)
PID Controller 0 is the default controller in Cleanflight, and Cleanflight's default PID settings are tuned to be middle-of-the-road settings for this controller. It originates from the old MultiWii PID controller from MultiWii 2.2 and earlier.
One of the quirks with this controller is that if you increase the P value for an axis, the maximum rotation rates for that axis are lowered. Hence you need to crank up the pitch or roll rates if you have higher and higher P values.
In Horizon and Angle modes, this controller uses both the LEVEL "P" and "I" settings in order to tune the auto-leveling corrections in a similar way to the way that P and I settings are applied to roll and yaw axes in the acro flight modes. The LEVEL "D" term is used as a limiter to constrain the maximum correction applied by the LEVEL "P" term.
PID controller 1, "Rewrite"
PID Controller 1 is a newer PID controller that is derived from the one in MultiWii 2.3 and later. It works better from all accounts, and fixes some inherent problems in the way the old one worked. From reports, tuning is apparently easier on controller 1, and it tolerates a wider range of PID values well.
Unlike controller 0, controller 1 allows the user to manipulate PID values to tune reaction and stability without affecting yaw, roll or pitch rotation rates (which are tuned by the dedicated roll & pitch and yaw rate settings).
In Angle mode, this controller uses the LEVEL "P" PID setting to decide how strong the auto-level correction should be. Note that the default value for P_Level is 90. This is more than likely too high of a value for most, and will cause the model to be very unstable in Angle Mode, and could result in loss of control. It is recommended to change this value to 20 before using PID Controller 2 in Angle Mode.
In Horizon mode, this controller uses the LEVEL "I" PID setting to decide how much auto-level correction should be applied. The default Cleanflight setting for "I" will result in virtually no auto-leveling being applied, so that will need to be increased in order to perform like PID controller 0.
The LEVEL "D" setting is not used by this controller.
TPA is not used by this controller.
PID controller 2, "LuxFloat"
PID Controller 2 is Lux's new floating point PID controller. Both controller 0 and 1 use integer arithmetic, which was faster in the days of the slower 8-bit MultiWii controllers, but is less precise.
This controller has code that attempts to compensate for variations in the looptime, which should mean that the PIDs don't have to be retuned when the looptime setting changes.
There were initially some problems with horizon mode, and sluggishness in acro mode, that were recently fixed by nebbian in v1.6.0. The autotune feature does not work on this controller, so don't try to autotune it.
It is the first PID Controller designed for 32-bit processors and not derived from MultiWii.
The strength of the auto-leveling correction applied during Angle mode is set by the parameter "level_angle" which is labeled "LEVEL Proportional" in the GUI. This can be used to tune the auto-leveling strength in Angle mode compared to Horizon mode. The default is 5.0.
The strength of the auto-leveling correction applied during Horizon mode is set by the parameter "level_horizon" which is labeled "LEVEL Integral" in the GUI. The default is 3.0, which makes the Horizon mode apply weaker self-leveling than the Angle mode. Note: There is currently a bug in the Configurator which shows this parameter divided by 100 (so it shows as 0.03 rather than 3.0).
The transition between self-leveling and acro behavior in Horizon mode is controlled by the "sensitivity_horizon" parameter which is labeled "LEVEL Derivative" in the Cleanflight Configurator GUI. This sets the percentage of your stick travel that should have self-leveling applied to it, so smaller values cause more of the stick area to fly using only the gyros. The default is 75%
For example, at a setting of "100" for "sensitivity_horizon", 100% self-leveling strength will be applied at center stick, 50% self-leveling will be applied at 50% stick, and no self-leveling will be applied at 100% stick. If sensitivity is decreased to 75, 100% self-leveling will be applied at center stick, 50% will be applied at 63% stick, and no self-leveling will be applied at 75% stick and onwards.
PID controller 3, "MultiWii23" (default for the ALIENWIIF1 and ALIENWIIF3 targets)
PID Controller 3 is an direct port of the PID controller from MultiWii 2.3 and later.
The algorithm is handling roll and pitch differently to yaw. Users with problems on yaw authority should try this one.
For the ALIENWII32 targets the gyroscale is removed for even more yaw authority. This will provide best performance on very small multicopters with brushed motors.
PID controller 4, "MultiWiiHybrid"
PID Controller 4 is an hybrid version of two MultiWii PID controllers. Roll and pitch is using the MultiWii 2.2 algorithm and yaw is using the 2.3 algorithm.
This PID controller was initialy implemented for testing purposes but is also performing quite well.
For the ALIENWII32 targets the gyroscale is removed for more yaw authority. This will provide best performance on very small multicopters with brushed motors.
PID controller 5, "Harakiri"
PID Controller 5 is an port of the PID controller from the Harakiri firmware.
The algorithm is leveraging more floating point math. This PID controller also compensates for different looptimes on roll and pitch. It likely don�t need retuning of the PID values when looptime is changing. Actually there are two settings hardcoded which are configurable via the GUI in Harakiri:
OLD_YAW 0 // [0/1] 0 = multiwii 2.3 yaw, 1 = older yaw.
MAIN_CUT_HZ 12.0f // (default 12Hz, Range 1-50Hz)
The PID controller is flight tested and running well with the default PID settings. If you want do acrobatics start slowly.
Yaw authority is also quite good.
Cleanflight has 6 built-in PID controllers which each have different flight behavior. Each controller requires different PID settings for best performance, so if you tune your craft using one PID controller, those settings will likely not work well on any of the other controllers.
You can change between PID controllers by running set pid_controller=n on the CLI tab of the Cleanflight Configurator, where n is the number of the controller you want to use. Please read these notes first before trying one out.
PID controller 0, "MultiWii" (default)
PID Controller 0 is the default controller in Cleanflight, and Cleanflight's default PID settings are tuned to be middle-of-the-road settings for this controller. It originates from the old MultiWii PID controller from MultiWii 2.2 and earlier.
One of the quirks with this controller is that if you increase the P value for an axis, the maximum rotation rates for that axis are lowered. Hence you need to crank up the pitch or roll rates if you have higher and higher P values.
In Horizon and Angle modes, this controller uses both the LEVEL "P" and "I" settings in order to tune the auto-leveling corrections in a similar way to the way that P and I settings are applied to roll and yaw axes in the acro flight modes. The LEVEL "D" term is used as a limiter to constrain the maximum correction applied by the LEVEL "P" term.
PID controller 1, "Rewrite"
PID Controller 1 is a newer PID controller that is derived from the one in MultiWii 2.3 and later. It works better from all accounts, and fixes some inherent problems in the way the old one worked. From reports, tuning is apparently easier on controller 1, and it tolerates a wider range of PID values well.
Unlike controller 0, controller 1 allows the user to manipulate PID values to tune reaction and stability without affecting yaw, roll or pitch rotation rates (which are tuned by the dedicated roll & pitch and yaw rate settings).
In Angle mode, this controller uses the LEVEL "P" PID setting to decide how strong the auto-level correction should be. Note that the default value for P_Level is 90. This is more than likely too high of a value for most, and will cause the model to be very unstable in Angle Mode, and could result in loss of control. It is recommended to change this value to 20 before using PID Controller 2 in Angle Mode.
In Horizon mode, this controller uses the LEVEL "I" PID setting to decide how much auto-level correction should be applied. The default Cleanflight setting for "I" will result in virtually no auto-leveling being applied, so that will need to be increased in order to perform like PID controller 0.
The LEVEL "D" setting is not used by this controller.
TPA is not used by this controller.
PID controller 2, "LuxFloat"
PID Controller 2 is Lux's new floating point PID controller. Both controller 0 and 1 use integer arithmetic, which was faster in the days of the slower 8-bit MultiWii controllers, but is less precise.
This controller has code that attempts to compensate for variations in the looptime, which should mean that the PIDs don't have to be retuned when the looptime setting changes.
There were initially some problems with horizon mode, and sluggishness in acro mode, that were recently fixed by nebbian in v1.6.0. The autotune feature does not work on this controller, so don't try to autotune it.
It is the first PID Controller designed for 32-bit processors and not derived from MultiWii.
The strength of the auto-leveling correction applied during Angle mode is set by the parameter "level_angle" which is labeled "LEVEL Proportional" in the GUI. This can be used to tune the auto-leveling strength in Angle mode compared to Horizon mode. The default is 5.0.
The strength of the auto-leveling correction applied during Horizon mode is set by the parameter "level_horizon" which is labeled "LEVEL Integral" in the GUI. The default is 3.0, which makes the Horizon mode apply weaker self-leveling than the Angle mode. Note: There is currently a bug in the Configurator which shows this parameter divided by 100 (so it shows as 0.03 rather than 3.0).
The transition between self-leveling and acro behavior in Horizon mode is controlled by the "sensitivity_horizon" parameter which is labeled "LEVEL Derivative" in the Cleanflight Configurator GUI. This sets the percentage of your stick travel that should have self-leveling applied to it, so smaller values cause more of the stick area to fly using only the gyros. The default is 75%
For example, at a setting of "100" for "sensitivity_horizon", 100% self-leveling strength will be applied at center stick, 50% self-leveling will be applied at 50% stick, and no self-leveling will be applied at 100% stick. If sensitivity is decreased to 75, 100% self-leveling will be applied at center stick, 50% will be applied at 63% stick, and no self-leveling will be applied at 75% stick and onwards.
PID controller 3, "MultiWii23" (default for the ALIENWIIF1 and ALIENWIIF3 targets)
PID Controller 3 is an direct port of the PID controller from MultiWii 2.3 and later.
The algorithm is handling roll and pitch differently to yaw. Users with problems on yaw authority should try this one.
For the ALIENWII32 targets the gyroscale is removed for even more yaw authority. This will provide best performance on very small multicopters with brushed motors.
PID controller 4, "MultiWiiHybrid"
PID Controller 4 is an hybrid version of two MultiWii PID controllers. Roll and pitch is using the MultiWii 2.2 algorithm and yaw is using the 2.3 algorithm.
This PID controller was initialy implemented for testing purposes but is also performing quite well.
For the ALIENWII32 targets the gyroscale is removed for more yaw authority. This will provide best performance on very small multicopters with brushed motors.
PID controller 5, "Harakiri"
PID Controller 5 is an port of the PID controller from the Harakiri firmware.
The algorithm is leveraging more floating point math. This PID controller also compensates for different looptimes on roll and pitch. It likely don�t need retuning of the PID values when looptime is changing. Actually there are two settings hardcoded which are configurable via the GUI in Harakiri:
OLD_YAW 0 // [0/1] 0 = multiwii 2.3 yaw, 1 = older yaw.
MAIN_CUT_HZ 12.0f // (default 12Hz, Range 1-50Hz)
The PID controller is flight tested and running well with the default PID settings. If you want do acrobatics start slowly.
Yaw authority is also quite good.
Align 600
Align 550
Align 450 Pro V2 AR7200BX
Align150
Mini-Quad 250/Emax NightHawk /Fossil V2/TBS Disco/Volt
DX6i
MHS Brain/Spartan Vortex/AR7200BX /Microbeast Plus HD
Blade mqx
Scorpion BUG
Fatshark Predator V2 & Mobius
CITIZEN # 521
Align 550
Align 450 Pro V2 AR7200BX
Align150
Mini-Quad 250/Emax NightHawk /Fossil V2/TBS Disco/Volt
DX6i
MHS Brain/Spartan Vortex/AR7200BX /Microbeast Plus HD
Blade mqx
Scorpion BUG
Fatshark Predator V2 & Mobius
CITIZEN # 521
Re: Cleanflight PID Controller
I use 1, not tried the others yet but Luxfloat one sounds interesting.
RCX 250 Minquad FPV addiction
500 X quad FPV/AP platform
450 X quad set up for night flight
Multiple WLToys V911, V949, V959
Taranis, Turnigy 9X
Fatshark Predator, Immersion 5800 Duo
Trex 500 Esky Belt CP V2
500 X quad FPV/AP platform
450 X quad set up for night flight
Multiple WLToys V911, V949, V959
Taranis, Turnigy 9X
Fatshark Predator, Immersion 5800 Duo
Trex 500 Esky Belt CP V2
- danhampson
- Site Admin
- Posts: 1746
- Joined: Thu Nov 06, 2014 2:54 pm
- Location: Manchester, United Kingdom
- Contact:
Re: Cleanflight PID Controller
Pid 1 for me too. I've tried them all and like pid 1 the best.
FPV addict.
Re: Cleanflight PID Controller
No Horizon mode with Controller 1. Not that I use it
GOBLIN 570------IKON
WARP 360--------IKON
QAV 500----------Open Pilot
RCXH250---------Open Pilot
Citizen #229
WARP 360--------IKON
QAV 500----------Open Pilot
RCXH250---------Open Pilot
Citizen #229
- danhampson
- Site Admin
- Posts: 1746
- Joined: Thu Nov 06, 2014 2:54 pm
- Location: Manchester, United Kingdom
- Contact: