Hallo Willa,
Zitat:
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.
Ok, d.h. die Regelung ist nicht dazu gedacht den Copter selbstständig in der waagerechten zu halten und der Drift der Gyros muss auch gar nicht rausgerechnet werden.
Die Regelung soll den Copter eigentlich soweit beruhigen, dass er für den Piloten steuerbar wird.
Den Drift der Gyros und sicherlich auch noch so einige Einflüsse durch Wind usw. gleicht der Pilot dann aus.
Zitat:
Man kann übrigens auch das Integral in jedem Durchgang mit dem Faktor 0.99999 multiplizieren... Sollte auch gehen
Das ist ja dasselbe was ich mit "den Faktor mit dem das Integral in die Regelung eingeht niedriger machen" gemeint habe.
Der wesentliche Unterschied ist, er Faktor wirkt proportional. D.h. wenn das Integral gross wird, bewirkt der Faktor viel, wenn es klein ist, ändert der Faktor wenig.
Der Idealfall wäre ja sicherlich, wenn der Copter still und waaherecht in der Luft "klebt" und das Gyro nicht driftet. Dann ergäbe das Gyro-Integral 0.
An dieser Stelle hinzugehen und in jedem Durchlauf einen konstanten Wert abzuziehen, bzw. hinzuzufügen, sollte theoretisch eher schädlich sein.
Praktiisch schadet es vermutlich nicht, weil man damit in der Nähe vom Nullpunkt den konstanten Wert in einen Durchlauf dazu addiert, das Integral dann das Vorzeichen wechselt und dadurch schon im nächsten Durchlauf derselbe Wert wieder abgezogen wird.
D.h wenn die Regelung schnell genug ist, kommt die ganze Aktion gar nicht bei den Motoren an und schadet daher nicht.
Vielleicht klappt es sogar (mehr oder weniger) zufällig besser als ein Faktor, weil die Reaktion des Copters und die Störgrössen auch nicht linear sind.
Zitat:
Wenn man den Faktor niedriger macht, hat es keine regelnden Eigenschaften mehr.
Nach deiner Beschreibung weiter oben hast du ihn mit Ki=0.003 ja schon so klein gemacht, dass ich mich aus dem Bauch heraus eh wundere, wie der noch was bewirkt.
Zitat:
Er hat fatale Folgen für einen Copter, denn das Integral gibt die Winkelgeschwindigkeit vor.
Das stimmt so glaube ich nicht.
Dem Datenblatt nach misst dein Gyro-Sensor die Winkel-Geschwindigkeit (Angular Rate).
Das Integral aus der Winkelgeschwindigkeit müsste demnach der Winkel sein.
Zitat:
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.
Ich glaube der Drift im eigentlichen Sinne spielt hier gar keine so grosse Rolle. Ein ganz langsames wegdriften wird der Pilot ausgleichen können.
Kritischer sind die Fehler die durch die Berechnung selber entstehen. Du wertest den Gyro ja nur in Intervallen aus. Zwischen den Intervallen passiert ja auch etwas, d.h. die Messwerte sind eigentlich immer etwas falsch. Dann kommt noch ein Messfehler dazu und ein Fehler durch die Digitalisierung des analogen Messwertes.
Bei 40 Hz addierst du alle diese Fehler 40 mal pro Sekunde auf. D.h. dein Integral hat ganz schnell nichts mehr mit der Realität zu tun und sagt dir dein Copter steht auf dem Kopf obwohl er noch wunderbar in der Waage ist.
Zitat:
Es wird quasi doppelt integriert wenn man sagt dass die zu regelnde Größe der Winkel ist (oder...?).
Kommt daraus an, was du machst.
Wenn du wirklich den Winkel als Sollgrösse nimmst, müsstest du die Messwerte des Gyros schon für den P-Anteil integrieren und für den I-Anteil dann das Integrall nochmal integrieren.
Ob du das so machst ist mir noch nicht ganz klar geworden.
Aber auch wenn du das nicht machst, geht das Integral sehr stark in deine Regelung ein.
Wenn der eigentliche Messwert am Gyro die Winkelgeschwindigkeit ist, sagt dir der nur, wie schnell dein Copter kippt.
Wenn dein Copter auf dem Boden liegt, hat er keine Winkelgeschwindigkeit. Der direkte Messwert des Gyros kann also nichts regeln. Dein Integral summiert aber fleissig weiter die Messfehler auf und sagt irgenwann trotzdem, dass der Copter auf dem Kopf steht.
Für den Piloten ist es sicherlich unangenehm, wenn er den Copter wunderbar ruhig hält und die Regelung in aber auf den Kopf drehen möchte ;-)
Mit deiner Addition, bzw. Subtraktion oben, die ja auch 40 mal pro Sekunde durchgeführt wird, stellst du das Integral kontinuierlich Richtung Null zurück.
D.h. der Winkel den das Integral angibt ist eigentlich nach kürzester Zeit immer wieder Null Grad, selbst wenn der Copter auf dem Kopf steht.
Da die Regelung bei Null aber nichts macht, stört das den Piloten nicht sonderlich, weil der den Copter ja manuell in ausgleicht.
D.h. eigentlich stellt dein Integral den Winkel dar. Den stellt es zwar falsch dar, das macht aber nichts, weil die anderen Bestandteile der Regelung und der Pilot den Winkel halten.
Das Integral verlangsamt/verhindert nur sehr schnelle Richtungsänderungen des Copters. Das ist als Pilot aber vermutlich genau die Untzerstützung die man benötigt.
In die Theorie der regelungstechnik passt es dann ja auch wieder rein, denn da soll der I-Anteil ja auch nur die Regelabweichung des P-Anteils reduzioeren und nicht selber den Sollwert halten.
Zitat:
Zitat:
SummeGyro = SummeGyro + Gyro
If SummeGyro > X then SummeGyro = 0
If SummeGyro < -X then SummeGyro = 0
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.
Stimmt genau. War auch Sinn meines Tests.
Die Routine hält mein Fahrgestell eine Zeit lang ausrecht. Wenn das dann umkippt oder ich es umkippe, versucht die Routine es in dieser Position zu halten.
Die Lage zu halten ist aber doch glaube ich auch beim Copter gewünscht und das "plötzliche" Kippen eine Frage davon mit welchen Anteil diese Routine - sprich der I-Anteil in die gesamte Regelung und Steuerung durch den Piloten eingeht.
Wenns Ki wie bei dir nur ca. 1% von Kp ist, kann der I-Anteil sich ja nicht sonderlich heftig gegen den P-Anteil und das was der Pilot an der Fernsteuerung sagt wehren.
Zitat:
Das geht mir genauso... Da unterhalten sich ja die richtigen ;-D
Das stimmt auf jedenfall insofern, dass ich deine Sprache verstehe, die Formelsprache der theoretischen Regelungstechniker eher nicht ;-)
Ausserdem hast du das überzeugende Argument, dass dein Copter fliegt, das was du machst also funktioniert.
Dass die Parameter für die meisten Regelungen in der Praxis durch Ausprobieren ermittelt werden, spricht ja nicht unbedingt dafür, dass die ganzen theoretischen Formeln der Regelungstechnik sonderlich hilfreich sind ;-)