Skip to content

机械臂笔记(五)机械臂的动力学模型(欧拉-拉格朗日方程)

通过机器人的(逆)运动学可以将机械臂运动到给定的位姿,但是仅适合轻载、低速、无接触的工况,因为无法判断力矩是否合理、是否会激发振动、是否与系统惯量匹配。而通过引入动力学,则可以让机械臂按照需要的加速度运动,实现运动地稳、准、快、省、柔。

一维欧拉-拉格朗日方程推导

假设有以下粒子,受管道约束只能上下移动,并且约束力满足虚功原理。
1d-particle.svg

根据牛顿第二定律,该质点的运动方程为:

(1)my=fmg

(1)式右边先对时间求导、再对速度y 求偏导,可得:

(2)my=ddt(my)=ddty(12my2)=ddtKy

其中K=12my2 表示质点的动能,接下来表示质点的重力势能:

(3)mg=y(mgy)=Py

其中P=mgy 表示质点的重力势能。
之后我们定义拉格朗日算子L,表示动能与势能之差:

(4)L=KP=12my2mgy

并且有:

(5)Ly=KyLy=Py

联立式(1,2,3),初始的质点运动学方程可以化为:

(6)ddtKy=fPy

联立式(56),进一步得到:

(7)ddtLyLy=f

方程(7) 被称为欧拉-拉格朗日方程。推广到n 个自由度的系统,可得:

(8)ddtLqkLqk=τk

上面方程中:

  1. qk 表示第k 个广义坐标,在机器人中可以表示转角或直线位移
  2. L 表示拉格朗日量,包含动能和势能
  3. Lqk 表示与qk 对应的广义动量
  4. ddtLqk 表示惯性项,对加速度的反抗
  5. Lqk 表示保守力项,构型变化对能量的影响
  6. τk 表示第k 个广义力(矩)

由虚功原理:

(9)δW=kτkδqk

将其对应机械臂的各个关节旧容易理解一些了:
robot-arm-diagram.svg

高维推广

在高维情况下,我们通过一组广义坐标来表示系统的动能和势能。

动能表示

刚体的动能是平移动能和旋转动能之和:

(10)K=12mvTv+12ωTZω

其中Z 表示物体的惯性张量,是一个3×3 的矩阵。Z=RIRTR 是附体坐标系(随刚体运动)与惯性坐标系(世界坐标系)之间的姿态变换。I 是附体坐标系中的惯性张量,仅取决于物体的形状和质量分布,与物体的运动无关。

展开I 的计算I=[IxxIxyIxzIyxIyyIyzIzxIzyIzz]

其中,各元素的计算如下:

Ixx=(y2+z2)ρ(x,y,z)dxdydzIyy=(x2+z2)ρ(x,y,z)dxdydzIzz=(x2+y2)ρ(x,y,z)dxdydzIxy=Iyx=(xy)ρ(x,y,z)dxdydzIxz=Izx=(xz)ρ(x,y,z)dxdydzIyz=Izy=(yz)ρ(x,y,z)dxdydz

连杆上任意一点的线速度和角速度可以通过雅可比矩阵和关节速度表示:

(11)vi=Jvi(q)qωi=Jωi(q)q

Ji(q) 表示第i 个连杆的线(角)速度雅可比矩阵,依赖于构型q。映射是线性的。

则某一关机的动能可以表示为如下(mi)是常数:

(12)Ki=12miviTvi+12ωiTRi(q)IiRiT(q)ωi=12[miqTJviT(q)Jvi(q)q+qTJωiT(q)Ri(q)IiRiT(q)Jωi(q)q]=12qT[miJviT(q)Jvi(q)+JωiT(q)Ri(q)IiRiT(q)Jωi(q)]q

于是,机械臂的总动能可以表示为:

(13)Ktotal=i=1nKi=12qTi=1n[miJviT(q)Jvi(q)+JωiT(q)Ri(q)IiRiT(q)Jωi(q)]q

可以用D(q) 表示机器人的惯性矩阵:

(14)D(q)=i=1n[miJviT(q)Jvi(q)+JωiT(q)Ri(q)IiRiT(q)Jωi(q)]

则式(13)可以化简为如下形式:

(15)Ktotal=12qTD(q)q

机器人惯性矩阵D(q) 具有以下特点:

  1. 只与机械臂/机器人的构型有关
  2. 对称且正定
  3. 动能总是非负的

势能表示

假设物体质量集中在质心,计算第i个连杆的势能:

(16)Pi=migTrci

其中:

  • g 表示重力加速度向量,g=[00g]
  • rci 表示第i 个连杆质心在惯性(世界)坐标系中的位置向量。rci=[xiyizi]

则系统的总势能为:

(17)Ptotal=i=1nPi=i=1nmigTrci

m,g 是常数的情况下,机器人势能只与rci 有关。

运动方程

由式(15),系统的动能是关于广义速度(坐标微分)的二次函数:

(18)Ktotal=12qTD(q)q=12ijndij(q)qiqj

dij(q) 是矩阵D(q)的第(i,j)个元素。
结合势能方程(17) 可以得到欧拉-拉格朗日算子:

(19)L=KtotalPtotal=12ijndij(q)qiqjP(q)

k 个关节的欧拉-拉格朗日方程为:

(20)ddtLqkLqk=τk

其中:

(21)Lqk=jndkjqjddtLqk=jndkjqj+jnddtdkjqj=jndkjqj+ijndkjqiqiqjLqk=12ijndijqkqiqjPqk

因此,对于每一个k=1,2,...,n,欧拉-拉格朗日方程可以写为:

(22)jndkjqj+ijndkjqiqiqj12ijndijqkqiqj+Pqk=jndkjqj+ijn[(dkjqi12dijqk)qiqj]+Pqk=jndkjqj+ijn[12(dkjqi+dkjqidijqk)qiqj]+Pqk=τk

定义Christoffel symbol

(23)cijk=cjik=12(dkjqi+dkjqidijqk)

定义广义重力:

(24)gk=Pqk

最终得到欧拉-拉格朗日方程:

(25)jdkj(q)qj+ijcijk(q)qiqj+gk(q)=τk

方程可简写为:

(26)M(q)q+C(q,q)q+G(q)=τ

其中,方程中各项的意义分别是:

  • M(q):n×n惯性矩阵
  • C(q,q):科氏力和离心力矩阵
  • G(q):重力项
  • τ:关节力矩向量

实际应用

单摆

对于长度为l、质量为m的单摆,角度为θ

  • 动能:K=12ml2θ2
  • 势能:P=mglcos(θ)
  • 欧拉-拉格朗日算子:L=KP=12ml2θ2+mglcos(θ)
    应用欧拉-拉格朗日方程得到:
(27)ddtLθLθ=ddtml2θ(mglsin(θ))=ml2θ+mglsin(θ)=τ

如果所受外力为0 的情况下有:

(28)ml2θ+mglsin(θ)=0

两边同时除以ml2,可以得到单摆的非线性运动方程:

(29)θ+glsin(θ)=0

如果需要θ(t) 按照某条轨迹走,则根据式(27),需要施加外力:

(30)τ(t)=ml2θ(t)+mglsin(θ(t))

τ 应该以逆时针为正方向。

推导平面2关节机械臂动力学模型

现有2 关节机械臂如下图所示:
robot-arm-2-joints.png

参数长度质量角度
连杆1l1m1q1
连杆2l2m2q2

首先求连杆质心的位置:

(31)rc1=[l12cos(q1)l12sin(q1)0]rc2=[l1cos(q1)+l22cos(q1+q2)l1sin(q1)+l22sin(q1+q2)0]

线速度的雅可比矩阵定义:

(32)vci=ddtrci=Jvi(q)q

其中,rci=rci(q),是一个关于q 的函数,而q=[q112],是一组关于时间t 的函数
根据链式法则:

(33)vci=ddtrci=rciqdqdt=rciqq

可得线速度的雅可比矩阵为:

(34)Jvci(q)=rciq

其中雅可比矩阵:

(35)Jvc1=[rc1q1rc1q2]=[lc1sin(q1)0lc1cos(q1)000]Jvc2=[rc2q2rc2q2]=[l1sin(q1)lc2sin(q1+q2)lc2sin(q1+q2)l1cos(q1)+lc2cos(q1+q2)lc2cos(q1+q2)00]

其线速度对应的动能为:

(36)12m1vc1Tvc1+12m2vc2Tvc2=12qT(m1Jvc1TJvc1+m2Jvc2TJvc2)q

下面考虑转动部分动能:

(37)ω1=q1kω2=(q1+q2)k

其中k=[001],表示方向向量。
因为ωi与每个关节坐标系的z 轴对齐,所以旋转动能可以简单的表示为:12Iiωi2,其中Ii 是转动惯量,它的轴线穿过连杆的质心且平行于zi轴。因此,对于广义坐标系,整个系统的旋转功能为:

(38)K=12I1(ω1)2+12I2(ω2)2=12{ω1TI1ω1+ω2TI2ω2}=12{([10]q)TI1([10]q)+([11]q)TI2([11]q)}=12{qT[10]I1[10]q+qT[11]I2[11]q}=12qT{[10]I1[10]+[11]I2[11]}q=12qT{I1[1000]+I2[1111]}q=12qT[I1+I2I2I2I2]q

结合式(14),(36),(38) 可得,惯性矩阵:

(39)D(q)=m1Jvc1TJvc1+m2Jvc2TJvc2+[I1+I2I2I2I2]=[d11d12d21d22]=[q1相关的惯性q1q2耦合q1q2耦合q2相关的惯性]

结合式(35),(39) 可得:

(40)d11=m1lc12+m2(l12+lc22+2l1lc2cos(q2))+I1+I2d12=d21=m2(lc22+l1lc2cos(q2))+I2d22=m2lc22+I2

结合式(23),(40) 可得cijk

(41)c111=12d11q1=0c121=12d11q2=m2l1lc2sin(q2)=hc211=c121=hc221=d12q212d11q1=hc112=d21q112d11q2=hc122=12d22q1=0c212=c122=0c222=12d22q2=0

接下来计算势能,机械臂的势能等于两个连杆的势能之和:

(42)P1=m1glc1sin(q1)P2=m2g(l2sin(q1)+lc2sin(q1+q2))P=P1+P2=(m1lc1+m2l1)gsin(q1)+m2lc2gsin(q1+q2)

之前的广义重力gk 可变为:

(42)g1=Pq1=(m1lc1+m2l1)gcos(q1)+m2lc2gcos(q1+q2)g2=Pq2=m2lc2gcos(q1+q2)

结合式(25),(40),(41),(42),最后可以写出系统的动力学方程:

(43)d11q1+d12q2+c121q1q2+c211q2q1+c221q22+g1=τ1d21q1+d22q2+c112q12+g2=τ2

结合式(26)在这种情况下,原方程矩阵C(q,q) 由下式给出:

(44)C=[hq2hq2+hq1hq10]

虚功原理的几何意义不过是说约束力f=mXFa,与运动轨迹垂直。

参考资料

  1. 从理论力学到机器人动力学(二):虚功原理与雅可比矩阵
  2. 基于欧拉-拉格朗日方程的机器人动力学模型
  3. 虛功原理及歐拉-拉格朗日方程式 | 数学播客 2021年12月 45卷4期