王成志
(集美大学海洋装备与机械工程学院,福建 厦门 361021)
机构自由度分析是机构创新设计的首要前提。随着机构朝复杂空间多闭环方向发展,传统自由度计算公式已不通用[1-7],寻找自由度通用分析公式或方法又重新成为机构学研究的热点,近20年来不断有学者提出新方法、新公式[7-12]。其中一些借助李代数[13-14]、线性变换[15]、螺旋理论[2,6]等数学工具的方法,科学、严谨、系统且通用,但要列出给定位置运动约束方程并求秩[3],理论晦涩、过程复杂,难以快速计算,不利普遍推广。例如,螺旋理论法中,难以通过简单观察判断多数运动螺旋集及约束螺旋集的线性相关性并求出秩数,手工求解,即使辅以通用软件计算,计算过程依然繁杂,加上像螺旋理论这样的数学方法计算得到的自由度有的会随位型变化[6],需要多次计算才能判定其瞬时性。所以,将自由度分析计算过程计算机化、自动化具有重要意义。目前自由度自动计算的研究比较少,文献[16]提出用符号描述并联机构。另外,局部自由度在机构中普遍存在,机构自由度的正确分析计算有助于更详细分析机构的运动性质。目前多以经验观察判断局部自由度[17],文献[2,14]则分别提出了机构存在局部自由度的基于螺旋理论、李代数的分析方法,文献[18]则用杆组运动参数分析了杆组内存在的局部自由度,但这些理论方法只适用并联机构。
螺旋理论中的单位螺旋中含有的6个Plücker坐标可以表达机构的运动、约束,且螺旋集数学计算规范。本文基于该理论,利用Matlab编写了单环机构和多环并联机构的自由度自动分析计算程序,分析了机构中过约束的Matlab算法,提出了适用于包括单环、多环机构在内的平面、空间机构的局部自由度判断准则。
对于并联机构,文献[2]修正了传统的Grübler-Kutzbach公式(准则),给出了通用的机构自由度计算公式:
(1)
式中:n为机构中活动构件数目;g为运动副的数目;fi为第i个运动副的自由度;λ为机构的公共约束数(阶数d=6-λ);ν为冗余约束数;ξ为局部自由度数。
g和fi按输入运动副类型自动计算,而活动构件数为:n=g-1(单闭环);n=g-l+1(多闭环)。式中:l为分支数。此式仅适用于一个构件仅连接2个运动副时的情形。
显然,计算自由度的关键环节是计算机构的3个参数:λ、ν和ξ,可以通过螺旋理论根据机构运动副所含有的运动信息求出约束信息,从而求出该3个参数。
单自由度运动副的单位运动螺旋定义(Plücker坐标)为:
$=(s;s0)=(s;r×s+hs)=(l,m,n;P,Q,R)。
(2)
式中:s为螺旋轴线方向的单位矢量;l、m、n为s的3个方向余弦;s0为螺旋的对偶部矢量,s0=(P,Q,R);r=(x,y,z)是螺旋轴线上任意一点的位置矢量,x、y、z是该点的直角坐标值;h是节距;P、Q、R是对偶部矢量的3个分量。
可用不同节距代表不同的单自由度运动副:h=0是转动副R,h=∞是移动副P,h=Const(Const为不等于零的常数)是螺旋副H。
根据式(2),可以按“轴线及位置矢量”或“Plücker坐标”两种方式输入螺旋信息,程序界面如图1。
表1列出了常见运动副按“轴线及位置矢量”方式的输入参数。
表1 常用运动副输入参数及螺旋表示
其中,球副S和平面副E仅输入相互不平行的2条螺旋轴线矢量s1、s2(并不要求正交),然后程序自动求出与该2条轴线正交的第三条螺旋轴线s3。本程序已经解决了Matlab须先定义字符变量再使用的传统方法,可在图1界面中的螺旋轴线矢量、轴线上坐标点或Plücker坐标输入框中输入由任意字母和数字组合的字符变量,及由变量和“+、-、*、/”运算符号,甚至正弦、余弦等三角函数组成的简单表达式,真正做到基于字符变量的自由度计算机自动分析计算。
文献[2,6]等提倡尽量多的用0、1表达螺旋坐标元素,但如此输入会弱化运动螺旋模型中所蕴含的部分运动信息。为了正确自动分析局部自由度,输入参数时还要注意以下规则。
1)多环机构的分支中存在两S副及局部转动自由度。多环机构中,位置坐标都取各自球心,而用(1,0,0)、(0,1,0)和(0,0,1)的3条正交轴代表其等效转动轴;在单环机构中则要以两球心连线作为两S副各自的1条螺旋轴线,见表2中的(S…S)结构形式的sA1和sB1。
表2 单环机构中存在局部自由度的8种结构组合形式Tab.2 Eight kinds of configurations containing passivedegree of freedom in single loop mechanisms单环结构组成Compositions in Single Loop结构特点Features of Compositions1)2)3)4)ABsAsBS…SABsAsBR…SABsAsBC…SABsAsBR…R1111存在两R副轴线同轴(节距等于零)Axes of two R pairs are coaxial(pitch equal to ze-ro)$A1×$B1=0$A×$B1=0$A×$B=05)AsABsBhBhAH…H存在两H副轴线同轴且节距相等Axes of two H Pairs are coaxial and their pit-ches are equal to each other$A×$B=0且(and)hA=hBABP…PsAsBC…CC…PABsAsBABsAsB6)7)8)存在两P副的导路矢量相互平行Axes of two P pairs are parallel to each othersA×sB=0 说明Note:A、B等表示运动副上的点,下同Italicized capital letters A,B,etc.indicate the points on the kinematic pair,the same below
2)分支(含单环)中存在R副/C副,且其回转轴线确实指向同一分支中S副的球心,则存在局部转动自由度。故R副/C副螺旋轴线上的位置坐标取球副中心坐标,而S副中取1条螺旋轴线等于R副/C副的螺旋轴线,见表2中的(R…S)和(C…S)结构形式的sB1=sA;按“Plücker坐标”输入时,则球副有1螺旋与R副/C副的1螺旋相同。
3)对平面副E,若分支中同时存在其他运动副,并且该运动副含有与平面平行的P副,则该分支有局部移动自由度;若分支中同时存在其他运动副,且该运动副含有与该平面垂直的R副,则该分支有局部转动自由度。故前者要注意将E副中的移动导路矢量方向处理成与相关P副导路矢量方向平行;后者则要将E副含有的转动轴处理成与相关R副同轴。点、线接触的高副处理方式类似。例如,滚子推杆凸轮机构中高副等效于R、P副,其中的R副轴线要处理成与滚子转动副同轴。
此外,虽然螺旋系的相关性与坐标系选择无关[2],但若是对称并联机构,因运动螺旋需合并在一起分析,故若按分支局部坐标系输入参数,要给出局部坐标与全局坐标的转动关系,程序会在合并为动平台的运动螺旋集S前先进行螺旋坐标变换。总之,要计算局部自由度时,应输入更符合实际运动副运动状态的模型。1.2由Plücker坐标反求位置矢量及节距
假设坐标系原点向螺旋轴线所作垂线的垂足位置矢量为r=(rx,ry,rz),因两正交矢量数量积为零[19],有:
s·rT=0。
(3)
已知螺旋的Plücker坐标时,式(2)和式(3)组成的线性方程组有4个标量方程,4个变量rx、ry、rz和h,故可求出r(垂足点)和节距h。注意,反求得到的r将不同于原来的设定,故给“新建机构”界面设定好选择输入方式后不再改变。
设$ji为第j个分支中第i个运动副的运动螺旋,则分支j中所有运动螺旋所组成的螺旋集(所有螺旋相加,可含重复螺旋)就是该分支的运动螺旋集,写成矩阵:Sj=[$j1;$j2;…]。将机构所有分支的运动螺旋集合并,构成了机构运动螺旋集S。Sj和S都可能线性相关。
一个并联机构的一条分支串联链中,如有4个转动副轴线平行,则形成局部自由度[2]。但若同样由这4个轴线平行的转动副组成单环机构(这时是平面四连杆机构),其运动螺旋系肯定线性相关(单环机构的运动螺旋集必线性相关,否则是不能相互运动的桁架),此时机构自由度为1,而不存在局部自由度。所以,“局部运动螺旋系Sj线性相关则存在局部自由度”的准则只适用于多环机构,单环机构的判定条件要修正。这个例子也说明,如果将自由度(含局部自由度)≥1的单环机构作为多环并联机构的一个分支,则该分支必然是线性相关的,即该分支存在局部自由度。
另外,不同类型的多自由度运动副之间可以具有局部自由度,但是要将多自由度运动副等效为单自由度的运动副后,同类型的单自由度运动副之间才可能存在局部自由度。即,R副、P副和H副(包括等效复合副中的R副和P副,下同)相互之间不可能产生局部自由度,只有同样的R副之间、H副之间才可能产生转动局部自由度,同样的P副之间才可能产生移动局部自由度。螺旋副H理论上来说也是R、P复合副,但H副本身含有的位移信息及转动信息综合在了1个螺旋中,它们与其他P副的位移信息及其他R副的转动信息都不相同。或者说,H副不可能与其它类型的运动副形成移动或转动局部自由度,但不同位置的H副之间可能存在转动局部自由度。推论:多个(≥2)有相同节距的螺旋之间才存在局部自由度,不同节距螺旋之间不存在局部自由度。
1.4.1 多环机构
多环机构分支中存在局部自由度的充要条件:分支中存在多个(≥2)有相同节距的螺旋,且分支中的运动螺旋集线性相关。注意:
1)局部相对运动的两构件可以是邻近的两构件,也可以是分支中距离较远的两构件,即,这种“局部”涵盖到整个分支。
2)分支中局部自由度数:
ξj=size(Sj,1)-rank(Sj)。
(4)
其中:rank(Si)是Matlab求矩阵Si的秩数的函数;size(Si,1)是求Si行数的函数。
3)运动螺旋集线性相关就表明有相同节距的螺旋,这里增加该条件是为了便于观察。多环机构分支中线性相关的螺旋几何特征比较复杂,例如,2个转动螺旋共轴且等节距、2个移动副导路平行、3个以上转动轴平行等组成的螺旋系都是线性相关的。更多的几何条件可参考文献[2],可用式(4)求得ξj>0,则表示运动螺旋集线性相关。
1.4.2 单环机构
单环机构分支中存在局部自由度的充要条件:机构中存在两个有相同节距的螺旋,且各自P副的导路矢量相互平行,或各自非P副(h=Const或h=∞)螺旋同轴。注意:
1)若单环机构中一个运动副与多个运动副可能都满足相同的局部自由度存在条件,则满足相同条件的运动副中只有2个运动副产生同性质(相对转动或移动)的局部自由度。一般根据最小阻力定律判定局部自由度发生位置,本文规定该运动副仅与符合条件最近的运动副之间存在1个局部自由度。单环机构中可能存在多个不同性质,或者同性质但不同条件的局部自由度。
2)表2列出了单环机构中两运动副存在局部自由度的8种典型结构组合形式。
编程用到两个重要关系:两矢量叉乘等于0矢量时表示两矢量或两螺旋相互平行,而两螺旋的叉积(旋量积)等于0螺旋时表示两螺旋共线。两螺旋的叉积定义为:
(5)
1.5.1 公共约束数λ计算
1.5.2 冗余约束数ν计算
(6)
文献[2,17]给出的冗余约束数公式是
(7)
显然,式(6)和式(7)的内涵都是指与其他约束线性相关的冗余约束数,没有差别。两式也适用于单闭环机构,当然,ν是多分支并联而产生的,单闭环的ν为零。
若求出Sr中线性无关的一组集sr,再次求反螺旋,则得到二次反螺旋srr。对并联机构,srr表示动平台的运动可能性,对应矩阵的行数就是动平台的自由度;对单闭环或开环机构,srr代表末杆(拆架后的机架或开环的末杆)的运动螺旋,其行数为末杆的自由度数或机构阶数。
注意,若用null函数求得二次反螺旋srr=[ ],要根据末杆(动平台)是无约束的自由状态还是全约束不能动两种情况来调整srr,即:
式中:rref是Matlab的简化列梯形矩阵函数。
此外,对于分支含闭环的并联机构,如Delta机构[2,8,17],可以先分析分支闭环中假设为动平台的运动螺旋系srr,观察或用式(2)和式(3)组成的线性方程组求出对应的螺旋轴线矢量及轴线上特定点位置矢量,然后将机构中的分支闭环用等效运动副螺旋替换(若按“Plücker坐标”方式输入机构运动副信息时,分支闭环直接用相应srr等效替换即可),则可分析这类机构自由度。
用本程序分析了平面、空间、单环及多环等各类机构的自由度,计算结果完全正确,且绝大多数机构的计算效率非常高。以下举例说明判定机构局部自由度的方法及过程。
图1界面中的机构是麦弗逊转向悬架[19],不考虑车轮转动,该多环机构就是一个以转向节DBC为动平台的并联机构,三个分支分别为GEC(运动副类型分别为P、S、S)、AD(S、C)、FB(R、S)。在转向器齿条左右对称位置上建立如图1所示全局坐标系,则根据前面参数输入规则,C、E、B位置球副的2条特征回转轴线取简单的0、1元素,但A处球副的1条特征回转轴线要按表2的C…S结构形式输入,即各运动副的特征回转轴线方向分别为:
sG=(0,1,0);sE1=sC1=(1,0,0);sE2=sC2=(0,1,0);sA1=sD=(l,m,n);sA2=(1,0,0);
sB1=(0,0,1);sB2=(0,1,0);sF=(1,0,0);
输入上述螺旋轴线矢量方向及各运动副位置矢量,可求出3个分支各运动副的运动螺旋。
GEC分支:
AD分支:
FB分支:
故各分支运动螺旋集:
SGEC=($G;$E1;$E2;$E3;$C1;$C2;$C3);SAD=($A1;$A2;$A3;$D1;$D2);SFB=($F;$B1;$B2;$B3)。
这里Matlab直接用运动副坐标的字符变量计算,得出各运动螺旋及反螺旋,涉及的变量虽然多,但不计轴线矢量和位置矢量的输入时间,程序分析过程耗时约1.2 s,这是手工计算难以达到的。
RSSR空间转向梯形机构简图如图2所示。其中:A、D处为转动副,B、C处为球副。该机构有8个运动螺旋,按参数输入规则,得到两球副中各有一条运动螺旋分别为:
$B1=(Δx,Δy,Δz;yBΔz-zBΔy,zBΔx-xBΔz,xBΔy-yBΔx);
$C1=(Δx,Δy,Δz;yCΔz-zCΔy,zCΔx-xCΔz,xCΔy-yCΔx)。
式中:Δx=xC-xB;Δy=yC-yB;Δz=zC-zB。
这是单环机构,$B1×$C1=0,且hB1=hC1=0,因此两个球副之间有一个转动局部自由度,即ξ=1,而M=1。若选BC杆为动平台,机构就相当于有两个分支(2-RS)的并联机构,两个球副在不同的分支中,此时无法判定其存在局部自由度,所以ξ=0,但M=2。实际上,这是因为B、C球副之间的构件是输出构件,其产生的绕自身轴线的转动自然计入到了输出构件的自由度中。这也说明对含有局部自由度的机构,用式(1)计算的自由度数与输出构件选择有关。或者按文献[20]的观点,该机构的自由度是2,名义自由度是1。
本例中,若不以两球心连线作为两球副的一条转动轴线,而是用sB1=sC1=(l,m,n)计算运动螺旋,则得到机构的运动螺旋集维数是8,秩是6,所以M=2,也无法判定局部自由度。
如图3机构中,由3个构件和3个运动副组成,其中A、B处各有1个螺旋副,C处1个移动副。3个运动螺旋分别为:
其反螺旋有4个(略),λ=4,ν=0。根据其结构$A×$B=0,即两运动螺旋满足同轴条件。按两种情形讨论:
1)当hA≠hB时,上述3个运动螺旋线性相关(秩为2),但并不存在局部自由度,可求得ξ=0,M=1,这与文献[2]结果相同。
2)若hA=hB(螺旋同向)时,3个运动螺旋线性相关,秩也仍然为2,本文程序最后求得ξ=1,M=0。因为依据表2,这种情形下有一个局部转动自由度,表明这时构件1的转动仅是构件1的螺旋转动,并没有带动构件2产生相对机架3的移动。文献[2]没有分析这一情形。这个例子表明,单环机构不能单用“运动螺旋系线性相关”来判定局部自由度,单环机构中运动螺旋集线性相关只是表明其部分或全部构件可动。
另外,如果将2个螺旋副都等效为RP副,按情形(2)分析,会错误判断出存在3个局部自由度,故而不能将螺旋副H等效为RP副。
图4凸轮机构也属于单环机构,由于高副可以用RP等效(螺旋分别用$BP和$BR表示),这个机构相当于是RRPRP单闭环机构,其5个运动螺旋为:
其中:$BP=$C,有$BR×$C=0,机构有3个反螺旋(略),最后求出λ=3,ν=0,ξ=1,M=1,与实际情况相符。当然这时求出的活动构件数n=4,它是在高副低代时增加了一个虚拟杆造成的。当机构中含有没列在表1中的等效复合运动副时,计算得到的活动构件数n大于实际构件数,此时的n仅仅是作为计算的参考。
RRFRC机构简图见图5。其中:C处是平面副;E处是圆柱副;其余是转动副。各运动副螺旋轴线为:
sA=(1,0,0);sB=(a,b,c);sC1=(lC1,mC1,nC1);sC2=(lC2,mC2,nC2);
sD=(e,f,g);sE=(0,1,0)
式中:sC1、sC2是平面副上两不平行的矢量,则可以获得由8个螺旋组成的螺旋集,秩为6,ξ=0,M=2。但若机构运动到某个位置瞬间,平面副与y轴平行,即:sC2=(0,1,0),则螺旋集的维数及秩数不变,但sC2×sE=0,这时不同构件的C、E两点之间产生瞬时局部自由度,即:ξ=1,M=1。
本文利用Matlab提供的强大字符变量、矩阵处理能力,编写了基于螺旋理论的机构自由度自动分析计算程序。程序可在矢量或坐标输入框处输入任意字母、数字和简单三角函数等组成的表达式,使运动螺旋模型更符合实际情况,也便于局部自由度的自动分析计算。与手工计算相比,分析计算效率更高效。总结得到以下结论:1)分支中运动螺旋系线性相关存在局部自由度的判断准则只适用于多环机构。单环机构中两副之间存在局部移动自由度的充要条件是:存在两个h=∞的螺旋导路矢量相互平行;或者,分支中存在0