2013-03-19 2 views
10
  • Ich möchte die Ausrichtung eines Geräts auf 2 Achsen überwachen: sehr einfach: welcher Weg ist unten.
  • Es muss Genauigkeit über längere Zeit aufrechtzuerhalten (12 Stunden)
  • Es wird Rotationen unterliegen und Beschleunigungen um alle Achsen

Das Gerät wird mit Standard-Gyroskop/Beschleunigungsmesser ein Android-Handy sein. Mit diesen beiden Sensortypen, , ist es möglich, die obigen Anforderungen zu erfüllen?Orientieren mit Gyroskop und Beschleunigungssensor

Meine Gedanken so weit: Ein Beschleunigungsmesser allein nicht erreichen können, eine beliebige Menge von Werten für einen Augenblick in der Zeit gegeben, da ist es nicht möglich, die Gravitations- und räumliche Beschleunigungskomponenten zu trennen. Und ich kann nicht verstehen, wie ein Gyroskop dabei helfen könnte. Gibt es clevere Formeln/Algorithmen, die das schaffen?

Dank

+1

Versuchen Sie, ein google für "Beschleunigungsmesser Gyroskop Datenfusion". Es ist eine ziemlich häufige Aufgabe in IMUs und ist definitiv machbar. (Von Kopf weg könnten Sie einen Kalman-Filter aufstellen/machen Sie einfach einen HPF auf dem Beschleunigungsmesser und einen LPF auf dem Gyroskop, aber ich habe keine Implementierungsdetails zur Hand). – sapi

Antwort

21

Ein einfacher Weg, Beschleunigungsmesser und Gyroskop Daten durch die Verwendung eines komplementären Filter zu kombinieren. Auf diese Weise haben Sie keine Probleme mit Drift vom Gyroskop und Rauschen vom Beschleunigungsmesser. Es ist auch viel einfacher zu verstehen und zu verwenden als ein Kalman-Filter.

Sie berechnen den Winkel vom Gyroskop mit einem Integral. Und für den Beschleunigungsmesser verwenden Sie eine tan2-Funktion, um die Position des Gravitationsvektors zu bestimmen. Der komplementäre Filter würde dann kombinieren diese beiden Winkel wie folgt:

Winkel = 0,98 * (Winkel + Gyrodata * dt) + 0,02 * accAngle

Beachten Sie, wie Sie nur einen Bruchteil der Daten des Beschleunigungsmessers nehmen (gerade genug, um die Drift kompensieren). Sie werden also die Gyroskopdaten für schnelle Änderungen verwenden, aber auf lange Sicht werden Sie weiterhin den Mittelwert der Winkelberechnung des Beschleunigungsmessers einhalten, so dass Sie nicht driften.

Ich hoffe, das hilft. Wenn Sie weitere Informationen und ein C-Codebeispiel benötigen, schrieb ich einen Artikel darüber here

Verwandte Themen