Inverse Kinematik: die Berechnung der Jacobi -
Ich versuche zu tun, inverse Kinematik, die für eine serielle Kette von beliebig vielen Gliedern.
In den folgenden Papier, ich habe gefunden ein Beispiel für die Berechnung der Jacobi-matrix.
Entry (i, j) = v[j] * (s[i] - p[j])
wo:
v[j]
ist der Einheitsvektor der Achse der
rotation für joint j
s[i]
ist die position (int Welt
Koords?) der gemeinsame ich
p[j]
ist die position (in Welt
Koords?) der gemeinsame j
Das Papier sagt, dass dies funktioniert, wenn j
ist ein Dreh-Gelenk mit einem einzigen Freiheitsgrad. Aber meine Rotations-Gelenke haben keine Einschränkungen in Ihrer rotation. Welche Formel muss ich dann wollen? (Oder bin ich vielleicht Missverständnisse den Begriff "Freiheitsgrad"?)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Frage ist alt, aber ich Antworte trotzdem, denn es ist etwas, was ich dachte, aber noch nie wirklich gekommen, um zu implementieren.
Rotations-Gelenke mit keine Einschränkungen genannt werden Kugelgelenke oder sphärische Gelenke; Sie haben 3 Freiheitsgrade. Sie können die Formel im tutorial für kugelige Gelenke auch, wenn Sie parametrisieren jedes Kugelgelenk in Bezug auf 3 rotatorische (revolutionieren) die Gelenke von einem Grad der Freiheit jedes.
Beispiel: Lassen Sie
N
werden die Anzahl von sphärischen Gelenken. Angenommen, jedes Gelenk hat eine lokale transformationT_local[i]
- und eine-Welt-transformationLassen
R_world[i][k]
,k = 0, 1, 2
, werden die k-th Spalte der rotationsmatrix vonT_world[i]
. Definieren Sie die3 * N
gemeinsamen Achsen alsBerechnen Sie die Jacobi -
J
für einige end-Effektors[i]
mit Hilfe der Formel aus dem Tutorium. Alle Koordinaten sind in der Welt Rahmen.Verwenden zum Beispiel die pseudo-inverse Methode gibt eine Verschiebung
dq
bewegt den Endeffektor in eine bestimmte Richtungdx
.Die Länge der
dq
ist3 * N
. Definierenfür
j = 0, 1, ..., N-1
, woR_x
,R_y
,R_z
sind die Transformationsmatrizen für die rotation um diex-
,y-
, undz
-Achsen.Aktualisieren der lokalen Transformationen:
und wiederholen Sie von oben zu verschieben, den end-Effektor in andere Richtungen
dx
.Lassen Sie mich schlage vor, einen einfacheren Ansatz zu Jacobians in den Kontext von beliebig vielen DOFs: Grundsätzlich gilt, dass die Jacobi erzählt Sie, wie weit jedes Gelenk bewegt, wenn Sie die Position der end-Effektor-Rahmen in einige willkürlich gewählte Richtung. Sei f(θ) werden die vorwärts-Kinematik, wobei θ=[θ1,...,θn] sind die Gelenke. Dann erhalten Sie die Jacobi-durch die Differenzierung der vorwärts-Kinematik mit Bezug auf die gemeinsame Variablen:
Jij = dfi/dθj
ist Ihr manipulator ist Jacobi. Invertierender es würde geben Sie die inverse Kinematik mit Bezug auf Geschwindigkeiten. Es kann immer noch nützlich sein, obwohl, wenn Sie wissen möchten, wie weit jedes Gelenk bewegen, wenn Sie verschieben möchten Ihr Endeffektor durch einige kleine Betrag Δx in jede Richtung (weil auf der position Ebene, dies würde effektiv eine Linearisierung):
Δθ=J-1 - Δx
Hoffe, dass dies hilft.