Nic*_*ner 6 graphics inverse-kinematics
我正在尝试为任意多个链接的串行链做逆运动学.
在下面的文章中,我找到了一个如何计算雅可比矩阵的例子.
Entry (i, j) = v[j] * (s[i] - p[j])
Run Code Online (Sandbox Code Playgroud)
哪里:
v[j]
是关节j的旋转轴的单位矢量
s[i]
是关节i的位置(int world coords?)
p[j]
关节j的位置(在世界坐标?中)
该论文称,如果j
是具有单一自由度的旋转关节,则可行.但是我的旋转关节对它们的旋转没有限制.那么我想要什么配方?(或者我可能误解了"自由度"一词?)
这个问题已经过时了,但无论如何我都会回答,因为这是我一直在考虑的事情,但从未真正实现过.
没有约束的旋转接头称为球形接头或球形接头; 他们有3个自由度.如果根据一个自由度的3个旋转(旋转)关节参数化每个球形关节,也可以在教程中使用球形关节的公式.
例如:N
设为球形关节的数量.假设每个联合都有局部转换T_local[i]
和世界转换
T_world[i] = T_local[0] * ... * T_local[i]
Run Code Online (Sandbox Code Playgroud)
设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]
Run Code Online (Sandbox Code Playgroud)
使用教程的公式计算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]]
Run Code Online (Sandbox Code Playgroud)
对j = 0, 1, ..., N-1
,其中R_x
,R_y
,R_z
是用于围绕旋转变换矩阵x-
,y-
和z
-axes.
更新本地转换:
T_local[j] := T_local[j] * R_dq[j]
Run Code Online (Sandbox Code Playgroud)
并从顶部重复以将末端执行器向其他方向移动dx
.