具有末端执行器方向的逆运动学?

3
我正试图实现一个逆运动学求解器,但这次需要考虑末端执行器的方向。当仅需要位置时,我已经成功了。
我了解到,在这种情况下,可以构建如下雅可比矩阵,其中w_i是全局空间中的第i个旋转轴,p_i是第i个轴到目标位置的向量。 enter image description here 问题在于我必须计算下面方程中的x_dot。

enter image description here

当x_dot只考虑位置而不考虑方向时,这很简单。但现在x_dot需要6个输入(位置、方向),我不知道应该如何处理方向部分。我一直在使用欧拉角来表示程序中的方向。
我目前的想法是将当前末端执行器的偏航角、俯仰角和翻滚角与目标的偏航角、俯仰角和翻滚角相减,并将每个结果除以100。但这似乎有点复杂。有没有更好的方法来解决这个问题?任何想法都将不胜感激!

我正在使用迭代的CCD进行IK,它看起来像这样:逆向运动学的CCD算法工作原理。但是,如果你的运动学相当受限,则必须为执行器和轴添加优先级。是的,这也可用于6自由度端点。 - Spektre
无论如何,如果您将欧拉角的方向转换为3D向量,则更适合进行点积。 - Spektre
你可以继续使用欧拉角。但这会使你的生活比必要的更加复杂。像Spektre建议的那样使用向量。然后,找到正向规则,求导,就可以得到Jacobian矩阵的条目。 - Nico Schertler
@Nich Schertler,我真的不明白Spektre先生的意思...您能再具体一些吗?在找到代表目标和当前末端执行器的偏航、俯仰和翻滚的两个向量之后,我该怎么做呢? - Peter
1个回答

1
您需要将末端执行器的方向表示为一个3x3的旋转矩阵。您可以计算当前关节向量(Theta)处的末端执行器方向,然后通过向每个关节向量元素(在您的情况下为6个关节)添加一个小增量来计算。在简单的情况下,如果您只是想知道每个小关节变化带来的末端位置变化,您可以计算X、Y和Z位置的变化,这是在theta和每个扰动的theta处进行的简单向量减法。要对角度做同样的事情,您需要找到旋转矩阵R,该矩阵将3x3@Theta(A)转换为3x3@ThetaPrime(B)。
因为A*R=B
AInv*A*R=AInv*B
AInve*A = Identity
R=AInv*B
从R中,您可以提取delta roll,pitch,yaw欧拉角。公式如下。

https://pdfs.semanticscholar.org/6681/37fa4b875d890f446e689eea1e334bcf6bf6.pdf

Theta 值是每个 theta 改变所引起的偏航、俯仰和滚转的变化。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接