Gimbal-Lock & Quaternionen

Stell die drei Winkel ein. Die Aufhängung dreht sich, die Ringe bewegen sich, und die Anzeige gibt aus, wie viel von der dreiachsigen Bewegungsfreiheit noch übrig ist. Danach verändert das System Gieren und Rollen gleich- und gegensinnig. So erkennst du, welche der beiden Bewegungen keine Wirkung mehr zeigt.

Interaktive Simulation wird geladen...

Lektion

Die Theorie — Gimbal-Lock & Quaternionen

Eine kardanische Aufhängung besteht aus drei ineinanderliegenden Ringen, die sich jeweils frei um ihre eigene Achse drehen können. Drei Ringe, drei Winkel und jede gewünschte Ausrichtung. Das funktioniert so lange, bis zwei der Ringe zusammenfallen. Genau dieser Moment ist der Gimbal-Lock. Der äußere und der innere Ring teilen sich eine Ebene, weshalb ihre beiden Winkel dieselbe Aufgabe übernehmen. Dadurch wird eine komplette Drehrichtung unerreichbar, unabhängig davon, wie die Ringe eingestellt sind. Ein Quaternion ist die alternative Methode, eine Rotation zu beschreiben. Es verwendet vier Zahlen anstelle von dreien und besitzt keine Ringe, die blockieren könnten.

Was die einzelnen Symbole bedeuten

ψ, θ, φ
Gieren, Nicken und Rollen. Das sind die drei Ringwinkel, angewendet in dieser Reihenfolge um z, dann das neue y und schließlich das neue x.
q
Das Quaternion (w, x, y, z). Hierbei steht w = cos(α/2) für eine einzelne Drehung um α. Der Rest entspricht sin(α/2) multipliziert mit der Rotationsachse.
|cos θ|
Die verbleibende Freiheit. Sie entspricht dem Betrag der Determinante der Abbildung von den Ringänderungsraten auf die tatsächliche Körperdrehung. Der Wert ist 1, wenn die Ringe orthogonal stehen, und 0, wenn zwei parallel sind.

So liest du, was du siehst

Die Seite öffnet sich bei Gieren 30°, Nicken 60° und Rollen 20°. Die Quaternion-Zeile zeigt 0,8463, 0,0178, 0,5145, 0,1369. Die Zeile darunter verwandelt das in die eine Sache, die es wirklich ist: eine Einzeldrehung von 64,4° um eine Achse nahe y. Die Freiheit zeigt 50,0 %, was exakt cos 60° entspricht. Die beiden Testzeilen zeigen 5,2° und 19,3°. Beide bewegen sich noch, aber nicht mehr um denselben Betrag. Zieh das Nicken auf 90° und der erste der beiden Werte fällt auf 0,0°.

Setzt voraus
Dass die drei Drehungen in dieser Reihenfolge und um diese Achsen stattfinden. Wechselst du die Konvention zu z-y-z, verschiebt sich die Blockade zu einem mittleren Winkel von 0° statt 90°. Sie verschwindet jedoch nicht. Jedes System aus drei Winkeln besitzt irgendwo eine blockierte Konfiguration. Dies ist ein fundamentaler Satz über dreidimensionale Rotationen und kein Manko einer einzelnen Konvention.
Versagt, wenn
Es geht nicht kaputt, genau das ist der Punkt. Das Navigationssystem von Apollo hatte drei kardanische Ringe statt vier. Die Crew musste also um einen bestimmten Lagebereich herumsteuern statt mittendurch. Die Alternative wäre ein schwererer vierter Ring gewesen. Was hier scheitert, ist die Vorstellung, dass mehr Präzision hilft. Bei 90° ist der dritte Freiheitsgrad verschwunden und nicht bloß klein geworden. Da rettet dich auch keine noch so hohe Anzahl an Nachkommastellen beim Gieren oder Rollen.

Der Gimbal-Lock ist ein Abhang, auch wenn ihn alle als Klippe beschreiben 🖖

Zieh das Nicken aus der Waagerechten nach oben und beobachte die Zeile für die Freiheit. Sie entspricht |cos θ|: 86,6% bei 30°, 50,0% bei 60°, 17,4% bei 80° und 1,7% bei 89°. Mit dieser Zahl passiert bei 90° nichts Plötzliches. Das letzte Grad kostet fast nichts, da kaum noch etwas zu verlieren war. Eine Plattform, die bei 80° Nicken nachführt, erreicht für dieselbe Ringbewegung nur noch ein Sechstel der Drehung im Vergleich zur Waagerechten. Genau das ist der Teil, den das Wort „Blockade“ verbirgt. Dieser Wert ist der Betrag der Determinante jener Abbildung, die von den Ringgeschwindigkeiten zur tatsächlichen Drehung des Körpers führt. Er entspricht dem Drehwinkelvolumen pro Einheit an Ringbewegung. Der Wert ist also schon sehr klein, lange bevor die Ringe parallel stehen.

Dreh dich komplett im Kreis und die Quaternion behauptet, du hättest es nicht getan 🖖

Eine Quaternion führt cos(α/2) für eine Drehung um α mit, zählt also halbe Drehungen. Rotierst du um 360° um die z-Achse, zeigt es −1, 0, 0, 0 und nicht die anfänglichen 1, 0, 0, 0. Erst nach 720° ist es wieder am Ziel. Beides beschreibt dieselbe Ausrichtung, weil q und −q auf denselben Körper zeigen. Das Quaternion führt also über etwas Buch, das das Objekt selbst bereits vergessen hat. Dies ist kein Zufall der Notation. Bei der Interpolation muss das berücksichtigt werden. Die Regel des kürzesten Bogens wechselt das Vorzeichen, wenn zwei Quaternionen entgegengesetzt ausgerichtet sind. Ohne diese Vorschrift wählt eine halbsekündige Drehung den langen Weg außen herum.

Der lange Weg herum verläuft völlig fließend 🖖

Meistens wird der Interpolation von Euler-Winkeln die Schuld für wackelnde Animationen gegeben, was jedoch selten zutrifft. Von Gieren 79,9°, Nicken 85,5° und Rollen 153,5° bis Gieren 155,5°, Nicken 75,0° und Rollen −139,8° liegen die beiden Ausrichtungen 16,7° auseinander. Ein lineares Durchlaufen der drei Winkel legt dorthin einen Weg von 368,1° zurück. Das ist zweiundzwanzigmal so weit, bei einer Geschwindigkeit, die vom Anfang bis zum Ende um ein halbes Prozent variiert. Nichts daran wirkt während des Ablaufs visuell falsch. Bei über 4.000 zufälligen Paaren war der Euler-Pfad kein einziges Mal kürzer als die direkte Drehung. Im Durchschnitt betrug er das 1,7-Fache der Strecke.

Aufgabe vollständig gelöst

  1. Was bei 90° Nicken noch zu steuern bleibt 6 Schritte

    Setz das Nicken auf 90° und das Gieren auf 20°, das Rollen bleibt bei 0°. Zeig, dass die Addition von 10° beim Gieren und 10° beim Rollen den Körper exakt dort belässt, wo er war. Sag dann, wovon die Ausrichtung überhaupt noch abhängt.

    Öffne diese Aufgabe im Tool

    1. Die Rotation besteht aus drei Drehungen in dieser Reihenfolge: Gieren um z, dann Nicken um das neue y, dann Rollen um das neue x. Ausgeschrieben ist das R = R_z(ψ)·R_y(θ)·R_x(φ).

    2. Setz θ = 90°. Die mittlere Drehung befördert die x-Achse auf −z und die z-Achse auf x. Die erste und die letzte Drehung erfolgen nun also um dieselbe Linie im Raum. Was auch immer ψ anrichtet, kann φ wieder rückgängig machen.

    3. Damit fällt das Produkt zu einer einzigen Drehung zusammen, die von φ − ψ abhängt und von nichts sonst. Zwei verschiedene Paare mit gleicher Differenz ergeben dieselbe Ausrichtung, nicht nur eine ähnliche.

    4. Probier es aus. Startest du bei ψ = 20°, φ = 0°, beträgt die Differenz −20°. Wechselst du zu ψ = 30°, φ = 10°, liegt die Differenz immer noch bei −20°.

    5. Diese beiden Winkelsätze liegen also nicht nur nah beieinander. Sie stehen für exakt dieselbe Ausrichtung. Der Abstand zwischen ihnen ist null, weshalb sich die Winkelzeile überhaupt nicht bewegt.

    6. Zerlege nun stattdessen die Differenz. ψ = 30°, φ = −10° ergibt −40°, und der Körper schwingt um die vollen 20,0000°.

    Antwort

    Addierst du zu beiden Winkeln 10°, bleibt der Körper exakt dort, wo er war. Die beiden Ausrichtungen unterscheiden sich um 0,0000°, und beide entsprechen derselben einzelnen Drehung von 91,728° um die Achse (−0,1711; 0,9703; 0,1711). Addierst du zu einem Winkel und subtrahierst vom anderen, bewegt sich der Körper um die vollen 20,0000°. Was bei θ = +90° übrig bleibt, ist φ − ψ. Das ist eine einzige Zahl, wo vorher zwei waren. Bei θ = −90° ist es stattdessen φ + ψ. Der dritte Freiheitsgrad ist nicht einfach schwer zu erreichen, sondern hat aufgehört zu existieren. Keine noch so hohe Präzision bei ψ oder φ bringt ihn zurück.