Momentan versuche ich, 3D Cube mithilfe von Orientierungssensorwerten mithilfe der Methode getRotation () zu drehen. Einige unerwartete Verhaltensweisen werden beobachtet, wenn das Android-Gerät über Grenzen hinaus gedreht wird. Zum Beispiel, wenn ich das Gerät "aufstehen", wird der Wert der "Rolle" einfach verrückt.
Auch ich erlebe das Phänomen ähnlich dem sogenannten Gimbal-Lock. Der einzige Unterschied ist, dass ich das Problem bereits vor der Anwendung der Sensorwerte auf die 3D-Rotation habe. Wenn ich versuche, den "Tonhöhen" -Wert zu ändern, indem ich das Gerät nur um die Tonhöhenachse rotiere, ändert sich auch der "Gier" -Wert entsprechend der Drehung der Tonhöhe. Es scheint mir völlig unvernünftig.
Könnte mir jemand helfen? Ich stecke seit einem Monat in diesem Problem.
Dies ist ein häufiges Problem beim Gieren, Pitch and Roll. Sie können es nicht loswerden, solange Sie Gieren, Neigen und Rollen ( Euler-Winkel ) verwenden. Dieses Video erklärt warum.
Ich verwende Rotationsmatrizen anstelle von Euler-Winkeln in meiner Bewegungssensor-Anwendung. Für eine Einführung in Rotationsmatrizen empfehle ich:
Richtung Cosinus-Matrix IMU: Theorie
Rotationsmatrizen funktionieren wie ein Zauber.
Quaternions sind ebenfalls sehr beliebt und werden als die stabilsten bezeichnet.
[Diese Antwort wurde von hier kopiert.]
Die Verwendung von Quaternionen zur Berechnung von YPR wird nicht viel zur Lösung eines Problems beitragen. Das Problem der Gimbal Lock (die nahe der Tonhöhe von +/- 90 kann Gieren und Rollen - tatsächlich Gieren-Rollen am Nordpol - um unter leichten Veränderungen / Rauschen in der zugrunde liegenden Quaternion verrückt zu werden).
Wenn Sie jedoch Yaw-Pitch-and-Roll-Werte verwenden, um eine Drehung eines 3D-Objekts auszuführen, sollte in der Nähe der Gimbal-Lock-Position kein merkwürdiges Verhalten auftreten. Es ist nur so, dass eine Unausgewogenheit in Gieren und Rollen entsteht und große Schwankungen in Gieren und Rollen bedeuten nicht, dass die tatsächliche Orientierung verrückt wird - nur dass die Ausrichtung unempfindlich gegenüber großen Änderungen der Gierrolle in der Nähe von 90 ist.
Beachten Sie jedoch, dass Telefone und Browser für HTML5 Gier, Pitch und Roll pro Konventionen für Android nicht richtig implementieren. Hier ist ein guter Blog als Referenz:
Hier ist ein einfaches Beispiel, das den Vektor der Schwerkraft zurückgibt. Beachten Sie, dass Sie den Sensortyp und die Geschwindigkeit der Probenahme ändern können. Weitere Details finden Sie hier
> %Vor%Tags und Links android accelerometer rotation sensor orientation