@brm, oder vielleicht Felix, kannst du das bitte nochmals erläutern? Das habe ich nicht ganz verstanden.
CrashPilotX
was jetzt davon ?
vllt. nochmal das grund problem:
der D anteil ist die aktuelle korrektur minus die des letzen loops (oft schon etwas gerundet mit dem der vorletzten loops).
D ist also eigendlich da um schwinungen die durch den P anteil entstehen können aus zu gleichen.
szenario A: (das sind natürlich nur fantasie werte und die realen PID regler sind wesentlich komplexer)
der kopter driftet über roll (gyro X wert ist positiv sagen wir mal +10 ) der PID regler macht:
P anteil = GyroX*P also 10*3 (wenn P grade 3.0 ist)
also ist der P anteil dieses loops +30
(I kann man für das szenario weg lassen)
der P anteil des voherigen loops war auch +30 so ist dann:
der D anteil der P anteil dieses loops, minus der des letzten loops 30-30 = 0
ergebnis: da die korrektur des letzten loops nicht gereicht hat um den drift zu kompensieren, ist der P anteil gleich oder zumindest in die gleiche richtung wie beim letzten loop. D muss keinen schwinung ausgleichen deshalb ~0.
das ergebnis des PID reglers wäre X achse +30 (P+I-D).
->alles so wie es sein soll.
szenario B:
der gyroX auschalg ist -10 (in die andere richtung) aber beim letzten loop war es +10...
das sieht nach ner schwinung aus
P ist also -10*3 = -30
jetzt wäre D dann (-30)-30 (P dieses loops - P des letzten loops) also -60
Sagen wir das D auf -0.5 steht.. so wäre der D anteil -60*-0.5 = +30.
ergebnis: da P zwischen diesem und dem letzten loop das vorzeichen gewechselt hat, scheint es zu schwingen. um diese schwinung aus zu gleichen wird der D anteil groß. so glättet D die schnellen schwinungen.
das ergebnis des PID reglers wäre hier 0 (P+I-D).
->alles so wie es sein soll.
wo ist also das problem?
um im realen fug eine gute schwinungsunterdrückung durch D haben zu können muss D aus mehereren vergangenen loops gebildet werden, da bei coptern nicht jedes problem innerhalb eines oder zwei loops geregelt werden kann. das aber wiederum kann in verbindung mit schnell reagierenden ESCs und motoren zum aufschwingen führen.
ein gyro misst grad drehung pro sekunde. kleine, schnelle bewegungen verursachen große auschläge. reagiert der antrieb jetzt sehr schnell, verursacht er wieder einen starken auschlag in die gegen richtung... und so weiter. da aber die frequenzen mit denen reale "flugschwinungen" ausgeglichen werden müssen wesentlich geringer sind, schwingt es hochfequent.
kleines beispiel.. ein kopter würde im flug niemals schneller als 50 mal pro sekunde schwingen (50Hz).. D wird also dafür ausgelegt diese schwinungen aus zu gleichen. wenn jetzt aber durch frame, regler, motoren und schnelle looptimes auschläge entstehn die zu 100 oder sogar 300 winzig schwinungen pro sekunde führen, liegt D immer daneben und kann das problem sogar noch verschärfen. (es ist z.b positiv addirt sich aber 5 loops zu spät auf wo auch der P anteil wieder positiv sein kann).
hier hilft ein tiefpass filter. diese filter glätten hohe frequenzen. so würden hohe, schnelle auschläge nur zu einer reaktion führen wenn sie für meherere loops anhalten. die die andauernd hin und her gehen gleichen sich so selbst aus.
gruß
Felix