Ich lese gerade über selbstausgleichende Roboter , die eine IMU (Gyroskope + Beschleunigungsmesser) verwenden, um ihren aktuellen Neigungswinkel abzuschätzen.
Die meisten Dokumente, die ich gefunden habe, sagen dasselbe:
- Sie können nicht einfach die Bogen-Tangente der Beschleunigungsmesserdaten nehmen, um die Schwerkraftrichtung zu ermitteln, da diese von "Trägheitsgeräuschen" beeinflusst werden.
- Sie können die Ausgabe des Gyroskops nicht einfach im Laufe der Zeit integrieren, da es driftet.
- Es gibt zwei allgemein akzeptierte Lösungen, um diese Daten zusammenzuführen:
- Ein Kalman-Filter, der die aktuelle Neigung zusammen mit der aktuellen Gyroskopvorspannung schätzt .
- Ein kostenloser Filter , der einen Tiefpassfilter auf die Beschleunigungsmesserdaten anwendet (ihnen kann langfristig vertraut werden), und einen Hochpassfilter auf die Gyroskopdaten (dem kurzfristig vertraut werden kann).
Alle Quellen, die ich gefunden habe, scheinen die Rohdaten der Beschleunigungsmesser in diesen Filtern zu verwenden, ohne die Tatsache zu berücksichtigen, dass wir in einem selbstausgleichenden Roboter eine sehr gute Schätzung des oben erwähnten "Trägheitsrauschens" haben können.
Hier ist mein obwohl
Lassen Sie uns unseren Roboter mit einem umgekehrten Pendel mit einem sich bewegenden Drehpunkt modellieren und diese schlechte Zeichnung als Referenz verwenden.
Die Trägheitskräfte, die von den Beschleunigungsmessern bei C empfunden werden, können abgeleitet werden aus (wenn ich keinen Fehler gemacht habe)
Vorausgesetzt, dass
- Unser Roboter rollt ohne zu rutschen
- Wir können x messen (entweder mit Schrittmotoren oder Gleichstrommotoren mit Encodern)
Dann können wir eine gute Schätzung all dieser Variablen haben:
- : Endliche Unterschiede zu unseren aktuellen und vorherigen Maßen von
- : Der aktuelle Gyroskopwert
- : Vorherige Schätzung von plus die Integration von und über ein
- : Endliche Unterschiede zwischen und
Sobald wir das haben, können wir den Effekt der Trägheitskräfte in den Beschleunigungsmessern negieren und nur ein viel besseres Maß für die Schwerkraft hinterlassen.
Es ist wahrscheinlich immer noch eine gute Idee, dies als Eingang des üblichen Kalman-Filters wie in 1. oben zu verwenden.
Vielleicht können wir sogar einen Kalman-Filter erstellen, der alle diese Variablen auf einmal schätzen kann? Ich werde das versuchen.
Was denken Sie? Vermisse ich hier etwas?
Ich denke, ein selbstausgleichender Roboter könnte ein guter Tag sein, aber ich kann ihn nicht erstellen