Beschleunigungsmesser in einem selbstausgleichenden Roboter, können wir es nicht besser machen?

9

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:
    1. Ein Kalman-Filter, der die aktuelle Neigung zusammen mit der aktuellen Gyroskopvorspannung schätzt .
    2. 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.

Geben Sie hier die Bildbeschreibung ein

Die Trägheitskräfte, die von den Beschleunigungsmessern bei C empfunden werden, können abgeleitet werden aus (wenn ich keinen Fehler gemacht habe)

(cr¨cΘ¨)=(- -x¨Sünde(Θ)- -R.Θ˙2- -x¨cos(Θ)+R.Θ¨)

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:

  • x¨^k : Endliche Unterschiede zu unseren aktuellen und vorherigen Maßen vonx
  • Θ˙^k : Der aktuelle Gyroskopwert
  • Θ^k : Vorherige Schätzung von plus die Integration von und über einΘΘ˙^kΘ˙^k- -1Δt
  • Θ¨^k : Endliche Unterschiede zwischen undΘ˙^kΘ˙^k- -1

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

Julien
quelle
Ein Laser-Entfernungsmesser wäre unglaublich nützlich.
Holmeski

Antworten:

1

Wenn Sie einen Kalman-Filter mit einem 'x'-Eingang richtig konstruieren, ist es besser. Insbesondere kann der Trägheitssensor in keinem Fall einen absoluten Wert für x liefern, da Sie (im Wesentlichen) versuchen, ein Beschleunigungsmessersignal doppelt in eine Position zu integrieren, und dies ist äußerst empfindlich gegenüber Rauschen im Beschleunigungsmesserausgang.

Einige Dinge, die Sie auf Ihren Reisen berücksichtigen sollten:

  1. Ein ausgewachsener Kalman-Filter ist rechenintensiv, aber ein stationärer Kalman-Filter ist im Grunde ein komplementärer Filter mit Rolloff-Frequenzen, die eher durch die Konstruktion als durch b'guess und b'gosh ausgewählt werden.
  2. Apropos b'guess und b'gosh, wenn Sie möchten, dass ein Kalman gut funktioniert (und manchmal überhaupt), müssen Sie alles , was in Ihre Abweichungen einfließt, sehr genau berücksichtigen . Kalmans sind dafür berüchtigt, dass sie nicht gut auf Fehlpaarungen zwischen Ihrem Modell und der Realität reagieren. Wenn Sie bereit sind, zu rechnen, sollten Sie sich mit H-Infinity und anderen robusten Zustandsschätzungstechniken befassen.
  3. Wenn Sie den Weg der H-Unendlichkeit beschreiten, können Sie auch den stationären H-Unendlichkeitsfilter finden und den gleichen Rechenvorteil erzielen (und tatsächlich ist die tatsächliche Filterstruktur in Ihrem eingebetteten Code dieselbe; Ich habe nur unterschiedliche Werte in den Koeffizienten.
TimWescott
quelle
Ich denke, Sie übertreiben die Rechenkosten eines vollständigen Kalman-Filters. Julien wird wahrscheinlich weniger als 6 Staaten haben, was auf den meisten Boards kein Problem wäre.
Holmeski
1

Dies ist zwar keine vollständige Antwort auf Ihre Frage, aber ich möchte einige meiner Gedanken hinterlassen. Ich denke du hast verpasst:

  1. Die Schwerkraft selbst zeigt nach unten und beträgt normalerweise etwa 9,81 m / s², kann jedoch je nach Standort unterschiedlich sein (Sie messen die Schwerkraft nur dann, wenn sich der Roboter im freien Fall befindet).
  2. Die Sensoren sind normalerweise nicht zu 100% auf Ihre x / y / z-Achse ausgerichtet (der Chip ist nicht vollständig horizontal auf der Leiterplatte ... die Leiterplatte ist nicht vollständig horizontal / vertikal in Ihrem Roboter usw. montiert). Sie müssen dies kompensieren
  3. Beschleunigungssensoren haben einen Offset- und Verstärkungswert, den Sie kompensieren müssen. Sie werden zB durch Temperatur- und Fertigungstoleranzen beeinflusst. Hierfür gibt es Online-Kalibrierungsalgorithmen. Sie können diese unbekannten Variablen aber auch in einen Kalman-Filter einfügen.
  4. Gyroskope haben eine Drift, die auch von der Temperatur abhängt. Es ist keine Konstante, kann sich aber im Laufe der Zeit ändern. Diese Drift kann mit Hilfe eines Magnetometers leicht kompensiert werden.
  5. Magnetometer, auch Kompasssensoren genannt, in 3D können verwendet werden, um die Drift von Gyroskopen zu kompensieren. Sie werden jedoch manchmal von elektromagnetischen Feldern (Motoren, Magnete, Stahl in Wänden usw.) beeinflusst. Man kann ihnen also nicht völlig vertrauen.

Ein Kalman-Filtermodell ist ein guter Ansatz. Je mehr Wissen über das Bewegungsmodell Sie in das Modell einfügen, desto besser funktioniert es. Sie müssen auch (Co-) Varianzen aller Variablen kennen ... Wie sicher Sie denken, dass die Messungen jedes Sensors sind.

SDwarfs
quelle
Gute Punkte zu realen Themen wie Kalibrierung, Drift, Temperatur usw.
Ben