反向运动学:计算雅可比行列式

时间:2010-10-22 02:07:30

标签: graphics inverse-kinematics

我正在尝试为任意多个链接的串行链进行反向运动。

在下面的paper中,我找到了一个如何计算雅可比矩阵的例子。

Entry (i, j) = v[j] * (s[i] - p[j])

其中:

  

v[j]是轴的单位向量   联合j的旋转

     

s[i]是位置(int world   关节的coords?)

     

p[j]是位置(在世界上   联合j的coords?)

该论文称,如果j是具有单一自由度的旋转关节,则此方法有效。但是我的旋转关节对它们的旋转没有限制。那么我想要什么配方? (或者我可能误解了“自由度”一词?)

2 个答案:

答案 0 :(得分:8)

这个问题已经过时了,但无论如何我都会回答,因为这是我一直在考虑的事情,但从来没有真正实现过。

没有约束的旋转接头称为球形接头或球形接头;他们有3个自由度。如果根据一个自由度的3个旋转(旋转)关节参数化每个球形关节,也可以在教程中使用球形关节的公式。

例如:让N为球形关节的数量。假设每个关节都有一个局部变换T_local[i]和一个世界变换

T_world[i] = T_local[0] * ... * T_local[i]

R_world[i][k]k = 0, 1, 2成为T_world[i]的旋转矩阵的k- th 列。将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_xR_yR_z是关于x-y-和{的轮换转换矩阵{1}} - 轴

更新本地转换:

z

并从顶部重复以将末端效应器移向其他方向T_local[j] := T_local[j] * R_dq[j]

答案 1 :(得分:3)

让我在任意多个自由度的背景下建议一个更简单的雅可比人方法:基本上,雅各比派告诉你,如果你在一个任意选择的方向上移动末端执行器框架,每个关节移动多远。设f(θ)为正向运动学,其中θ= [θ1,...,θn]为关节。然后,您可以通过区分正向运动学与关节变量来获得雅可比行列式:

J ij = df i /dθ j

是你的操纵者雅各比派。反转它会给你关于速度的逆运动学。如果你想知道如果你想在任何方向上将你的末端效应器移动一些小的Δx,那么它仍然是有用的,如果你想知道每个关节必须移动多远(因为在位置水平上,这实际上是线性化): Δθ= j的 -1 ΔX
希望这会有所帮助。