这个问题很老,但无论如何我都会回答,因为这是我想过但从未真正得到实施的事情。
没有约束的旋转接头称为球接头或球形接头;他们有3个自由度。如果您根据每个具有一个自由度的 3 个旋转(旋转)关节参数化每个球形关节,您也可以将本教程中的公式用于球形关节。
例如:N
设为球形关节的数量。假设每个关节都有一个局部变换T_local[i]
和一个世界变换
T_world[i] = T_local[0] * ... * T_local[i]
令R_world[i][k]
, , 为 的旋转矩阵的第k = 0, 1, 2
k列。将关节轴定义为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
。