Yaw aus einem Quaternion extrahieren
Habe ich eine rotation mit quaternion und wollen, extrahieren Sie die Winkel der Drehung um die vertikale Achse (Gieren). Ich bin mit XNA und soweit ich das beurteilen kann gibt es keine eingebaute Funktion dafür. Was ist der beste Weg, dies zu tun?
Vielen Dank für jede Hilfe,
Venatu
InformationsquelleAutor der Frage Venatu | 2011-04-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den quaternion-Darstellung der rotation ist eine variation auf Achse und Winkel. Also, wenn Sie drehen durch r Radiant um die Achse xyzdann Ihre quaternion q ist:
Wenn Sie möchten, erstellen Sie eine quaternion, nur dreht sich um die y Achse, null aus der x und z Achsen und dann re-normalisieren der quaternion:
Wenn Sie möchten, dass der resultierende Winkel:
Dabei wird vorausgesetzt, dass die Quaternionen-Darstellung gespeichert ist: w,x,y,z. Wenn sowohl q[0] und q[2] sind null, oder nahe daran, die daraus resultierende quaternion soll einfach {1,0,0,0}.
InformationsquelleAutor der Antwort JCooper
Gegeben ein Quaternion q, können Sie berechnen, roll, pitch und yaw so:
Dieser passt für die intrinsische tait-bryan-Drehung des xyz-Reihenfolge. Für andere rotation Bestellungen, extrinsische und richtige-euler-Rotationen anderen Umbauten verwendet werden.
InformationsquelleAutor der Antwort thewhiteambit
Umwandlung Quaternion, Euler
Ich hoffe, Sie wissen, dass die yaw, pitch und roll sind nicht gut für beliebige Rotationen. Euler-Winkel leiden von Singularitäten (siehe oben den link) und Instabilität. Blick auf 38:25 der Präsentation von David Sachs
http://www.youtube.com/watch?v=C7JQ7Rpwn2k
Glück!
InformationsquelleAutor der Antwort Ali
Hinweis: ich habe geprüft code unten gegen Wikipedia-Gleichungen plus Pixhawk in der Dokumentation und es ist richtig.
Wenn Sie mit Drohnen/Flugzeuge, unten ist der code (stammt direkt aus DJI SDK). Hier q0, q1, q2, q3 entspricht, w,x,y,z-Komponenten der quaternion beziehungsweise. Beachten Sie auch, dass yaw, pitch, roll bezeichnet werden kann, als überschrift, Haltung und bank bzw. in einigen Literatur.
Wenn Sie brauchen, um zu berechnen, alle 3, dann können Sie vermeiden, Neuberechnung der Häufig verwendeten Begriffe mit den folgenden Funktionen:
Hinweis auf Eigen-Bibliothek
Wenn Sie mit Eigen-Bibliothek, hat es einen anderen Weg, diese Umwandlung zu tun, aber das ist vielleicht nicht so optimiert wie oben direkte code:
InformationsquelleAutor der Antwort ShitalShah
Ein quaternion besteht aus zwei Komponenten: ein 3d-Vektor-Komponente und eine Skalare Komponente.
Den Vektor-Komponenten der quaternion beschreibt unabhängigen Rotationen um jede Achse, also zero ' Ing aus der x - und y-Komponenten des Vektors Komponente und verlassen z-Komponente als-ist ist, alles, was Sie tun müssen, um zu lösen, die für die Vektor-Begriff:
Der Skalare term stellt die Stärke der Drehung. Für eine Einheit Quaternionen (wie man es darstellen Haltung), das gesamte quaternion, muss eine Stärke von 1. Also, die Skalare Ausdruck kann gelöst werden durch:
Da qx und qy sind null, die Skalare Komponente ist gegeben durch
Somit die volle Quaternionen repräsentiert Gier ist gegeben durch
InformationsquelleAutor der Antwort Eric Cox