Inverse Kinematik Skript Node
Dieser Artikel beschreibt die Inverse Kinematik Node, die ab Version 2026.1 in Templates, skriptbaren Geräten und Pipelines eingesetzt werden kann, um die Gelenke eines Rig-basiertes Geräts (z.B. ein Kran oder Bagger) so zu konfigurieren, dass eine gewünschte Zielpose erreicht wird.
Zusammenfassung
Die Inverse Kinematik (kurz: IK) Node berechnet Gelenkwerte (Dreh- und prismatische Werte) für ein beliebiges Rig, sodass ein gewähltes Endeffektor-Gelenk die angegebene Ziel-Pose erreicht. Der Knoten liest die initialen Gelenkwerte des Endeffektors und aller Vorgänger aus der Simulation und liefert zwei Dictionaries mit den gelösten Gelenkwerten. Intern läuft ein numerischer Algorithmus, welcher iterativ versucht, alle Gelenkwerte so anzupassen, dass der gewählte Endeffektor sich der gewünschten Pose annähert.
Die Node bewegt keine Gelenke und hat auch sonst keine Effekte. Sie berechnet lediglich neue Werte für alle relevanten Gelenke und gibt diese aus.
Eingaben
-
Endeffektor (
Rig-Gelenk) — das Gelenk, dessen effektive Pose an die Ziel-Pose gebracht werden soll. -
Ziel (
Lokale Pose) — Zielpose (Position + Rotation) für den Endeffektor. -
Ursprungsgelenk (optional,
Rig-Gelenk) — falls gesetzt, wird die zu lösende Kette bis zu diesem Gelenk eingeschränkt; muss ein Vorgänger des Endeffektors sein. -
Zeitpunkt (optional,
Zeitpunkt) — Zeitpunkt für das Auslesen der initialen Gelenkwerte. -
Initiale Prismengelenk-Werte (
Rig-Gelenk -> Länge (Verzeichnis), optional) — Anfangswerte für prismatische Gelenke (überschreibt falls vorhanden den aktuellen Zustand). Nicht alle Gelenke müssen vertreten sein, kann auch ganz weggelassen werden. -
Initiale Drehgelenk-Werte (
Rig-Gelenk -> Winkel (Verzeichnis), optional) — Anfangswerte für Drehgelenke (siehe oben). -
Iterationen (
Ganzzahl) — Anzahl Iterationen des Solvers. Mehr Iterationen führen zu einer längeren Berechnungszeit, erzeugen aber ein genaueres Ergebnis. Komplexe Rigs mit vielen Gelenken erfordern meist mehr Iterationen für ein equivalentes Ergebnis als einfache Rigs. -
Orientierungsgewicht (0-1,
Dezimalzahl) — Gewicht von Rotationsfehler gegenüber Positionsfehler im quadratischen Fehlerterm. Der Algorithmus versucht, sowohl die gewünschte Position als auch Rotation der Zielpose zu erreichen. Wenn nicht beides gleichzeitig möglich ist, wird der kombinierte Fehlerwert minimiert, wodurch weder Position noch Rotation genau erreicht werden. Da eine genaue Position meist wichtiger ist als eine genaue Orientierung, kann der Rotations-Teil des Fehlers mithilfe dieser Eingabe gewichtet werden. Der Standardwert hierfür ist sehr klein, was für die meisten Anwendungsfälle korrekt ist. Ein Wert von 0 führt dazu, dass der Algorithmus die Orientierung komplett ignoriert und nur die Position gelöst wird.
Ausgaben
-
Prismengelenk-Werte (
Rig-Gelenk -> Länge (Verzeichnis)) — berechnete Werte für Prismengelenke. -
Drehgelenk-Werte (
Rig-Gelenk -> Winkel (Verzeichnis)) — berechnete Werte für Drehgelenke.
Die Ausgänge sind Verzeichnisse, die alle Gelenke der gelösten Kette auf die resultierenden Werte abbilden. Wenn alle Gelenke zu diesen Werten bewegt werden, sollte der Endeffektor die gewünschte Pose einnehmen (sofern erreichbar).
Hinweise zum Algorithmus
Die Node verwendet einen Jacobian-Damped-Least-Squares-Solver (DLS) mit fixer Dämpfung von 0,1 und maximalem Schritt-Delta von 0,1.
Als generalistischer, numerischer Ansatz kann der Algorithmus teilweise suboptimale Ergebnisse liefern (Stichwort lokale Minima der Fehlerfunktion) und ist dadurch, vor Allem bei komplexen Rigs, nicht uneingeschränkt verlässlich.
Die statisch definierten Limits der Gelenke werden eingehalten. Andere Einschränkungen unterstützt der Algorithmus allerdings nicht. Somit kann es zum Beispiel dazu kommen, dass in der von der Node berechneten Lösung Teile des Gerätes mit sich selbst oder mit anderen Objekten kollidieren.
Es werden nur Ziel-Zustände für alle relevanten Gelenke berechnet, nicht jedoch wie genau diese sich bewegen sollten. Auch wenn es in der berechneten Lösung nicht zu Kollisionen kommt, kann es daher während der Bewegung der Gelenke trotzdem dazu kommen. Weiterhin kann es bei Drehgelenken beispielsweise dazu kommen, dass als Lösung bei einem Initialwert von 15° ein Zielwert von 345° berechnet wird. Insbesondere bei einem nicht-limitierten Drehgelenk sollte beim Planen des Bewegungsprozesses darauf geachtet werden, dass dieses sich um -30° dreht und nicht um +330°.
Tipps zur Nutzung
Überschreiben der initialen Gelenkwerte
Wie oben erwähnt, kann der Algorithmus suboptimale Ergebnisse liefern. Ein Beispiel hierfür ist dieses Modell einer Betonpumpe:
In der Ruheposition ist der Ausleger des Geräts „gefaltet“. Um ihn an ein bestimmtes Ziel zu bringen, bewegt der Algorithmus jedes einzelne Gelenk nur so weit, dass sich der Endeffektor dem Ziel nähert. Dies führt hier dazu, dass sich der Ausleger nur teilweise entfaltet, wodurch er mit sich selbst kollidiert:
Um diesen Effekt zu vermeiden, kann man den Ausgangspunkt des Algorithmus überschreiben. Je näher die Initialwerte der einzelnen Gelenke am optimalen Ergebnis liegen, desto besser funktioniert die inverse Kinematik. Wird beispielsweise über die Initiale Drehgelenk-Werte-Eingabe für jedes Gelenk im Ausleger ein Wert von 180° übergeben, beginnt der Algorithmus in einem Zustand, in dem der Ausleger bereits voll entfaltet ist und erreicht dieses Ergebnis:
Dynamische Limitationen
Inverse Kinematik kann beispielsweise dazu eingesetzt werden, einen Kran wie diesen zu bewegen:
Hierbei ist der Haken mit mehreren unsichtbaren Gelenken versehen, damit er gedreht und in der Höhe verschoben werden kann.
Aufgrund von Gravitation sollte der Haken immer vertikal nach unten hängen. Dies kann vom IK-Algorithmus aber nicht berücksichtigt werden, da dieser nur die statischen Gelenk-Limitationen auslesen kann. Somit wird er eine Lösung finden, bei der der Haken zwar an der gewünschten Position platziert wird, dabei aber physikalisch unplausibel schräg herabhängt:
Um diese Problematik zu lösen, hilft es, sich die Funktionsweise des Algorithmus genauer anzusehen: Es werden schrittweise alle Gelenke dem Ziel entgegen bewegt. Nach jedem Schritt werden die neuen Werte auf die statischen Limits der Gelenke begrenzt. Den Algorithmus einmal anzuwenden, führt somit zum selben Ergebnis, wie wenn er zweimal mit jeweils der Hälfte der Iterationen ausgeführt wird:
Dazwischen können nun weitere, dynamische Limitationen auf die errechneten Gelenkwerte angewendet werden. Die nächste Iteration des Algorithmus wird dann damit genau so weiter arbeiten wie mit den eingebauten statischen Limitationen.
Im Fall des Autokrans ist die dynamische Limitation die folgende: Der Haken muss (im Verhältnis zum Boden) genau vertikal hängen. Das bedeutet, dass der Winkel zwischen Ausleger und Haken der selbe sein muss, wie der Winkel zwischen Boden und Ausleger. Dies kann nun in Zwischenschritten immer wieder angewendet werden, indem der Wert für das Haken-Gelenk manuell überschrieben wird:
Hinweis: Die Inverse Kinematik Node n-mal mit m Iterationen aufzurufen erzeugt zwar das selbe Ergebnis wie einmal mit n⋅m Iterationen, benötigt dafür aber eine höhere Berechnungszeit. Es sollte daher ein Gleichgewicht zwischen „manuellen“ und „automatischen“ Iterationen gesucht werden.
Befestigungspunkt als Ziel
Insbesondere bei Geräten wie einem Kran, der andere Objekte bewegen soll, ist es meistens relevant, dass ein bestimmter Befestigungspunkt eine gewisse globale Pose einnimmt. Dies kann folgendermaßen erreicht werden:
Dies kann natürlich nur funktionieren, wenn der Befestigungspunkt an einem Gelenk hängt.










