这个问题很老,但无论如何我都会回答,因为这是我想过但从未真正得到实施的事情。
没有约束的旋转接头称为球接头或球形接头;他们有3个自由度。如果您根据每个具有一个自由度的 3 个旋转(旋转)关节参数化每个球形关节,您也可以将本教程中的公式用于球形关节。
例如:N设为球形关节的数量。假设每个关节都有一个局部变换T_local[i]和一个世界变换
T_world[i] = T_local[0] * ... * T_local[i]
令R_world[i][k], , 为 的旋转矩阵的第k = 0, 1, 2k列。将关节轴定义为T_world[i]3 * N
v[3 * j + 0] = R_world[i][0]
v[3 * j + 1] = R_world[i][1]
v[3 * j + 2] = R_world[i][2]
使用本教程的公式计算J一些末端执行器的雅可比行列式。s[i]所有坐标都在世界框架中。
使用例如伪逆方法给出了dq在给定方向上移动末端执行器的位移dx。
的长度dq为3 * N。定义
R_dq[j] =
R_x[dq[3 * j + 0]] *
R_y[dq[3 * j + 1]] *
R_z[dq[3 * j + 2]]
对于j = 0, 1, ..., N-1, 其中R_x, R_y,是关于, , 和R_z- 轴旋转的变换矩阵。x-y-z
更新本地转换:
T_local[j] := T_local[j] * R_dq[j]
并从顶部重复以将末端执行器向其他方向移动dx。