Skip to content

机械臂笔记(七)机械臂动力学参数辨识 ​

在前面的文章中,我们得到了机械臂动力学模型的理想方程:

(1)τ=M(q)q″+C(q,q′)q′+G(q)

但是实际上,伴随着制造误差、运动摩擦、磨损、负载变化等,这个理想模型很难直接应用到工业生产中,我们还需要通过后期实验数据,来计算机器人/机械臂的整体辨识参数。这些参数主要包含机械臂关节的质量、转动惯量、摩擦力等各种固有属性。

虽然动力学方程对于q,q′,q″ 是非线性的,但是对于上述固有属性确是线性的,因此,上述(1)式可以写作:

(2)τ→=Y(q,q′,q″)θ→

然后:

(3)θ→=(YTY)−1YTτ→

以1R 机械臂为例 ​

一个关节转动时,其力矩主要有以下四个来源:

(4)τJ=Jq″…惯量(转得快、加速大→费力)τb=bq′…粘性摩擦(转得越快阻力越大)τf=fsign(q′)…库仑摩擦(正转一股力,反转一股力)τg=kgcos⁡(q)…重力(姿态不同→要托住)

合在一起即可得到一个可辨识的模型:

(5)τ=Jq″+bq′+fsign(q′)+kgcos⁡(q)=[q″q′sign(q′)cos⁡(q)]⏟非线性部分Y[Jbfkg]⏟固有属性θ→

实验中,上式左边的力矩,右边的非线性部分,都可以通过测量或者简单地计算得出。根据实验数据,我们可以得出一批关于θ→ 的方程组,之后通过最小二乘法等统计学分析工具,就可以得出所需的θ→。

以2R 机械臂为例(忽略耦合) ​

先假设两个关节互不影响,对系统进行建模:

(6)[τ1τ2]=[J1q1″+b1q1′+f1sign(q1′)+kg1cos⁡(q1)J2q2″+b2q2′+f2sign(q2′)+kg2cos⁡(q1+q2)]=[q1″q1′sign(q1′)cos⁡(q1)00000000q2″q2′sign(q2′)cos⁡(q1+q2)][J1b1f1kg1J2b2f2kg2]

加入最低阶的耦合 ​

(7)τ1=[q1″q2″cos⁡(q2)q1″q1′sign(q1′)cos⁡(q1)cos⁡(q1+q2)][J11J12k12b1f1kg1kg2]τ2=[q1″q2″cos⁡(q2)q2″q2′sign(q2′)cos⁡(q1+q2)][J21J22k21b2f2kg3]

矩阵分解 ​

实际测量中,对于矩阵Y 经常存在以下情况:

  • 列之间线性相关
  • 或者某列全是0
  • 或者某些列是其他列的倍数

例如,机械臂的参数:

  • 质量m1,m2
  • 质心c1,c2
  • 转动惯量I1,I2

它们几乎永远以组合的形式出现,例如:

  • a1=I1+m1c12
  • a2=I2+m2c22+m2l12
  • a3=m2l1c2

例如:

(8.1)τ=[369]=[112233][ab]

会发现(a,b) 有无穷多个解。则需要对矩阵进行奇异值分解、提取可辨识子空间、构造基参数、压缩回归矩阵(看不懂了)

简单理解就是合并有线性关系的参数。减少回归矩阵的维度(把a+b 看作一个变量):

(8.2)τ=[369]=[123][(a+b)]

之后就可解了。

最好是:每学一层理论,都配上一个最小可运行的实验!不然根本不知所云~

参考资料 ​

  1. 奇异值分解