机械臂的动力学部分
5.1 机械臂动力学的目标#
机械臂动力学的目标是在已知机械臂模型(关节设置)和各个连杆和质量分布的情况下,给定机械臂末端期望实现的位姿、速度、加速度,求在各个关节的制动器上应该施加的力或力矩。
5.2 迭代法求解动力学问题#
5.2.1 符号约定#
对于连杆 i,有三个与之相关联的框架,分别是
- 连杆 i 的在关节轴 i 处的固连框架 {i}
- 在连杆 i 的质心 ci 处的质心固连框架 {ci},其朝向与框架 {i} 一致
- 在关节轴 i+1 处的连杆 i+1 的固连框架 {i+1}
约定连杆 i 的质量为 mi,相对于质心框架 {ci} 的惯性张量为 ciIi; 相对于刚体自身框架,关节 i 处的线速度和线加速度为 ivi, iv˙i,连杆 i 的角速度及角加速度为 iωi, iω˙,连杆 i−1 施加在 连杆 i 上的力和力矩为 ifi, ini,连杆 i 施加在 连杆 i+1 上的力和力矩为 ifi+1, ini+1
5.2.2 牛顿-欧拉动力学方程#
对于连杆 i,有
fi−fi+1+migci[ni−ni+1+(pi−pci)×fi−(pi+1−pci×fi+1)]=miv˙ci= ciIci ciω˙ci+ ciωci× ciIci ciωci其中 ci[⋅] 表示将物理矢量表达成框架 {ci} 中的数学向量。
由方程可知,为了求解 fi 与 fi+1,需要先求出 v˙ci 、 ωci 和 ω˙ci
5.2.3 前向迭代求速度#
线加速度
按照上一章的速度传播结果,可以先求出关节 i 处的速度 vi,然后,求出连杆 i 质心处的速度 vci。注意质心框架 {ci} 与 框架 {i} 的朝向一致,
civci= ivci= ivi+ iωi× ipci其中,ipci 表示质心 ci 在 框架 {i} 中的位矢的向量表达。直接对时间 t 求导,可以得到线加速度为
civ˙ci= iv˙ci= iv˙i+ iω˙i× ipci+ iωi×( iωi× ipci)其中最后一项是对 ipci 求导的结果,这里是由于朝向发生了变化因此有一项导数。
角速度及角加速度
由于
ciωci= iωci= iωi有
ciω˙ci= iω˙ci= iω˙i5.2.4 反向迭代求动力#
对于连杆 i,假设此时 i+1fi+1 和 i+1ni+1,有
iFiiNiifiini=mi civ˙ci惯性力, 作用于质心ci= ciI iω˙i+ iωi× ciI iωi惯性力矩= iFi+ i+1iR i+1fi+1−mi ig牛顿第二定律= iNi+Ni的平移附加项 ipci× iFi+ i+1iR i+1ni+1+ni+1的平移附加项 ipi+1× i+1iR i+1fi+1− ipci×mi ig相对于关节i处的力矩方程
- 注意这里的重力项 mi ig 和 ipci×mi ig 需要依据问题环境来设置,有时候可以不用考虑重力项
- 注意重力项是被减去的!(例如,设置 0g=0−∣g∣0 )
- 有时候还需要考虑粘滞阻力等其他外力,此时需要对方程做相应修改。
迭代的初始条件通常是机械臂末端是自由运动的,即
N+1fN+1N+1nN+1=0=0这里 N 是关节个数,设置为大写是为了与力矩向量 n 区分。
5.2.5 关节提供的动力#
关节只负责提供 Z 轴方向的动力,于是可以求出
- 棱柱关节需要提供的力 τi= ifi⊤ iz^i
- 旋转关节需提供的力矩 τi= ini⊤ iz^i
5.2.6 特别需要注意的地方#
特别需要注意,这里面对速度 v 和 ω 是不可以直接对向量表达求导的,这样得到的结果是错误的!!! 具体的原因是在整个运动的过程中,框架也是在发生变化的,对应于物理学中矢量的求导是需要分矢量的标量大小和矢量方向求导两个部分的。下面的例题将说明这一点。
(角速度部分的 θ˙ 由于是对标量求导,所以不会存在这个问题)
平面2R的动力学模型
简化质量分布,假设每个连杆的质量都集中在连杆远端的一点,分别是 m1 和 m2,重力沿着 {0} 框架 Y 轴负方向。
解:
前向运动学方程为
10T21T32T30T(θ1,θ2)=cθ1sθ100−sθ1cθ10000100001=cθ2sθ200−sθ2cθ2000010L1001=100001000010L2001=c(θ1+θ2)s(θ1+θ2)00−s(θ1+θ2)c(θ1+θ2)000010L1cθ1+L2c(θ1+θ2)L1sθ1+L2s(θ1+θ2)01前向速度传播的结果为 (初始条件 0ω0=0, 0v0=0),利用迭代公式,有
1ω1 2ω2 1v1 2v21vc12vc2= 01R 0w0+θ˙1 1z^1=00θ˙1= 12R 1w1+θ˙2 2z^2=00θ˙1+θ˙2= 01R( 0v0+ 0ω0× 0p1)=0= 12R( 1v1+ 1ω1× 1p2)=L1θ˙1sθ2L1θ˙1cθ20= 1v1+ 1ω1× 1pc1=00θ˙1×L100=0L1θ˙10= 2v2+ 2ω2× 2pc2=L1θ˙1sθ2L1θ˙1cθ20+00θ˙1+θ˙2×L200=L1θ˙1sθ2L1θ˙1cθ2+L2(θ˙1+θ˙2)0求导,有
1ω˙1 2ω˙2 1v˙1 1v˙c1 2v˙2 2v˙c2= 01R 0ω˙0+ 01R 0ω0×θ˙1 1z^1+θ¨1 1z^1=00θ¨1= 12R 1ω˙1+ 12R 1ω1×θ˙2 2z^2+θ¨2 2z^2=00θ¨1+θ¨2= 01R( 0ω˙0× 0p1+ 0ω0×( 0ω0× 0p1)+ 0v˙0)=0= 1ω˙1× 1pc1+ 1ω1×( 1ω1× 1pc1)+ 1v˙1=−L1θ˙12L1θ¨10= 12R( 1ω˙1× 1p2+ 1ω1×( 1ω1× 1p2)+ 1v˙1)=L1θ¨1sθ2−L1θ˙12cθ2L1θ¨1cθ2+L1θ˙12sθ20= 2ω˙2× 2pc2+ 2ω2×( 2ω2× 2pc2)+ 2v˙2=−L2(θ˙1+θ˙2)2+L1θ¨1sθ2−L1θ˙12cθ2L2(θ¨1+θ¨2)+L1θ¨1cθ2+L1θ˙12sθ20注意到一个规律可以方便记忆公式,就是如果有矢量 a=axayaz 是在变化的框架中表达的,那么对这个向量求导时,除了有自身在当前框架的直接导数 a˙xa˙ya˙z 外,还会有框架变化导致的导数 ω×axayaz。这个规律适用于上面 θ˙2 2z^2 的导数计算和 1ω1× 1pc1 的导数计算(这里面 1ω1 的大小和框架变化的导数全含在了 1ω˙1 中, 1pc1 没有大小的变化,因此只有框架变化的导数 (ω×p))。
于是计算惯性力及惯性力矩
1F1 2F2 1N1 2N2=m1 1v˙c1=−m1L1θ˙12m1L1θ¨10=m2 2v˙c2=−m2L2(θ˙1+θ˙2)2+m2L1θ¨1sθ2−m2L1θ˙12cθ2m2L2(θ¨1+θ¨2)+m2L1θ¨1cθ2+m2L1θ˙12sθ20= c1I 1ω˙1+ 1ω1× c1I 1ω1=0= c2I 2ω˙2+ 2ω2× c2I 2ω2=0带入公式,结合 3f3=0, 3n3=0 得
2f2 1f1 2n2 1n1= 2F2+ 32R 3f3−m2 2g=−m2L2(θ˙1+θ˙2)2+m2L1θ¨1sθ2−m2L1θ˙12cθ2m2L2(θ¨1+θ¨2)+m2L1θ¨1cθ2+m2L1θ˙12sθ20−m2 02R0−g0=−m2L2(θ˙1+θ˙2)2+m2L1θ¨1sθ2−m2L1θ˙12cθ2+m2gs(θ1+θ2)m2L2(θ¨1+θ¨2)+m2L1θ¨1cθ2+m2L1θ˙12sθ2+m2gc(θ1+θ2)0= 1F1+ 21R 2f2−m1 1g=−(m1+m2)(L1θ˙12−gsθ1)−m2L2(θ¨1+θ¨2)sθ2−m2L2(θ˙1+θ˙2)2cθ2(m1+m2)(L1θ¨1+gcθ1)+m2L2(θ¨1+θ¨2)cθ2−m2L2(θ˙1+θ˙2)2sθ20= 2N2+ 2pc2× 2F2+ 32R 3n3+ 2p3× 32R 3f3− 2pc2×m2 2g=00m2L22(θ¨1+θ¨2)+m2L1L2θ¨1cθ2+m2L1L2θ˙12sθ2+m2gL2c(θ1+θ2)= 1N1+ 1pc1× 1F1+ 21R 2n2+ 1p2× 21R 2f2− 1pc1×m1 1g=00m1L12θ¨1+00m2L22(θ¨1+θ¨2)+m2L1L2θ¨1cθ2+m2L1L2θ˙12sθ2+m2gL2c(θ1+θ2)+00m2L12θ¨1+m2gL1cθ1−m2L1L2(θ˙1+θ˙2)2sθ2+m2L1L2(θ¨1+θ¨2)cθ2−00−m1gL1cθ1=00(m1+m2)L12θ¨1+m2L22(θ¨1+θ¨2)+m2L1L2θ¨1cθ2+m2L1L2θ˙12sθ2+m2gL2c(θ1+θ2)+(m1+m2)gL1cθ1−m2L1L2(θ˙1+θ˙2)2sθ2+m2L1L2(θ¨1+θ¨2)cθ2以上就是迭代的结果,可以说是相当的复杂。取力矩向量在 Z 轴方向分量,即可得到关节需要提供的力矩大小。
化简得到
τ1τ2=m1L12θ¨1+m2L12θ¨1+m2L22θ¨1+m2L22θ¨2+2m2L1L2θ¨1cθ2−2m2L1L2θ˙1θ˙2sθ2+m2L1L2θ¨2cθ2−m2L1L2θ˙22sθ2+m1gL1cθ1+m2gL1cθ1+m2gL2c(θ1+θ2)=m2L22θ¨1+m2L22θ¨2+m2L1L2θ¨1cθ2+m2L1L2θ˙12sθ2+m2gL2c(θ1+θ2)5.3 Lagrangian 方程法求解动力学问题#
Lagrangian 方程是个好东西,物理系的同学们都爱用。这个方程大大简化了物理问题的分析,将物理的标准坐标系问题转换成了对任意广义坐标设置的数学问题。具体的原理部分可以自行查找资料,例如参考这个链接Lagrangian方程
5.3.1 广义坐标#
简单来说,广义坐标就是数学中相互独立的自变量,是衡量物体运动变化的变量。

图中的 φ1,φ2 就是广义坐标,经典的正交坐标 (xA,yA),(xB,yB) 就可以用这两个广义坐标表示
⎩⎨⎧xA=L1sφ1yA=L1cφ1xB=L1sφ1+L2sφ2yB=L1cφ1+L2cφ25.3.2 Lagrangian 方程#
设 K 为系统动能,P 为系统势能,定义 Lagrangian 函数为
L=K−P则有方程
dtd(∂q˙k∂L)−∂qk∂L=τk,k=1,…,n其中 τ=τ1⋮τn 为非保守广义力,q=q1⋮qn 为广义坐标,τk 是与 qk 对应的非保守广义力。
平面2R的Lagrangian解法
解:
设广义坐标为两个关节变量 θ1 和 θ2,则
⎩⎨⎧x1=L1cθ1y1=L1sθ1x2=L1cθ1+L2c(θ1+θ2)y2=L1sθ1+L2s(θ1+θ2)对时间求导 (在绝对框架中的表达,不需要考虑框架的变化项),得到
⎩⎨⎧x˙1=−L1θ˙1sθ1y˙1=L1θ˙1cθ1x˙2=−L1θ˙1sθ1−L2(θ˙1+θ˙2)s(θ1+θ2)y˙2=L1θ˙1cθ1+L2(θ˙1+θ˙2)c(θ1+θ2)于是
v1⊤v1v2⊤v2=x˙12+y˙12=L12θ˙12=x˙22+y˙22=L12θ˙12+L22(θ˙1+θ˙2)2+2L1L2θ˙1(θ˙1+θ˙2)cθ2由此可得动能、势能 (零势能点可以任意选取)、Lagrangian 函数分别为
KPL=21m1v1⊤v1+21m2v2⊤v2=21(m1+m2)L12θ˙12+21m2L22(θ˙1+θ˙2)2+m2L1L2θ˙1(θ˙1+θ˙2)cθ2=m1gy1+m2gy2=m1gL1sθ1+m2g(L1sθ1+L2s(θ1+θ2))=K−P=21(m1+m2)L12θ˙12+21m2L22(θ˙1+θ˙2)2+m2L1L2θ˙1(θ˙1+θ˙2)cθ2−m1gL1sθ1−m2g(L1sθ1+L2s(θ1+θ2))于是,分别求出
∂θ˙1∂L∂θ˙2∂L∂θ1∂L∂θ2∂L=(m1+m2)L12θ˙1+m2L22(θ˙1+θ˙2)+m2L1L2(θ˙1+θ˙2)cθ2+m2L1L2θ˙1cθ2=m2L22(θ˙1+θ˙2)+m2L1L2θ˙1cθ2=−(m1+m2)gL1cθ1−m2gL2c(θ1+θ2)=−m2L1L2θ˙1(θ˙1+θ˙2)sθ2−m2gL2c(θ1+θ2)接着计算
dtd(∂θ˙1∂L)dtd(∂θ˙2∂L)=m1L12θ¨1+m2L12θ¨1+m2L22θ¨1+m2L22θ¨2+2m2L1L2θ¨1cθ2−2m2L1L2θ˙1θ˙2sθ2+m2L1L2θ¨2cθ2−m2L1L2θ˙22sθ2=m2L22(θ¨1+θ¨2)+m2L1L2θ¨1cθ2−m2L1L2θ˙1θ˙2sθ2于是得出动力学方程为
τ1τ2=m1L12θ¨1+m2L12θ¨1+m2L22θ¨1+m2L22θ¨2+2m2L1L2θ¨1cθ2−2m2L1L2θ˙1θ˙2sθ2+m2L1L2θ¨2cθ2−m2L1L2θ˙22sθ2+m1gL1cθ1+m2gL1cθ1+m2gL2c(θ1+θ2)=m2L22θ¨1+m2L22θ¨2+m2L1L2θ¨1cθ2−m2L1L2θ˙1θ˙2sθ2+m2L1L2θ˙1(θ˙1+θ˙2)sθ2+m2gL2c(θ1+θ2)化简得到
τ1τ2=m1L12θ¨1+m2L12θ¨1+m2L22θ¨1+m2L22θ¨2+2m2L1L2θ¨1cθ2−2m2L1L2θ˙1θ˙2sθ2+m2L1L2θ¨2cθ2−m2L1L2θ˙22sθ2+m1gL1cθ1+m2gL1cθ1+m2gL2c(θ1+θ2)=m2L22θ¨1+m2L22θ¨2+m2L1L2θ¨1cθ2+m2L1L2θ˙12sθ2+m2gL2c(θ1+θ2)- 注意,动能项中含有一个 cosθ2,千万不要因为忽略这一项的导数
- 计算不出错的最好办法是不要尝试去构造对称的式子,全部化成乘积相加的形式
- 通过观察各项下标的差异进行比对