6

我正在尝试对任意多个链接的串行链进行逆运动学。

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

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

在哪里:

v[j]是关节 j 的旋转轴的单位向量

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

p[j]是关节 j 的位置(在世界坐标中?)

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

4

2 回答 2

8

这个问题很老,但无论如何我都会回答,因为这是我想过但从未真正得到实施的事情。

没有约束的旋转接头称为球接头或球形接头;他们有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

的长度dq3 * 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

于 2010-12-06T09:13:53.220 回答
3

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

J ij = df i /dθ j

是您的操纵器的雅可比行列式。反转它会给你关于速度的逆运动学。但它仍然很有用,如果你想知道每个关节必须移动多远,如果你想在任何方向上移动你的末端执行器少量 Δx(因为在位置级别,这实际上是一个线性化): Δθ =J -1 Δx
希望这会有所帮助。

于 2015-06-03T23:15:08.073 回答