Ich verzweifle gerade etwas an den Umrechnungen zwischen unterschiedlichen Referenzsystemen des Quadrocopters.
Da ist zum einen das "globale" Referenzsystem, das sich im Falle das Quadrocopters z.B. gut auf eine Karte der Umgebung abbilden ließe (z.B. 10 Meter nördlich vom Startpunkt)
Auf der anderen Seite bekommen die Sensoren allerdings nur das lokale Referenzsystem des Quadrocopters mit, die Sensoren können also z.B. nur messen "Beschleunigung mit 5m/s² nach vorne".
Um dieses "nach vorne" nun in das globale Referenzsystem umzurechnen (um letztendlich die neue Lage bestimmen zu können) benötigt man die aktuelle Rotation (Orientierung) des Quadrocopters und damit der Sensoren.
Die Orientierung lässt sich hervorragend mit Quaternionen beschreiben, vor Allem lassen sich so mehrere Rotationen in eine einzige Rotation zusammenfassen.
Z.B. drehe ich mich erst um 33° um X, dann um 65° um Z, dann um 199° um Y, dann wieder 12° um X, dann nochmal 50° um Z und schließlich 20° um Y.
Wo ich jetzt bin kann ich berechnen, in dem ich jede der Rotationen nacheinander ausführe. Einfacher ist es jedoch, all diese Rotationen (in der richtigen Reihenfolge) zusammenzufassen, sodass am Ende 1 Drehung um eine Achse (a, b, c) zum gleichen Ergebnis führt.
Diese zusammengefasste Information ist in einem Quaternion gespeichert.
Will ich nun einen Vektor (z.B. den Vektor der Beschleunigung, geliefert von einer IMU) aus seinem lokalen Referenzsystem in das globale transformieren, dann muss ich "nur" das Sandwichprodukt mit dem Quaternion welches die Lage beschreibt berechnen.
Das Sandwichprodukt ist dabei:
v2 = q' * v1 * q
v1 := Vektor im lokalen System
v2 := Vektor im globalen System
q := Quaternion der aktuellen Lage
q' := konjugiertes Quaternion
* := Quaternionenmultiplikation
Klingt einfach, ist in der Praxis dann aber doch ziemliches Formelwirrwarr.
Eine Seite, die dem Ganzen einen Sinn und einen Hintergrund geben kann, ist z.B. folgende:
www.euclideanspace.com
(speziell hier, die Navigation auf der Seite ist etwas missglückt)
Keine Kommentare:
Kommentar veröffentlichen