Cleanflight PID Controller

C

Celeritas

Gast
#21
Habe ich aber selbst noch nicht probiert und die Angaben beziehen sich auf Baseflight - weiss nicht, ob es auch für Cleanflight gilt
Benutze ich regelmäßig und funktioniert auch mit Cleanflight. Dabei ist allerdings zu beachten, dass die drei Profile nicht nur die PIDs speichern, sondern auch die Konfigurationen für Failsafe, Empfänger, Flugmodi und vieles mehr - eigentlich fast alles. Also bitte immer die kompletten Einstellungen überprüfen, wenn ein anderes Profil ausgewählt wird.
 

3ncrypt0

Erfahrener Benutzer
#22
Hey ho,

ich habe meinen Quad aus dem Winterschlaf geweckt und die neuste cleanflight Firmware aufgespielt. Gestern bin ich noch mit dem C0 geflogen, hatte da aber Probleme mit den PID Settings (habe meine Looptime nicht neue gesetzt).

Heute bin ich das erste mal auf die Controller aufmerksam geworden und habe versucht mich ein wenig einzulesen vor dem Fliegen gehen.

Ich hatte mich für C1 entschieden. Im Acro flog der Racer direkt gutmütig. Im Angle kaum Steuerbar. Ich habe dann die Werte erst einmal alle runter gesetzt und auch versucht Autotune durchzuführen.

Zum Schluss habe ich es soweit geschafft, dass Roll extrem snappy und stabil ist. Pitch ist immer noch so ein kleiner Aufschaukler und sehr "wabbelig/träge". Gib ich richtig Pitch dreht Yaw gerne mit und ist sehr instabil. Yaw selber ist auch sehr langsam. Fühlt sich irgendwie an, als würde ich schwimmen.

Hier mal meine Settings vom letzten Stand:

PID_C1_naze32.png

Als Rahmen verwende ich derzeit den Spanky Real FPV welcher leicht modifiziert ist (3cm tiefer, Topplate hinten gekürzt, damit der Lipo tiefer liegt. Nun aber leider auch hinten und ohne Gegengewicht, da ich meine GoPro durch eine Sony 1/3 WDR getauscht habe).

Wie soll ich bei dem Controller 1 am besten vorgehen für den Angle Mode? D wird ja nicht verwendet. Wie sieht es denn nun mit I aus? Hatte gelesen, dass I beim Horizon Mode und P beim Angle Mode verwendet wird.

Alles auf 0 und P langsam höher? Also wie bei normalen PID Einstellungen nur I und D ignorieren?

Ich frage lieber hier einmal nach, bevor ich mich in die falsche Richtung bewege und den Wald vor lauter Bäumen nicht sehe ;)
 

crashfix

Erfahrener Benutzer
#23
Bei meinem Quadsetup hab ich PID-Controller 1 überhaupt nicht in den Griff bekommen, auch nicht mit viel rumspielerei an "I" -> Wechsel auf PID-Controller 4 hat mir sehr viel gebracht, insbesondere weil YAW unabhängig von Roll und Pitch einstellbar ist !

Mein Hardwaresetup:
"Bolzkopter" von Johannes
RTF: 505g
2S 2200 mah
8 x 3.8 SF (die billigen, robusten CF-verstärkten von HK)

Die Trägheit in meinem Setup kommt sicherlich mit durch die relativ großen Props (Trägheit der Masse und Luftwiderstand). Testweise hab ich GWS HD9050-3 blatt auf ca. 6" gekürz - und eine erhebliche Steigerung der Flugpräzision erreicht. Leider sind die Props (ca. 2,50.- Stück) relativ "teuer" und brechen sehr schnell wenn sie von unten einen wegbekommen. Dafür waren es die leisesten Props die ich jemals am Quad gehört habe - und einfach nur geil zu fliegen.
 

3ncrypt0

Erfahrener Benutzer
#25
Hey ho,

ich habe gestern meinen neuen Racer fertiggestellt. Als Controller verwende ich gerade C0. Acro ist alles ok, aber im Autolevel habe ich Probleme. Wenn ich den Stick loslasse, so scheint es mir als ob er wie eine Kurve in die Horizontale zurückfindet. Es ist sehr langsam. Anfangs geht es schnell und dann immer langsamer, bis er wieder in der Horizontalen ist.

Woran kann das liegen?

RC Rate = 90
RC Expo = derzeit 80 (auch schon 30 getestet)
RC Rate Roll/Pitch = 80

RC Rate Roll/Pitch kann ich zuordnen. Aber was ist dann RC Rate bzw. RC Expo?


Zum cruisen und testen fliege ich gerne im Autolevel, vor allem wenn ich neue Antennen teste, aber das er so langsam zurück findet ist schon komisch. Wenn ich P höher stelle, fängt er auch direkt an zu hüpfen. Daher gehe ich mal davon aus, das die PID soweit stimmen.


Kann mir wer helfen?

Danke
 

AndreasL90

Erfahrener Benutzer
#26
Du müsstest da wohl den "Level" Controller tunen. Konkret kannst du aufgrund der beschriebenen Reaktion vermutlich (weil ich den ist-Zustand nicht kenne) den P-Wert etwas aufdrehen. Wie hoch ist der momentan eingestellt?


Btw:
Weil ich heute auch am Horizon Mode gespielt hab... Der "Controller 1" hat keinen funktionierenden self-level Modus! Meine Vermutung hat sich bestätigt, als ich das hier gefunden habe:
https://github.com/cleanflight/cleanflight/issues/364

Acro ist mittlerweile perfekt getuned, da ist der "Controller 1" dem "Controller 0" (default) mMn sichtbar überlegen. Werde evtl. mal den Harakiri testen...
 

3ncrypt0

Erfahrener Benutzer
#27
P=76
I=49
D=25

Das sind die momentanen Werte.

Rc Rate = 90
Rc Expo = 80
Rc Roll/Pitch = 75

Was meinst du mit Level Controller?
 

3ncrypt0

Erfahrener Benutzer
#29
Ah ok, konnte den Wert nicht zuordnen, was genau dieser bewirkt. Habe die gleichen Werte wie auf dem Screenshot. Werde ich morgen mal testen.

Danke.
 
#32
hab das mal für den Rewrite-PID Controller von der Theorie her betrachtet...
Link

weitere Rechnungen folgen demnächst

Gruß
Mario
 
#35
Hallo,

den Luxfloat und Harakiri habe ich mir schon mal ganz kurz im Quelltext angesehen:

Harakiri:
- Berechnung des Proportionalanteils im Quelltext sieht traditionell (normal) aus,
- für den Integralanteil sieht es auch normal aus,
- der D-Term hat scheinbar noch ein Verzögerungsglied (PT1) drin, das könnte wenn man einigen Forenbeiträgen glaubt, gegen das Schaukeln bei schnellem Sinken helfen!?
- Die Berechnungen für ACRO und ANGLE/HORIZON sind teilweise voneinander verschieden.

Gruß
Mario
 
#36
Cool. Endlich mal Ziegler-Nichols-Verfahren am konkreten Beispiel :) Hast Du das als Freizeitprojekt alles erarbeitet?
Die allgemeinen Gleichungen sind ja bekannt bzw. tausendmal veröffentlicht. Die Herleitung/Umrechnung der Parameter für den konkreten Algorithmus bzw. den Quelltext hab ich mir selbst angetan, weil es mich schon lange in den Fingern juckte, die Theorie mal mit der Praxis zu verbinden.
Auch hatte ich das ewige Probieren satt, wo ich doch seit dem Studium vor xx Jahren wusste, dass es anerkannte Methoden dafür gibt.

Gruß
Mario
 

brm

Erfahrener Benutzer
#37
Die allgemeinen Gleichungen sind ja bekannt bzw. tausendmal veröffentlicht. Die Herleitung/Umrechnung der Parameter für den konkreten Algorithmus bzw. den Quelltext hab ich mir selbst angetan, weil es mich schon lange in den Fingern juckte, die Theorie mal mit der Praxis zu verbinden.
Auch hatte ich das ewige Probieren satt, wo ich doch seit dem Studium vor xx Jahren wusste, dass es anerkannte Methoden dafür gibt.

Gruß
Mario
die beschreibung beim D-term ist etwas mager.
der term kann explodieren z.b. bei noise wirkt er als verstärker.
ein pt1 glied wirkt dem entgegen, d.h. beschränkt das ansteigen der werte.
daraus folgt ein D-term muss ein pt1 glied haben - umgekehrt ist dümmer.

andernseits gibt die baseflight spezies die folgendes behaupten: "It’s also independent of looptime"
http://blog.oscarliang.net/pid-controller-0-1-2-cleanflight/

das mit dem looptime independent hat sich etwas gelegt.
aber das problem jitter auf der zeitachse ist ein problem. bei zuviel jitter hört ein pid regler auf das zu tun wofür er gedacht ist.
anschaulich ist es bei den kampfschwebern. der regelungsfehler ist in der situation klein aber jitter auf der zeitachse lässt den d-term schwingen.

in der vergangenheit waren die pid regler in baseflight numerisch nicht stabil - es gab einige überläufe.
d.h. man muss auch pingelig betrachten wie die regler ins framework integriert sind - da interessiert die numerik.

wenn man mehrere pt2 glieder hintereinander schaltet gibt es auch böse überraschungen ...
habe ich auch schon hingekriegt :(

edit:
den D-term kannst du aus dem fehler oder der abweichung von der regelgrösse berechnen.
das fliegt sich auch anders.
musst du mal probieren ;-)
 
Zuletzt bearbeitet:
#40
Interessant, interessant - die Unterschiede allein schon im AngleMode..

- beim AlexK fließt der RateError (aus AngleRate - GyroRate) noch in den P-, I- und D-Term ein und D hat die Rechnung mit dem gleitenden Mittelwert

- beim LuxFloat fließt der RateError nur noch in den P und I-Term ein, der D-Term wird alleinig aus der GyroRate bestimmt inkl.gleitenden Mittelwert

- beim Harakiri sind die Gyrodaten nur noch für den D-Term da? P und I wird nur aus Acc und Stickkommando bestimmt. D hat das PT1-Element statt dem gleitenden Mittelwert

Den Unterschied muss ich wirklich fliegend ausprobieren....
 
RCLogger

FPV1

Banggood

Oben