紧接着上一篇三连杆机械臂正运动学,今天我们聊一聊逆运动学的知识。机械臂逆运动学的问题描述是:已知工具坐标系相对于工作台坐标系的期望位置和姿态,如何计算一系列满足期望要求的关节角?
为求出要求的关节角以放置相对于工作台坐标系{S}的工具坐标系{T},可将这个问题分为两部分:
首先,进行坐标变换求出相对于基坐标系{B}的腕部坐标系{W};
然后应用逆运动学求解关节角。
求解机械臂运动学方程是一个非线性问题。已知N0T,试图求出θ1,…,θN。同任何非线性方程组一样,我们必须考虑其解的存在性、多重解性以及求解方法。
一、机械臂工作空间
解是否存在的问题完全取决于机械臂的工作空间。
简单地说,工作空间是机械臂末端执行器所能达到的范围。若解存在,则目标点必须在工作空间内。有时下面两种工作空间的定义也是很有用的:灵巧工作空间指机器人的末端执行器能够从各个方向到达的空间区域,也就是说,机器人末端执行器可以从任意方向到达灵巧工作空间的每一个点。可达工作空间是机器人至少从一个方向上有一个方位可以达到的空间。显然,灵巧工作空间是可达工作空间的子集。
现在讨论平面两连杆机械臂的工作空间。如果l1=l2,则可达工作空间是半径为2l1的圆,而灵巧工作空间仅是单独的一点,即原点。如果l1≠l2,则不存在灵巧工作空间,而可达工作空间为一外径为l1+l2、内径为|l1-l2|的圆环。在可达工作空间内部,末端执行器有两种可能的方位,在工作空间的边界上只有一种可能的方位。
以上讨论的情况是假设所有关节能旋转360°,这在实际机构中很少见。当关节旋转角度不能达到360°时,显然工作空间的范围或可能的姿态的数目相应减小。
如果腕部坐标系的期望位姿在工作空间内,那么至少存在一个解。
在求解运动学方程时可能遇到的另一个问题就是多重解问題。一个具有3个旋转关节的平面机械臂,由于从任何方位均可到达工作空间内的任何位置,因此在平面中有较大的灵巧工作空间。下图为在某一位姿下特有末端执行器的三连杆平面机械臂。虚线表示第二个可能的位形,在这个位形下,末端操作器的可达位姿与第一个位形相同。
因为系统最终只能选择一个解,因此机械臂的多重解现象会产生一些问题。解的选择标准通常是取“最短行程”解,也就是使得毎一个运动关节的移动量最小。例如,下图中,如果机械臂处于点A,我们希望它移动到点B,在没有障碍的情况下,可选择图中上部虚线所示的位形。利用算法能够选择关节空间内的最短行程解。
但是,“最短行程”解可能有几种确定方式。例如,典型的机器人有3个大连杆,3个小连杆,姿态连杆靠近末端执行器。这样,在计算“最短行程”解时需要加权,使得这种选择侧重于移动小连杆而不是移动大连杆。在存在障碍的情况下,“最短行程”解可能发生碰撞,这时只能选择“较长行程”解——为此,一般我们需要计算全部可能的解。这样,在下图中,障碍的存在意味着需要按照下方虚线所示的位形才能到达B点。
二、求解逆运动学方程
与线性方程组不同,非线性方程组没有通用的求解算法。我们把机械臂的全部求解方法分成两大类:封闭解和数值解法。由于数值解法的迭代性质,它一般比相应的封闭解法的求解速度慢得多。大多数情况下,我们并不喜欢用数值解法求解运动学问题。所以之后主要讨论封闭解法。
“封闭形式”意指基于解析形式的解法,或者指对不高于四次的多项式不用送代便可完全求解。封闭解的求解方法又可分为两类:代数法和几何法。它们的区别又不那么明显:任何几何方法中都引入了代数描述,因此这两种方法是相似的。这两种方法的区别仅是求解过程的不同。
为了介绍运动学方程的求解方法,这里用两种不同方法对一个简单的平面三连杆机械臂进行求解。
1.代数解法
大家还记得它的连杆参数以及运动学方程吧。连杆参数:
运动学方程:
由于我们研究的是平面机械臂,因此通过确定三个量x,y和ϕ就能确定目标点的位姿,其中ϕ是连杆3在平面内的方位角(相对于+x轴)。因此最好给出WBT以确定目标点的位置,假定这个变换矩阵如下
令两式相等,可以求得四个非线性方程,进而求出θ1、θ2和θ3:
现在用代数方法求解方程(1)~(4)。将式(3)和(4)同时平方,然后相加,得到
由式(5)求解c2,得到:
上式有解的条件是右边的值必须在-1和1之间。在这个解法中,这个约束条件可用来检査解是否存在。如果约束条件不满足,则机械臂与目标点的距离太远。
假定目标点在工作空间内,s2的表达式为
最后,应用2幅角反正切公式计算,得θ2
式(7)是多解的,可选择正解或负解。在确定θ2时,应用2幅角反正切公式而不是反正切函数以确保得出所有的解,且所求的角度是在适当的象限里。
求出了θ2,可以根据式(3)和(4)求出θ1。将式(3)和(4)写成如下形式
式中
引入变量r和γ进行变量代换,其中
则
式(8)和(9)可以写成
因此
利用2幅角反正切公式,得
注意,θ2符号的选取将导致k2符号的变化,因此影响到θ1。应用这种变换求解的方法经常出现在求解运动学问題中,即式(3)或(4)的求解方法。同时注意,如果x=y=0,则式(10)不确定,此时θ1可取任意值。
最后,由式(1)和(2)能够求出θ1,θ2,θ3的和:
由于θ1和θ2已知,从而可以解出θ3。这种两个或两个以上连杆在平面内运动的机械臂是比较典型的问题,用代数方法求解运动学方程是求解机械臂的基本方法之一,在求解方程时,解的形式已经确定。
2.几何解
在几何方法中,为求出机械臂的解,须将机械臂的空间几何参数分解成为平面几何参数,然后应用平面几何方法可以求出关节角度。用这种方法在求解许多机械臂时(特别是当α1=0或±90°时)是相当容易的。对于平面三连杆机械臂来说,由于机械臂是平面的,因此我们可以利用平面几何关系直接求解。
图中展示出了由l1和l2组成的三角形及连接坐标系{0}的原点和坐标系{3}的原点的连线。图中虚线表示该三角形的另一种可能情况,同样能够达到坐标系{3}的位置。对于实线表示的三角形,利用余弦定理求解θ2:
为使该三角形成立,到目标点的距离√(x2+y2 )必须小于或等于两个连杆的长度之和l1+l2,可对上述条件进行计算校核来验证该解是否存在。当目标点超出机械臂的运动范围时,这个条件不能满足。假设解存在,那么由该方程所解得的θ2应在0~-180°范围内,因为只有这些值能够使图中的三角形成立。另一个可能的解(由虚线所示的三角形)可以通过对称关系θ2‘=-θ2得到。
为求解θ1,需要引入图中角ψ和β角的表达式。首先,β可以位于任意象限,由x和y的符号决定。为此,应用2幅角反正切公式:
这里求反余弦,使0≤ψ≤180°。利用几何法求解时,上述关系是经常要用到的,因此必须在变量的有效范围内应用这些公式才能保证几何关系成立。那么有
式中,当θ2<0时,θ1取“+”号;当θ2>0时,θ1取“-”号。
平面内的角度是可以相加的,因此三个连杆的角度之和即为最后一个连杆的姿态:
由上式求出θ3便得到这个机械臂的全部解。
3.通过化简为多项式的代数解法
超越方程往往很难求解,即使只有一个变量(如θ),因为它一般常以sinθ和cosθ的形式出现。可进行下列变换,用单一变量u以来表示
这是在求解运动学方程中经常用到的一种很重要的几何变换方法。这个变换是把超越方程变换成关于u的多项式方程。
三、结语
以上就是机器人运动学的全部基础知识。机器人运动学广泛应用于各种机器人软硬件之中,ROS Moveit, Gazebo中功能的实现依赖于机器人运动学,MATLAB组件Robotic Toolbox中kine()、ikine()函数实现了机器人运动学、逆运动学功能,更广泛的机器人运动学应用还需要各位读者去发现。