Diese Frage ist alt, aber ich werde trotzdem antworten, da es etwas ist, über das ich nachgedacht habe, aber nie wirklich umgesetzt habe.
Drehgelenke ohne Einschränkungen werden als Kugelgelenke oder Kugelgelenke bezeichnet; Sie haben 3 Freiheitsgrade. Sie können die Formel auch im Tutorial für sphärische Gelenke verwenden, wenn Sie jedes sphärische Gelenk in 3 Drehgelenken mit jeweils einem Freiheitsgrad parametrisieren.
Zum Beispiel: Lassen Sie N
die Anzahl der Kugelgelenke sein. Angenommen, jedes Gelenk eine lokale Transformation hat T_local[i]
und eine globale Transformation
T_world[i] = T_local[0] * ... * T_local[i]
Lassen R_world[i][k]
, k = 0, 1, 2
kann die k- th Spalte der Rotationsmatrix von T_world[i]
. Definieren die 3 * N
Gelenkachsen als
v[3 * j + 0] = R_world[i][0]
v[3 * j + 1] = R_world[i][1]
v[3 * j + 2] = R_world[i][2]
Compute die Jacobi J
für einige Endeffektor s[i]
, die Formel des Lernprogramms verwendet wird. Alle Koordinaten sind im Weltrahmen.
Wenn Sie zum Beispiel die pseudoinverse Methode verwenden, ergibt sich eine Verschiebung dq
, die den Endeffektor in eine bestimmte Richtung bewegt dx
.
Die Länge von dq
ist 3 * N
. Definieren
R_dq[j] =
R_x[dq[3 * j + 0]] *
R_y[dq[3 * j + 1]] *
R_z[dq[3 * j + 2]]
für j = 0, 1, ..., N-1
, wo R_x
, R_y
, R_z
sind die Transformationsmatrizen für eine Drehung um die x-
, y-
und z
-Achsen.
Aktualisieren Sie die lokalen Transformationen:
T_local[j] := T_local[j] * R_dq[j]
und von oben wiederholen dx
den Endeffektor in anderen Richtungen zu bewegen.