PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Lageregelung eines Quadrocopters



MiniMax
08.07.2012, 19:37
Hallo Zusammen,
ich habe mich mal wieder hingesetzt und meine Pläne für einen Quaddi ausgegraben. Jetzt habe ich hier einen MPU-6050 besorgt der mir, glücklicherweise, den Tiefpass Filter abnimmt. :D
Wie ich an die DAten komme wird sich Zeigen ;)

Nur meine alte Frage ist immer noch ungelößt: Wie bekomme ich den ACC (Winkelbeschleunigung) und Gyro (Winkelgeschwindigkeit) verrechnet? Die Daten die ich ja danach bekomme [ein Wert?] (nach dem Filter und so) gehen in den PID Regler oder? Der gibt mir dann die Regelabweichung und dann Regel ich damit in die Neutrallage?!? Habt ihr da I-wo ne gute Doku für mich?Auch interessiert mich eine logische Abfolge der Schritte => So in etwa: ACC auslesen - Gyro auslesen - Filter (einfacher Kalman) - soll Winkel (vom Sender? oder wie nimmt man die soll Lage?) - PID Filter (mit welchen Werten?) - Regelabweichung auf Regler (sprich Motoren) geben - neu messen
Und das für alle 3 Achsen
Ich hoffe das einige der Profis hier mir helfen können :D

Che Guevara
08.07.2012, 19:47
Hi,

ich habe selbst zwei Kopter, welche auch mit dem MPU60x0 fliegen. Erstmal eine Frage: Welche Modi möchtest du programmieren? Nur HH (Heading Hold) oder nur Hover oder beides?
Im HH Modus brauchst du den ACC überhaupt nicht. Du bildest einfach die Differenz zwischen Ist- und Sollwert, multiplizierst diese mit deinem Kp und gibst das dann auf die Motoren. Schau mal hier im Forum, Willa hat z.b. seine Sourcen offengelegt, das ist ein seeehr schöner Code ;)

Gruß
Chris

MiniMax
08.07.2012, 20:15
Hallo,
DAnke für deine Antwort.
Erstmal was sind die Modi?? Hover = Auf einer Stelle HH = Stabilisation?
Willas Code habe ich mir auch schonma angeschaut aber ich möchte alles von Anfang an verstehen :D
Was ist der/das Kp??

ePyx
08.07.2012, 20:25
Kp ist der Proportionalitätsfaktor also das P in PID. Ist eine einfache Skalierung/Verstärkung, daher die Multiplikation.

MiniMax
08.07.2012, 20:33
Ah ok jetzt habe ich folgendes gefunden:
Ich brauche Winkel und Winkelbeschleunigung wie es weiter geht KP

So um auf den Winkel zu kommen:
angle = (0.98)*(angle + gyro*dt) + (0.02)*(x_acc)

0.98 und 0.02 sind die Verstärkungsfaktoren

angel ist der alte/neue Winkel, gyro der Gyro wert, x_acc die ACC werte und dt die Looptime. Aber wie bekomme ich in Bascom die dt?? Könnte man das mit nem Timer machen??
Und ist das der gesamte Filter??

Achja welche Werte holt ihr aus welchen Registern des MPU 6050 ??

MiniMax
09.07.2012, 13:38
Mhmmm...
Keiner ne Idee??

Che Guevara
09.07.2012, 14:05
Darf ich fragen, woher du die Formel hast?
0.98 und 0.02 sind die Anteile der jeweiligen Sensoren, also der resultierende Winkel setzt sich zu 98% aus dem Gyrointegral und zu 2% aus dem ACC-"Winkel" zusammen.
dt könntest du beispielsweise mittels eines Timers abfragen, wobei ich der Meinung bin, dass es auch komplett ohne dt geht, da sich deine Regelfrequenz ja nicht ständig ändert. Das ist ein Komplementärfilter, dieser ist nur dann nötig, wenn man den Hover-Mode programmiert.
Du brauchst mindestens die drei Gyro-werte, ansonsten noch ACCX und ACCY für den Hover... Falls du eine bessere Lagerregelung mit Achsentkopplung haben möchtest (also ohne Gimbal Lock), solltest du es mit Quaternionen probieren... Da hab ich aber absolut keine Ahnung und auch keine gute Quelle, wo man sich als Laie informieren kann.. Wenn jemand was findet, immer her damit :D

Gruß
Chris

MiniMax
09.07.2012, 16:13
mhmmm mit den Anteilen so weit war ich auch ;)
Das ist aus nem pdf im I-net :D
Ich habe gehört/gelesen, dass der Komplementärfilter eine einfache Form des Kalman Filters ist aber dennoch gute Werte liefert ?!?
Das ohne dt verstehe ich nicht... Der Gyro gibt doch °/s an und das muss ich auf meine Zeit zwischen den Mesungen bringen??? Oder nicht??

Ist das denn der Komplette Filter?? Gehen dann aus dem der Wert und der ACC in die Regelstrecke??