Forum: Mikrocontroller und Digitale Elektronik PID Regelung: Giro drift und Acc error, sensor fusion


von Max M. (max_m1)


Lesenswert?

Hallo,

ich hab mich ein bisschen in die Flugregelung von RC-Flugmodellen 
(Quadcopter, Flugzeuge) eingelesen.

Was ich aber noch nicht so wirklich verstehe ist, wie genau bzw. gut der 
Regelkreis überhaupt funktioniert welche man immer so in diverse Foren 
findet.

Z.B. wird hier der Regelkreis kurz aufgezeigt:
http://ardupilot.org/plane/docs/roll-pitch-controller-tuning.html

Betrachten wir hier z.B. einmal die PID-Regelung für den Roll-Autopilot:
http://ardupilot.org/plane/_images/rollAP.jpg

Da werden einmal die Rollrate und der Rollwinkel vom IMU eingelesen.
Ich vermute mal dass die Rollrate direkt vom Giro stammt (evtl. 
Tiefpassgefiltert). Der Rollwinkel ist vermutlich mittels einer Fusion 
aus Beschleunigunssensordaten und Giro-Sensordaten berechnet worden.

Kann der PID-Regler im Bild überhaupt zuverlässig (genau) funktionieren? 
Ich dachte die Rollrate ändert sich mit der Zeit wg. dem Giro-Drift?

Oder schaut euch mal diese PID-Regelung eines Quadcopter an:
http://ardupilot.org/copter/_images/Alt-Hold-PID-version-3.0.1.jpg
(von http://ardupilot.org/copter/docs/altholdmode.html).

Da wird die Beschleunigung gemessen (rechts: IMU - Z Accelerometer) und 
die Drehrate (mittig: IMU-Rate). Überall lese ich von data-fusion und 
kalman-filter aber hier werden die "rohen" Beschleunigungs- und 
Geschwindigkeitswerte verarbeitet?

Sensor-fusion bzw. Kalman-Filter etc. braucht man doch nur wenn man 
möglichst genau die Fluglage (Winkel) bestimmen will. Was bringt dann 
das ganze wenn in der Kontrollschleife ganz andere Derivative 
(Beschleunigungs- und Geschwindigkeitswerte) benötigt werden? Ich dachte 
ein Beschleunigungssensor und/oder Drehratensensor alleine zu verwenden 
ist nutzlos wg. dem Fehler welche beide Sensor erzeugen.

mfg

: Bearbeitet durch User
von Vincent H. (vinci)


Lesenswert?

Das Problem der Raumlagebestimmung (Raumlage != Position) kann man in 
Analogie zur Odometrie betrachten. In einer perfekten Welt könntest du 
von Hinter St. Veit nach Kuala Lumpur spazieren, wenn du
-) deine Anfangsbedingungen (Richtung, Position)
-) und Schrittlänge
exakt kennst.

Genau so verhält sich das mit Gyroskopen auch. Kennst du die 
Anfangsbedingungen (Raumlage bei t = 0) und könntest deine perfekten 
Drehraten exakt integrieren, dann wäre jegliche Sensor-Fusion unnötig.

Nachdem die reale Welt aber fehlerbehaftet ist, wäre deine rein 
gyroskop-basierte Raumlagebestimmung zum Scheitern verurteilt. Binnen 
kürzerster Zeit stünde der Flieger Kopf, während die Auswertung meint er 
fliege komplett horizontal gradaus.

Aus diesem Grund muss der Beschleunigungssensor den Gyro immer wieder 
mal ein wenig "auf den Boden der Tatsachen" zurückholen. Genau das 
passiert im rechten Teil der Regelschleife. Die Mathematiker würden 
hierfür Pitch/Roll und Yaw aus den Beschleunigungsdaten rückrechnen. Die 
Regelungstechniker (und Programmierer) pfeifen auf unnötige Einheiten 
und schmeißen das Rohklump gleich direkt in die Regelung... Grad für 
Prozessoren die keine Gleitkomma-Darstellung unterstützten mit 
Sicherheit empfehlenswerter! Grundsätzlich funktioniert die Regelung 
unter der Prämisse, dass die Summe aller Beschleunigungen (bzw. der 
Mittelwert) Null ist.

Wie man die Gyroskope im Zaum hält, dafür gibt es mittlerweile unzählige 
Verfahren. Die von dir beschriebene Idee findet man immer wieder unter 
dem Namen "Complementary Filter", da es sich im Grunde um eine 
Kombination aus Hoch- und Tiefpass handelt. Genau so kann man auch die 
Daten der einzelnen Sensoren betrachten. Ein Beschleunigungssensor 
liefert mir "auf lange Zeiten gesehn" hin sinnvolle Werte, ein Gyroskop 
liefert nur auf "kurze Zeiten gesehn" hin sinnvolle Werte.

von Chefkoch (Gast)


Lesenswert?

>ein Gyroskop liefert nur auf "kurze Zeiten gesehn" hin sinnvolle Werte.
Ist es nicht eher so, dass die Integration eines Gyroskops nur auf 
"kurze Zeit gesehen" sinnvolle Werte liefert?

von Andreas (Gast)


Lesenswert?

Hier ein Versuch, die Sache etwas bildlicher darzustellen:

Beschleunigungssensoren und Kompass liefern einen Driftfreien Wert, der 
immer "richtig", dafür aber sehr verrauscht ist. Also müssen diese Daten 
(kräftig) gemittelt werden (Tiefpass). Das macht aber die Sensoren sehr 
langsam, eine schnelle Drehung wird nicht rechtzeitig erkannt.

In einem großem Flugzeug stecken auch große Gyroscope, die können schon 
für ein paar Stunden richtig laufen, wiegen dafür aber mehr als so 
Multicopter. Die kleinen Gyros laufen aber schon nach wenigen Minuten 
weg. Dafür sind sie aber bei schnellen Drehungen sehr präzise. Um den 
Drift wegzukriegen, nimmt man dann auch nur die schnellen Änderungen 
(Hochpass).

Am Anfang nimmt man als Referenz- oder Startwert Daten der 
Beschleunigungssensoren, später wird die Lage die ganze Zeit langsam an 
die Werte dieser Sensoren angepasst, so dass man keinen Drift hat. Die 
schnellen Änderung (und nur Diese) der Gyros werden aber sofort 
übernommen.

Damit hat man Die "Richtigkeit" und Stabilität der gemittelten 
B.Sensoren und die Schnelligkeit der Gyros in einem Datensatz verrechnet 
--> Sensor Fusion

MfG,
Andreas

von Vincent H. (vinci)


Lesenswert?

Chefkoch schrieb:
>>ein Gyroskop liefert nur auf "kurze Zeiten gesehn" hin sinnvolle Werte.
> Ist es nicht eher so, dass die Integration eines Gyroskops nur auf
> "kurze Zeit gesehen" sinnvolle Werte liefert?


Ah natürlich, so hieße es richtig!


Noch ein Nachtrag bezüglich dem Beschleunigungssensor. Man sollte sich 
immer im klaren sein, dass man nicht nur intrinsische, sondern stets 
alle Beschleunigungen misst, die gerade eben auf das Flugzeug wirken.

Die Berechnung der Raumlagewinkel aus den Beschleunigungen ist im 
Prinzip Vektor-Arithmetik zwischen den gemessenen Werten. Die Winkel 
können also nur dann stimmen, wenn der Vektor der "Z-Achse" (gegen Erde) 
im außenliegenden System (wie auch immer man das nennen mag) mit dem 
tatsächlichen Gravitationsvektor übereinstimmt. Wirken externe 
Beschleunigungen ein (Kurven, schneller, langsamer werden, etc.), dann 
ist die gemessene und die tatsächliche Gravitation zwei komplett 
verschiedene Dinge... und folglich stimmen die Winkel natürlich nicht 
mehr.

Ich glaub vielen Leuten ist dieser essentielle Punkt am Anfang nicht 
bewusst.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.