Animation 二维逆运动学实现
我试图在2D手臂上实现反向运动学(由三根带关节的杆组成)。我能够将最低的手臂旋转到所需的位置。现在,我有一些问题:Animation 二维逆运动学实现,animation,rotation,robotics,inverse-kinematics,Animation,Rotation,Robotics,Inverse Kinematics,我试图在2D手臂上实现反向运动学(由三根带关节的杆组成)。我能够将最低的手臂旋转到所需的位置。现在,我有一些问题: 如何使上臂与第三个手臂一起移动,使手臂的端点达到所需的点。我是否需要使用这两个旋转矩阵,如果是,有人能给我一些例子或帮助,还有其他可能的;在没有旋转矩阵的情况下,如何做到这一点 最低的手臂只朝一个方向移动。我用谷歌搜索了一下,他们说两个向量的叉积给出了手臂的方向,但这是3D的。我用二维向量和两个二维向量的叉积得到一个标量。那么,我怎样才能确定它的方向呢 请各位帮忙,我们将不胜感激
维克拉姆我会尝试一下,但既然我的机器人技术已经有二十年的历史了,那就不要犹豫了 按照我的理解,每个关节都是由它自己的旋转矩阵来描述的,相对于它当前的位置和方向来定义。然后将旋转矩阵组合在一起,计算整个手臂端点的坐标 这完全达到了您想要的效果:您只能移动一个关节(更改其方向),而所有其他关节都会自动跟随 在这里你不会有太多机会绕过矩阵-事实上,如果你使用齐次坐标,所有的联合计算(旋转和平移)都可以用矩阵乘法建模。这样做的好处是,整个手臂位置可以用一个矩阵(加上手臂的原点)来描述 使用此变换矩阵,您可以解决运动学逆问题:由于变换矩阵的元素将取决于关节的角度,因此您可以将整个计算“端点=起点x变换”视为一个方程组,并且起点和终点已知,你可以通过求解这个系统来确定未知的角度。这里的困难在于方程可能不可解,或者存在多个解
不过,我不太明白你的第二个问题——你在找什么?在机器人学中,我们通常使用DH参数进行正向和反向运动学。有一个很好的介绍。DH(Denavit Hartenberg)符号是解决方案的一部分。它可以帮助您收集一组简洁的值来描述机器人的力学特性,例如连杆长度和关节类型 从那里可以更容易地计算正向运动学。首先,您必须了解如何将坐标系从一个位置转换到另一个坐标系。例如,给定您的机器人(或其DH表),您必须应用于一个坐标系(例如世界)的旋转和平移集是什么,才能知道机器人手腕坐标系中点(或向量)的位置 您可能已经知道,齐次变换矩阵对于此类变换非常有用。它们是封装旋转和平移的4x4矩阵。这些矩阵的另一个非常有用的特性是,如果有两个坐标系通过旋转和平移链接和定义,如果将两个矩阵相乘,则只需将变换目标乘以该乘法的乘积 因此,DH表将帮助您构建该矩阵 反向运动学稍微复杂一些,这取决于您的应用程序。对于同一个问题有多个解决方案会导致复杂性。自由度的数量越多,解决方案的数量就越多 想想你的手臂。捏一下你周围的固体。您可以将手臂移动到空间中的多个位置,并且仍然保持挤压向量不变。解决运动学逆问题还需要决定选择哪种解决方案
T
,这样您就可以编写类似t1*t2*t3
的内容来计算第三个链接的位置和方向
从gameobjects.vector2将vector2导入为V
从matrix33导入matrix33作为T
从数学输入sin,cos,atan2,pi
随机输入
该库没有二维转换,因此您必须自己编写matrix33
。它的界面就像gameobjects.matrix44
为从一个关节到下一个关节的变换定义正向运动学函数。我们假设关节旋转角度
,然后进行固定变换关节
:
def fk_关节(关节,角度):返回T旋转(角度)*关节
工具的变换是tool==fk(关节,q)
其中joints
是固定变换,q
是关节角度:
def fk(关节,q):
prev=T.identity()
对于i,枚举中的关节(关节):
prev=prev*fk_关节(关节,q[i])
返回上一个
如果臂的底部有偏移,则更换T.identity()
transformation
OP通过循环坐标下降解决位置的IK问题。其思想是通过一次调整一个关节变量,将工具移近目标位置。假设q
是关节的角度,prev
是关节底部的变换。关节应按照指向工具和目标位置的向量之间的角度旋转:
def ccd_步骤(q、上一步、工具、目标):
A.
>>> ccd_demo(3, 7)
i Error
0 1.671521e-03
1 8.849190e-05
2 4.704854e-06
3 2.500868e-07
4 1.329354e-08
5 7.066271e-10
6 3.756145e-11
>>> ccd_demo(20, 7)
i Error
0 1.504538e-01
1 1.189107e-04
2 8.508951e-08
3 6.089372e-11
4 4.485040e-14
5 2.601336e-15
6 2.504777e-15