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)=[qqsign(q)cos(q)]线Y[Jbfkg]θ

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

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

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

(6)[τ1τ2]=[J1q1+b1q1+f1sign(q1)+kg1cos(q1)J2q2+b2q2+f2sign(q2)+kg2cos(q1+q2)]=[q1q1sign(q1)cos(q1)00000000q2q2sign(q2)cos(q1+q2)][J1b1f1kg1J2b2f2kg2]

加入最低阶的耦合

(7)τ1=[q1q2cos(q2)q1q1sign(q1)cos(q1)cos(q1+q2)][J11J12k12b1f1kg1kg2]τ2=[q1q2cos(q2)q2q2sign(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. 奇异值分解