二连杆机械臂动力学推导(不考虑重力)
前言
前一阵子上了多体动力学的课,动力学方法里主流的两个流派有牛顿欧拉法和拉格朗日法,跟着老师上课也自己看书,梳理讲了一个二连杆机械臂的动力学推导,但是没有给具体的证明,自己按拉格朗日法写一下加深一下理解吧。
二连杆机械臂的动力学推导
书上给出了不考虑重力的动力学公式为:
这里的p1、p2、p3、q1、q2都是什么东西?写得不清不楚的,不过推导动力学用拉格朗日是传统艺能了,我们就来推导一下。
不考虑重力、摩擦力和干扰,那我们就不用考虑系统的势能了。
作为一个二关节机械臂,我们认为连杆的质量都集中在末端,旋转关节都在始端,两个旋转关节的旋转角度分别如图旋转θ1和θ2,我们取它们作为广义坐标。
从基座如图建立平面坐标系,我们可以写出每个连杆末端旋转副的位置.第一个连杆X方向和Y方向的坐标为:
x1=l1cosθ1y1=l1sinθ1
第二个连杆X方向和Y方向的坐标为:
x2=l1cosθ1+l2cos(θ1+θ2)y2=l1sinθ1+l2sin(θ1+θ2)
第一个连杆X方向和Y方向的速度(对时间求导)为:
x˙1=−l1sinθ1θ1˙y˙1=l1cosθ1θ1˙
第二个连杆X方向和Y方向的速度(对时间求导)为:
x˙2=−l1sinθ1θ1˙−l2sin(θ1+θ2)(θ1˙+θ2˙)y˙2=l1cosθ1θ1˙+l2cos(θ1+θ2)(θ1˙+θ2˙)
第一个连杆的动能:
T1=21m1(x˙12+y˙12)=21m1[(−l1sinθ1θ1˙)2+(l1cosθ1θ1˙)2]=21m1l12θ˙12
第二个连杆的动能:
T2=21m2(x˙22+y˙22)=21m2{[−l1sinθ1θ1˙−l2sin(θ1+θ2)(θ1˙+θ2˙)]2+[l1cosθ1θ1˙+l2cos(θ1+θ2)(θ1˙+θ2˙))]2}=21m2[l12θ˙12+l22(θ˙1+θ˙2)2+2l1l2θ˙1(θ˙1+θ˙2)cosθ2]
由于不考虑重力、摩擦力和干扰,于是系统的总能量就是两个动能之和,记作L。
L=T1+T2=21m1l12θ˙12+21m2[l12θ˙12+l22(θ˙1+θ˙2)2+2l1l2θ˙1(θ˙1+θ˙2)cosθ2]=21m1l12θ˙12+21m2l12θ˙12+21m2l22θ˙12+m2l22θ˙1θ˙2+21m2l22θ˙22+m2l1l2(θ˙12+θ˙1θ˙2)cosθ2
机器人在连杆1和连杆2的驱动关节力矩分别是τ1和τ2,利用拉格朗日公式有:
dtd(∂θ1˙∂L)−∂θ1∂L=τ1dtd(∂θ2˙∂L)−∂θ2∂L=τ2
代入上面的公式有:
dtd(∂θ1˙∂L)=m1l12θ1¨+m2l12θ¨1+m2l22θ¨1+m2l22θ¨2+2m2l1l2cosθ2θ¨1−2m2l1l2sinθ2θ˙1θ˙2+m2l1l2cosθ2θ¨2−m2l1l2sinθ2θ˙22
dtd(∂θ2˙∂L)=m2l22θ¨1+m2l22θ¨2+m2l1l2cosθ2θ¨1−m2l1l2sinθ2θ˙1θ˙2
∂θ1∂L=0
∂θ2∂L=m2l1l2θ˙12sinθ2+m2l1l2θ˙1θ˙2sinθ2
整理以后我们就有:
(m1l12+m2l12+m2l22+2m2l1l2cosθ2)θ¨1+(m2l1l2cosθ2+m2l22)θ¨2−2m2l1l2sinθ2θ˙1θ˙2−m2l1l2sinθ2θ˙22=τ1
(m2l1l2cosθ2+m2l22)θ¨1+m2l22θ¨2+m2l1l2sinθ2θ˙12=τ2
于是我们就可以写成书中的形式,描述为矩阵非常简洁的形式:
D(q)q¨+C(q,q˙)q˙=τ
其中:
D(q)=[m1l12+m2l12+m2l22+2m2l1l2cosθ2m2l1l2cosθ2+m2l22m2l1l2cosθ2+m2l22m2l22]
C(q,q˙)=[−m2l1l2sinθ2θ˙2m2l1l2sinθ2θ˙1−m2l1l2sinθ2θ˙1−m2l1l2sinθ2θ˙20]
q=[θ1θ2]q˙=[θ˙1θ˙2]τ=[τ1τ2]
这也就解释了开头书中的公式:
其中
p1p2p2=m1l12+m2l12=m2l22=m2l1l2