Hallo Recycle!
In der Theorie hast du eigentlich Recht, in der Praxis hat sich das Vorgehen aber bewährt. Durch das Abziehen eines konstanten (pos oder neg) Wertes vom Integral bekommt man einen Teil der realen Bewegung nicht mit. Diesen Teil sieht aber der Pilot sehr wohl. Der Drift wird also vom Piloten ausgesteuert.aber warum es hilft in jeden Durchgang etwas vom Integral zu subtrahieren oder addieren?
Ohne hierfür einen Sensor, z.B. ACC auszuwerten kann man dann doch eigentlich immer nur einen konstanten Wert abziehen oder hinzufügen. Die Integration selber ist nichts anderes als in jedem Durchgang den (positiven oder negativen) Messwert zu addieren. D.h. eigentlich rechnet man schon im ersten Durchgang falsch und man rechnet keinen Drift raus, sonder verzögert nur, dass das Integral durch Aufsummieren der Fehler aus dem Rahmen läuft.
Das bezahlt man aber halt damit, dass man schon mit falschen Werten rechnet, selbst wenn gar kein Drift da ist.
Man kann übrigens auch das Integral in jedem Durchgang mit dem Faktor 0.99999 multiplizieren... Sollte auch gehen.
Wenn man den Faktor niedriger macht, hat es keine regelnden Eigenschaften mehr. Du musst folgendes beachten beim Drift: Er hat fatale Folgen für einen Copter, denn das Integral gibt die Winkelgeschwindigkeit vor. Wenn das Integral nun gaaaaaaanz langsam wegläuft (z.B. beim Wert "10" rumkriecht), dann heisst dass, das der Copter die ganze Zeit eine Winkelgeschwindigkeit hat. Es wird quasi doppelt integriert wenn man sagt dass die zu regelnde Größe der Winkel ist (oder...?).Wäre es da nicht besser, den Faktor mit dem das Integral in die Regelung eingeht niedriger zu machen?
In einem anderen Thread hast du geschrieben, dass das Integral aufgrund der sich addierenden Fehler irgendwann völlig falsch wird und man es dann auf 0 zurücksetzen muss.
Dieser Code würde bewirken, dass der Copter sich erst wehrt nach vorne gekippt zu werden, dann aber plötzlich die nach vorne gekippte Lage schlagartig akzeptiert und von nun an nach vorne gekippt bleiben will.SummeGyro = SummeGyro + Gyro
If SummeGyro > X then SummeGyro = 0
If SummeGyro < -X then SummeGyro = 0
Das geht mir genauso... Da unterhalten sich ja die richtigen ;-DRegelungstechnik werde ich nie kapieren.







Zitieren

Lesezeichen