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

在下面的 , ,我找到了一个如何计算雅各布矩阵的示例。

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

在哪里:

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

s[i] 联合i的位置(int世界坐标?)是

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

该论文说,这有效 j 是具有单一自由度的旋转关节。但是我的旋转接头对它们的旋转没有约束。然后我想要什么公式? (或者我可能会误解“自由程度”一词?)

有帮助吗?

解决方案

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

没有约束的旋转接头称为球接头或球形接头。他们有3个自由度。如果您以3个自由度的3个旋转(Revolute)关节来对每个球形关节进行参数化,则可以在教程中使用该公式进行球形关节。

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

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

R_world[i][k], k = 0, 1, 2, ,成为K-Th 旋转矩阵的柱 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.

其他提示

让我在任意许多DOF的背景下对Jacobians提出一种更简单的方法:基本上,Jacobian告诉您,如果您将末端效应子框架移动到某个任意选择的方向,则每个关节移动了多远。令F(θ)为正向运动学,其中θ= [θ1,...,θn]是关节。然后,您可以通过区分联合变量的正向运动学来获得雅各布:

jIJ = DF一世/dθj

是您的操纵者的Jacobian。反转它将为您提供有关速度的反向运动学。但是,如果您想知道每个关节要移动多远,如果您想在任何方向上移动少量ΔX(因为在位置级别上,这实际上是线性化):Δθ,它仍然有用。 = j-1ΔX
希望这有帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top