Wie kann ich einen relativen Gierwert von einer IMU (MPU-6050) finden, basierend darauf, welche Richtung gerade oben ist?

Es fällt mir schwer, diese Frage in Worte zu fassen, aber im Grunde habe ich eine IMU (MPU-6050) und kann die Daten mithilfe der i2cDev-Bibliothek streamen.

Die IMU befindet sich in einer Kiste und ich möchte bestimmen können, auf welcher Seite sich die Kiste befindet (was meiner Meinung nach einfach sein wird, wenn ich die Gravitationsrichtung als Bezugspunkt verwende) und dann das Gieren dieser Seite berechnen lassen.

In gewisser Weise möchte ich so tun, als ob das absolute Gieren, Neigen und Rollen für das Gerät nicht existiert und stattdessen jede Seite der Box ein relatives Gieren hat.

Vorsicht mit MPU-6050 und der i2c-Bibliothek. Es verwendet das Blockieren von Anrufen, mit denen ich in der Vergangenheit Probleme hatte. Wenn Sie nun auf die X-, Y-, Z-Beschleunigungswerte zugreifen, ist die Seite, auf der sich das Feld befindet, diejenige mit dem größten X-, Y- oder Z-Wert. Wenn es x = 0, y = 10, z = 0 ist, dann ist es vielleicht richtig herum. Wenn es x = 0, y = 0, z = 10 ist, dann ist es auf der linken Seite. Hängt davon ab, wie Sie den Sensor ausrichten? Vielleicht ist das zu offensichtlich und ich verstehe nicht, was Sie fragen? Das Posten von Codeschnipseln schadet nie.
Ich verwende einen ESP8266, damit die blockierenden Anrufe nicht zu problematisch sind (Tonnen PS). Ich habe vielleicht die Lösung gefunden. Es scheint, dass die Bibliothek automatisch die Änderung des Gierens/Neigens/Rollens in Bezug auf die nach oben gerichtete Seite übernimmt (außer dass das Gieren nicht linear mit der Drehung ist, wenn der Chip nicht parallel zum Boden sitzt).

Antworten (1)

Jeff Roberg (Autor von I2CDev) hat mit seiner MPU6050-Bibliothek ziemlich gute Arbeit geleistet. Beachten Sie, dass Pitch und Roll absolute Werte sind, wenn Sie sie aus den Beschleunigungsmesserwerten berechnen, aber Yaw ist relativ, da es in MPU6050 kein Magnetometer gibt.

Wenn Sie den MPU6050 einschalten, beginnt er immer mit dem Zählen des Gierwerts von ungefähr 0 Grad (Bereich: 0 - 360 Grad), und dann tritt eine gewisse Drift auf. Die Pitch- und Roll-Werte sind jedoch im Bereich von -90 bis +90 Grad immer absolut.

Wenn Sie die Orientierung berechnen möchten, folgen Sie nicht dem Gierwert! Verwenden Sie eine Kombination aus der „Schwerkraft“-Komponente und der „Nick“- oder „Roll“-Komponente.

Was ich finde, ist, dass sich der Gierwert neu ausrichtet, je nachdem, welche Seite nach unten zeigt. Mit anderen Worten, wenn ich die MPU 90 Grad zum Boden stelle (senkrecht statt parallel), wird die Achse, die früher Pitch (oder Roll) war, automatisch zum Gierwert. Und ich bin mir nicht sicher warum. Dies funktioniert für meine Zwecke, aber die Gierwerte, wenn sich das Board in diesem Winkel befindet, folgen nicht so reibungslos wie wenn es parallel zum Boden ist.