平面二连杆机构的动力学方程

  动力学研究物体的运动和作用力之间的关系。机器人动力学问题有两类:一是已知机器人各关节的驱动力或力矩,求解机器人各关节的位置、速度和加速度,这是动力学正问题;二是已知各关节的位置、速度和加速度,求各关节所需的驱动力或力矩,这是动力学逆问题。机器人的动力学正问题主要用于机器人的运动仿真。例如在机器人设计时,需要根据连杆质量、运动学和动力学参数、传动机构特征及负载大小进行动态仿真,从而决定机器人的结构参数和传动方案,验算设计方案的合理性和可行性,以及结构优化的程度;在机器人离线编程时,为了估计机器人高速运动引起的动载荷和路径偏差,要进行路径控制仿真和动态模型仿真。研究机器人动力学逆问题的目的是为了对机器人的运动进行有效的实时控制,以实现预期的轨迹运动,并达到良好的动态性能和最优指标。由于机器人是个复杂的动力学系统,由多个连杆和关节组成,具有多个输入和多个输出,存在着错综复杂的耦合关系和严重的非线性,所以动力学的实时计算很复杂,在实际控制时需要做一些简化假设。

1、机械臂连杆受力分析

  机器人连杆i的两端是关节i和关节i+1,杆i的两端分别有坐标系i1和坐标系i的原点Oi1Oi,以及作用于杆i的外力(参考下图)有:

  ①杆i1作用到杆i上的力系。此力系可向Oi1点简化为一个力fi1,i和一个力矩Ni1,i.

  ②杆i作用到杆i+1上的力系可向Oi点简化为力fi,i+1和力矩Ni,i+1,因此杆i+1作用到杆i上的是fi,i+1Ni,i+1的反作用力fi,i+1Ni,i+1(对于末端不与环境接触的自由运动机器人,该力和力矩为0).

  ③杆i上所受的重力mig

2、牛顿-欧拉法建立动力学方程

  刚体运动 = 质心的平动 + 绕质心的转动。其中,质心平动用牛顿方程描述;绕质心的转动用欧拉方程描述。牛顿-欧拉法是一种递推方法,基于牛顿第二定律和欧拉方程,分别描述刚体的平动和转动动力学。它分为两个阶段:

  • 前向递推:从基座到末端,计算每个连杆的速度和加速度。

  • 反向递推:从末端到基座,计算每个连杆的力和力矩。

  如下图所示vci是连杆i的质心ciOxyz参考系下的线速度,惯性力为miv˙ci 。根据达朗贝尔原理(在质点运动的每一瞬时,作用于质点上的主动力、约束力和质点的惯性力组成一平衡力系。值得注意的是,质点上只作用有主动力和约束力,质点的惯性力并不作用在质点上,质点并非处于平衡状态):

fi1,ifi,i+1+migmiv˙ci=0,i=1,...,n

  根据欧拉方程,描述杆i绕其质心转动的方程为:Iiω˙i+ωi×Iiωi=Mi,式中Ii为杆i对其质心的惯性张量矩阵,Mi为作用在杆i上的外力系对杆i质心的主力矩。若ri,ci为杆i质心在系i中的矢径,则欧拉方程可以展开为: Ni1,iNi,i+1(ri1,i+ri,ci)×fi1,i+(ri,ci)×(fi,i+1)Iiω˙iωi×(Iiωi)=0,i=1,...,n

  由于机器人末端连杆的负载是已知量,且力和力矩是由上编号连杆向下编号连杆传递的,所以在计算各连杆的力和力矩时,可以从末端n号连杆开始,利用上面的牛顿欧拉方程逐号向内递推计算,得到每个连杆的fN。对于在自由空间移动的机器人来说,可以令fn,n+1Nn,n+1为零,所以第一次递推计算很简单。如果机器人和环境接触,在力的平衡时可能包括了由于这种接触所受的力和力矩,这时fn,n+1Nn,n+1就不是零了。

  若机器人在工作时其末端与外界环境接触,则由于环境的约束,机器人末端不能再不受约束的自由运动,故称这种情况下的机器人为运动受限机器人。这时机器人末端作用于环境的力可向连杆坐标系n的原点On简化为一个力f和力矩N,因此机器人的连杆n受到反作用力系fN。所以用牛顿-欧拉方程推导运动受限机器人的动力学方程时,应取fn+1=f,Nn+1=N。则用牛顿-欧拉方程建立的运动受限机器人方程应为:{mi(acig)=fifi+1,(i=1,...,nfn+1=f,Nn+1=N)Iciω˙i+ωi×Iciωi=NiNi+1(ri1,i+ri,ci)×fi+ri,ci×fi+1  对于如下图所示的二连杆机构,连杆的运动被限制在平面内,因此其转动只能绕垂直于该平面的轴进行。这意味着转动轴的方向是固定的,且只有一个自由度。在三维空间中,惯性张量是一个 的矩阵,描述了物体绕不同轴的转动惯量。对于下图所示的平面连杆机构,惯性张量可以简化为一个标量I,欧拉动力学方程化简为τ=Iα(此时ω×Iω=0)。因此,连杆1的牛顿欧拉方程为:f0,1f1,2+m1gm1v˙c1=0N0,1N1,2+r1,c1×f1,2r0,c1×f0,1I1ω˙1=0

  对于连杆2有:f1,2+m2gm2v˙c2=0N1,2r1,c2×f1,2I2ω˙2=0

  对于平面二连杆机构,关节驱动力矩τ1τ2与上面式子中的N相等,即Ni1,i=τi,i=1,2,消除f1,2变量可得到:τ2r1,c2×m2v˙c2+r1,c2×m2gI2ω˙2=0

  同样的消除变量f0,1后得到:τ1τ2r0,c1×m1v˙c1r0,1×m2v˙c2+r0,c1×m1g+r0,1×m2gI1ω˙1=0

  接下来用关节角θ1θ2来表示线速度vci、角速度ωiri,i+1。注意ω2是相对于基坐标系的角速度(角速度的叠加遵循矢量加法规则),而θ2是相对于连杆1的角度。因此有ω1=θ˙1,ω2=θ˙1+θ˙2

  两个连杆质心的线速度可以写为vc1=(lc1θ˙1sinθ1lc1θ˙1cosθ1),vc2=((l1sinθ1+lc2sin(θ1+θ2))θ˙1lc2sin(θ1+θ2)θ˙2(l2cosθ1+lc2cos(θ1+θ2))θ˙1+lc2cos(θ1+θ2)θ˙2)

  将角速度和质心线速度的表达式代入上面力矩的等式中,可以得到封闭形式的动力学方程,即将关节力矩和力写成关节位移、速度、加速度(θ,θ˙,θ¨)的显函数形式。封闭形式的动力学方程是一种以显式、解析的方式描述机器人动力学行为的数学表达式,它能够精确地刻画机器人各关节的运动与所受外力和力矩之间的关系,无需进行迭代或数值逼近计算即可得到解析解。τ1=H11θ¨1+H12θ¨2hθ˙222hθ˙1θ˙2+G1τ2=H22θ¨2+H21θ¨1+hθ˙12+G2

  其中,H11=m1lc12+I1+m2(l12+lc22+2l1lc2cosθ2)+I2H22=m2lc22+I2H12=m2(lc22+l1lc2cosθ2)+I2h=m2l1lc2sinθ2G1=m1lc1gcosθ1+m2g(lc2cos(θ1+θ2)+l1cosθ1)G2=m2glc2cos(θ1+θ2)

  可以用Mathematica计算出力矩的符号表达式:

查看代码
 (*定义变量*)
r0c1={lc1 Cos[\[Theta]1[t]],lc1 Sin[\[Theta]1[t]],0};
r01={l1 Cos[\[Theta]1[t]],l1 Sin[\[Theta]1[t]],0};
r1c2={lc2 Cos[\[Theta]1[t]+\[Theta]2[t]],lc2 Sin[\[Theta]1[t]+\[Theta]2[t]], 0};
r0c2 = r01 + r1c2;
vc1=D[r0c1,t];
vc2=D[r0c2,t];
dvc1= D[vc1,t];
dvc2=D[vc2,t];
\[Omega]1={0,0,D[\[Theta]1[t],t]};
\[Omega]2={0,0,D[\[Theta]1[t]+\[Theta]2[t],t]};
d\[Omega]1 = D[\[Omega]1,t];
d\[Omega]2 = D[\[Omega]2,t];
g={0,-gy,0};
\[Tau]1 = {0,0,t1};
\[Tau]2 = {0,0,t2};

(*定义力矩方程*)
e1 = \[Tau]2-r1c2 \[Cross]dvc2*m2+r1c2 \[Cross] g *m2-i2 d\[Omega]2;
e2 = \[Tau]1-\[Tau]2-r0c1\[Cross]dvc1 *m1-r01 \[Cross] dvc2 *m2+r0c1 \[Cross]g*m1+r01 \[Cross]g *m2-i1 d\[Omega]1;
eq1=e1[[3]]==0;
eq2=e2[[3]]==0;

(*求解力矩表达式*)
solutions=Solve[{eq1,eq2},{t1,t2}];
\[Tau]1Expr=t1/.solutions[[1]];
\[Tau]2Expr=t2/.solutions[[1]];

  从上面的例子可以看出,机器人动力学方程的计算比较烦琐,才两个连杆,表达式看着就已经让人头大了。随着机器人自由度数增加,计算将变得更加复杂。对于n自由度的机器人,一般形式的封闭动力学方程可以写为:τ=M(θ)θ¨+C(θ,θ˙)+G(θ)

  其中,M(θ)n×n阶正定对称矩阵,M(θ)θ¨代表惯性力项。M(θ)中的主对角线元素表示各连杆本身的有效惯量,代表给定关节上的力矩与产生的角加速度之间的关系,非对角线元素表示连杆之间的耦合惯量,即是某连杆的加速运动对另一关节产生的耦合作用力矩的度量 ;C(θ,θ˙)n×1阶向心力和科氏力项,由两部分组成:其一与关节速度平方成正比,表示该关节速度产生的向心力;其二与两关节速度的乘积成正比,称为科氏力;G(θ)n×1阶的重力项,与机器人的形位θ有关。惯性力项和重力项在机器人控制中特别重要,因为它们直接影响机器人系统的稳定性和定位精度。向心力和科氏力只有当机器人高速运动时才有意义,否则它们造成的误差很小。也就是说,在非高速运动情况下可以不考虑。

3、动力学方程各项的物理解释

  • 重力项:动力学解的方程式中G1G2表示质量为m1m2的连杆绕各自关节轴产生的力矩。该值依赖于机械臂的构型,当机械臂完全沿x轴伸展时,重力力矩达到最大值。
  • 惯性力项:首先观察方程中的第一项H11θ¨1。假设连杆2相对连杆1静止不动,即θ˙2=0θ¨2=0,忽略掉重力项,则关节1的动力学方程可简化为τ1=H11θ¨1。此时系数H11代表连杆1和连杆2对关节1的总转动惯量。H11中前两项m1lc12+I1为连杆1相对关节1的转动惯量,剩下的几项m2(l12+lc22+2l1lc2cosθ2)+I2为连杆2相对于关节1的转动惯量。该惯量大小与连杆2的质心到关节1的距离L有关,距离L是关节角θ2的函数:L2=l12+lc22+2l1lc2cosθ2

  根据平行轴定理(若旋转轴平行于通过质心的轴且距离为d,转动惯量为:I=Ic+md2其中,Ic是绕质心轴的转动惯量),连杆2相对于关节1的转动惯量为m2L2+I2。可以看到计算出的转动惯量与动力学方程中的系数H11一致。注意转动惯量与机械臂形位有关,当二连杆机构全展开时(即θ2=0)转动惯量最大;当连杆2收回到与连杆1重合时(即θ2=π),转动惯量最小。

  • 惯性耦合:

  现在考虑动力学方程中第2项H12θ2¨。假设θ˙1=θ˙2=0,且θ¨1=0,忽略掉重力项,那么第一个方程τ1可以简化为τ1=H12θ¨2。当连杆2加速运动时,会对连杆1产生作用力和力矩。可以从受力分析中的牛顿-欧拉方程中看出,耦合力f1,2和力矩N1,2将会对连杆1的关节产生一个力矩τint,将N1,2f1,2的表达式带入,并设定θ˙1=θ˙2=0,及θ¨1=0可得到:

τint=N1,2r0,1×f1,2=I2ω˙2r0,c2×m2v˙c2=(I2+m2(lc22+l1lc2cosθ2))θ¨2

  这与最终动力学方程中的第2项H12θ¨2一致,它表示第2个关节的加速度对第1个关节的惯性力的贡献。如果H1,2不为零,说明第二个关节的加速度会对第一个关节产生惯性力。惯性矩阵H中,对角线元素Hi,i表示第i个关节的惯性力与其自身加速度的关系。非对角线元素Hi,j表示第j个关节的加速度对第i个关节的惯性力的耦合影响。这种耦合效应是由于机器人连杆之间的质量分布和运动学关系导致的。当第 j个关节加速时,它会通过连杆的质量和几何结构传递惯性力到第i个关节。

  • 向心力(离心力)项

  向心力是由于机械臂的连杆在旋转运动中产生的惯性力。当机械臂的关节旋转时,连杆上的质量会因旋转运动而产生向心加速度,从而产生向心力。动力学方程中的第3项与关节速度成比例,假设某一时刻θ˙2=0θ¨1=θ¨2=0,参考下图a,这时向心力作用在连杆2上,其大小为|fcent|=m2Lθ˙12,其中L为连杆2的质心到第一个关节O的距离,向心力作用方向沿着矢量ro,c2的方向。这个向心力会对关节2产生一个力矩τcentτcent=r1,c2×fcent=m2l1lc2sinθ2θ˙12,这与动力学方程τ2中第3项hθ˙12一致。因此可以认为,hθ˙12项是由于连杆1的旋转产生的离心力效应作用于连杆2的关节处所引起的。同样的,以恒定角速度旋转关节2将会产生一个力矩hθ˙22作用于关节1上。

  • 科氏力(科里奥利力)项

  科氏力是由于机械臂的连杆在旋转参考系中具有相对运动而产生的惯性力,它反映了机械臂在运动过程中由于旋转运动和相对运动耦合而产生的惯性效应。最后来讨论动力学方程中的第4项2hθ˙1θ˙2,它与关节速度的乘积成正比。考虑某一瞬时,二连杆机构的两个关节分别以角速度θ˙1θ˙2旋转。定义一个动坐标系Obxbyb(参考图b),其原点与连杆1的末端重合,并以角速度θ˙1与连杆1一起旋转,坐标系Obxbyb在该瞬时与基坐标系(静止参考系)平行。此时连杆2的质心相对连杆1(动坐标系)的相对速度大小为vr=lc2θ˙2,方向与r1,c2垂直。根据理论力学中的知识(可参考《理论力学》--高等教育出版社,谢传锋,王琪主编,5-3点的复合运动,牵连运动为定轴转动时的加速度合成定理):质点的科氏力(Coriolis Force)是由于质点在一个旋转参考系中具有相对运动而产生的惯性力。科氏力的计算需要考虑旋转参考系的角速度以及质点在旋转参考系中的相对速度。科氏力的矢量公式为:fCor=2m(ω×vr)

  其中,m是质点的质量,ω是旋转参考系的角速度矢量,vr是质点相对于旋转参考系的速度矢量。根据该公示,作用于连杆2的科氏力计算结果为:fCor=(2m2lc2θ˙2θ˙2cos(θ1+θ2)2m2lc2θ˙2θ˙2sin(θ1+θ2))

  该科氏力将会对关节1产生一个力矩τCorτCor=r0,c2×fCor=2m2l1lc2sinθ2θ˙1θ˙2,该值与动力学方程中第4项一致。

4、拉格朗日方程

  实际问题中刚体运动时往往并不是自由的,他们受到一些约束,使用牛顿-欧拉法进行受力分析时不可避免要带入约束力。而约束力是一种“被动的”力,是未知量。如果只是关心刚体的运动,求解这些约束力会增加不必要的计算量,因此希望能建立一种不含约束力的动力学方程。拉格朗日方程基于能量平衡方程,它给出了不含约束力的动力学方程。对于简单情况,运用该方法比用牛顿 欧拉方程更烦琐,然而随着系统复杂程度的增加,运用拉格朗日动力学方程将变得相对简单。所以拉格朗日动力学方程相对于牛顿 欧拉方程更适合于分析相互约束下的多个连杆运动。拉格朗日函数L的定义是一个机械系统的动能K与势能P之差,即L(q,q˙)=K(q,q˙)P(q)

  式中q表示动能和势能的广义坐标,q=[q1,q2,...,qn]q˙表示广义速度,q˙=[q˙1,q˙2,...,q˙n]。对于n个连杆组成的机器人,由拉格朗日函数描述的系统动力学方程为:τi=ddt(Lq˙i)Lqi,i=1,2,...,n

  式中τi为作用在第i个关节上的广义驱动力矩。

  平面运动刚体的总动能是平动动能和转动动能之和,即T=12mvci2+12Icωi2。则二连杆机构系统总动能为:T=i=12(12mivci2+12Iiωi2)

  选取θ1θ2为广义坐标,角速度可表示为ω1=θ˙1ω2=θ˙1+θ˙2。对于连杆1,其动能K1 和位能势能P1为:K1=12m1(lc1θ˙1)2+12112m1l12θ˙12P1=m1glc1sinθ1

  对连杆2,其动能和势能分别为:K2=12m2vc22+12112m2l22(θ˙12+θ˙22)P2=m2gyc2

  由于xc2=l1cosθ1+lc2cos(θ1+θ2)yc2=l1sinθ1+lc2sin(θ1+θ2)x˙c2=l1sinθ1θ˙1lc2sin(θ1+θ2)(θ˙1+θ˙2)y˙c2=l1cosθ1θ˙1+lc2cos(θ1+θ2)(θ˙1+θ˙2)

  所以vc22=x˙c22+y˙c22=l12θ˙12+lc22(θ˙12+2θ˙1θ˙2+θ˙22)+2l1lc2cosθ2(θ˙12+θ˙1θ˙2)

  于是K2=m224((12l12+l22+12lc22+24l1lc2cosθ2)θ˙12+24lc2(lc2+l1cosθ2)θ˙1θ˙2+(l22+12lc22)θ˙22)P2=m2gyc2=m2gl1sinθ1+m2glc2sin(θ1+θ2)

  二连杆机构的拉格朗日函数为L=K1+K2(P1+P2),带入上面的结果对L求偏导数和导数,可得到力矩τ1τ2的动力学方程τ1=ddt(Lθ˙1)Lθ1τ2=ddt(Lθ˙2)Lθ2

  使用Mathematica进行符号计算得到的结果与牛顿欧拉法完全一致(两次计算的结果可以使用 Simplify 或 FullSimplify 对它们的差进行化简,然后判断结果是否为 0):

拉格朗日法计算力矩
 (*拉格朗日法*)
K1 = 1/2 m1 (lc1 D[\[Theta]1[t], t])^2 + 1/2*1/12 m1 l1^2* D[\[Theta]1[t], t]^2;
P1 = m1 g lc1 Sin[\[Theta]1[t]];
\[Omega]1 = D[\[Theta]1[t], t];
\[Omega]2 = D[\[Theta]1[t], t] + D[\[Theta]2[t], t];
xc2 = l1 Cos[\[Theta]1[t]] + lc2 Cos[\[Theta]1[t] + \[Theta]2[t]];
yc2 = l1 Sin[\[Theta]1[t]] + lc2 Sin[\[Theta]1[t] + \[Theta]2[t]];
K2 = 1/2 m2 (D[xc2, t]^2 + D[yc2, t]^2) + 1/2*1/12 m2 l2^2*\[Omega]2^2;
P2 = m2 g yc2;
L = K1 + K2 - (P1 + P2);
f1 = D[D[L, Derivative[1][\[Theta]1][t]], t] - D[L, \[Theta]1[t]] // Simplify
f2 = D[D[L, Derivative[1][\[Theta]2][t]], t] - D[L, \[Theta]2[t]] // Simplify

  因此,不论用牛顿-欧拉方法还是用拉格朗日方法得到的动力学方程应该是相同的,差异仅在于建立封闭形式动力学方程的计算复杂性不同。牛顿-欧拉法只需考虑当前连杆和前一个连杆的关系,计算是局部的;而拉格朗日方程需要考虑整个系统的能量和相互作用,计算是全局的。牛顿-欧拉法的计算量通常远小于拉格朗日方程,主要因为它采用递推计算,避免了全局矩阵运算。对于多自由度机械臂的实时动力学仿真和控制,牛顿-欧拉法是更优的选择。而拉格朗日方程更适合理论分析和离线仿真,尽管计算量大,但其物理意义更加清晰。

 

 

参考:

刚体质量分布与牛顿-欧拉方程

《工业机器人技术基础》孙树栋 主编

使用JSXGraph进行平面二连杆机构动力学仿真

Introduction To Robotics  Chapter 7: Dynamics 

posted @   XXX已失联  阅读(110)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示