IMU - Wie man die Orientierung in einer erschütterten Umgebung berechnet

Ich versuche, die Ausrichtung auf einem IMU-Sensor zu berechnen. Bis jetzt mache ich es, indem ich den Neigungswinkel berechne und es funktioniert gut:

float pitch = atan2(-obj.x, sqrt(obj.y*obj.y + obj.z*obj.z)) * 180/M_PI;.

Mein Problem ist, wenn der Sensor stark zittert (obwohl er die gleiche Ausrichtung angibt), dh die Tonhöhe ändert sich drastisch und er verliert die richtige Ausrichtung.

Gibt es eine Möglichkeit dieses Verhalten zu vermeiden. Was ich zu tun gedacht habe, ist, die alte Tonhöhe zu speichern und mit der aktuellen Tonhöhe zu vergleichen, und wenn sie sich um +-20% * voneinander unterscheiden, ignoriere ich den Orientierungswert. Dies funktioniert natürlich nicht, wenn der Sensor ständig geschüttelt wird.

Vielen Dank im Voraus!

*20 ist nur eine Zufallszahl

Tiefpassfilter ...

Antworten (1)

Ein MEMS-Beschleunigungsmesser misst Beschleunigungen aller Art über seine drei Achsen, und aus diesem Rauschen muss der Gravitationsvektor abgeleitet werden. Wenn sich das System in völliger Ruhe befindet, ist das Beschleunigungsgeräusch minimal und einfache Mathematik funktioniert gut. Aber in Bewegung, oder genauer gesagt in einer Umgebung von Vibrationsenergie, die in alle Richtungen geht, wird es sehr schwierig.

Mein Vorschlag ist, die X-, Y- und Z-Werte Ihres Beschleunigungsmessers vor Ihrer Tonhöhenberechnung zu filtern und dann die Ausgabe Ihrer Tonhöhenberechnung zu filtern.

Wenn Sie eine Möglichkeit haben, Daten in Echtzeit aus Ihrem System zu übertragen, können Sie die Ausgabe Ihres Beschleunigungsmessers grafisch darstellen. Anschließend können Sie Filter simulieren und so abstimmen, dass sie am besten zu Ihrer Anwendung passen.

Beispielfilter umfassen IIR, FIR, Median, Mittelung, Kalman usw. Jeder trägt seine Stärken und Schwächen. Sie können sie auch etwas kombinieren, je nachdem, was Ihre Anwendung benötigt.

Was Sie wahrscheinlich feststellen werden, ist, dass es tatsächlich sehr schwierig ist, in einer Umgebung mit starken Vibrationen einen stabilen Messwert des Gravitationsvektors zu erhalten. Als Ergebnis enthält der IMU-Chip den Kreisel. Der Kreisel liefert Ihnen Winkelgeschwindigkeitsdaten, die sehr hilfreich sind, aber sehr starker Drift unterliegen (wie mehrere Grad pro Sekunde). Diese beiden sehr unvollkommenen Sensoren müssen miteinander vernetzt werden, um Ihre Orientierung im Vergleich zur Schwerkraft herauszufinden. Gängige Vorgehensweisen sind:

  • Hochpassfilter für den Kreisel und Tiefpassfilter für den Beschleunigungsmesser.
  • Verlassen Sie sich für die kurzfristige Orientierung auf den Kreisel und versuchen Sie, Fehler mit langfristigen Beschleunigungsmesserdaten zu korrigieren.
ich danke Ihnen sehr für Ihre Antwort! Ich werde Ihre Vorschläge auf jeden Fall testen und Sie wissen lassen, wie es gelaufen ist