我正在尝试为机器人手臂实现自己的逆运动学求解器。我的解决方案是一种标准的迭代方法,其中,在每个步骤中,我都会计算雅可比行列和拟逆雅可比行列,然后计算末端执行器与目标之间的欧几里得距离,然后根据这些结果计算下一个关节角度相对于末端执行器距离的梯度。

这实现了通往解决方案的合理,平滑的路径。但是,在阅读过程中,我了解到通常有多种解决方案,尤其是在有许多自由度的情况下。但是我实现的梯度下降解决方案只能达到一种解决方案。

所以我的问题如下:我可以写下完整的正向运动学方程,将其设置为所需的末端执行器位置,然后求解线性方程吗?还是有更好的方法?
使用梯度下降法实现的特定解决方案是否有趣?例如,是否可以保证机器人可以最快地找到解决方案?
是否存在梯度下降方法失败的情况?例如,是否有可能降到局部最小值?还是该函数是凸函数,因此具有单个全局最小值?


#1 楼


您必须分析计算所有IK解决方案。这基本上是通过简单的几何图形完成的。大多数机器人学教科书中都有关于操纵的部分,将对此进行详细说明。但是您可能还想查看ikfast库。
我不确定您的渐变体面解决方案是否具有任何特殊属性。但我认为,除某些特殊情况外,这可能是联合空间中最接近的解决方案。请注意,可能有理由选择其他IK解决方案。我对这篇文章的回答列出了一些您可能会感兴趣的指标:评估两个7自由度武器的相似度。 (但这可能取决于手臂的自由度和工作空间)。有关更多信息,请参见此线程:冗余机器人的几何反问题解决方案是否“连续”?


#2 楼

有更多的方法可以解决逆运动学方程。

如果您想继续使用基于伪逆的方法并且仍然获得1种以上的解决方案,则可以翻转关节角度1的符号(例如,如果它是puma型机器人手臂),最初的猜测,然后再次运行迭代求解器。关节角度3相同。您可能会遇到无法收敛的情况(例如,伸手不到,奇异点等)。

但是有一些方法可以分析所有角度。这些也应该比迭代方法更快。这些是基于几何学获得关节角度的公式并一次应用该公式而无需任何迭代的。

您可以在此处,此处和此处找到更多有关这些的信息。