导语:两周的动力学参数辨识,使我学到很多,但遇到的问题更多,在网上有很多六关节动力学参数辨识的资料,但大家对于最小惯性参数集的推导都不详细,不能得到最小惯性参数集的系数和对应的回归矩阵,很多东西都是直接给出来了,这期间我自己搭建模型,写代码,目前成功辨识出来第六关节的惯性参数,但在辨识第五关节的惯性参数时遇到一点问题,正在解决中,下篇推出全部关节的辨识

动力学参数辨识过程

熟悉动力学参数辨识的人都明白辨识过程,过程如下,不再赘述

辨识过程:1.建立机械臂动力学模型
2.机器人动力学模型线性化并整理出最小参数集(难点)
3.激励轨迹的设计及其优化
4.动力学模型的参数辨识及其验证

第一步 建立机械臂动力学模型

动力学方程

M(q)q¨+c(q,q˙)+G(q)=τ

三种建模方法,牛顿-欧拉动力学建模方法应用最广泛,便于编程实现,网上也有资源,不多说。

第二步 机器人动力学模型线性化并整理出最小参数集

将第一步的动力学模型线性化如下:

Φ(q,q˙)θ=τ

θ要辨识的惯性参数,Φ矩阵参数矩阵,qq˙的方程

我参考的书籍是:机器人动力学与控制第二章第五节.机器人的最小惯性参数及其应用
这本书可以说是动力学参数辨识的鼻祖,是最原始的讲解,对于何种机械臂,最小惯性参数应该是多少,这本书里面均有着详细的讲解,网上也有资源,可以免费下载。

对于6R机械臂,输入六个关节的DH参数,输出最小参数集为36个,参数如下

注:这里暂未考虑摩擦系数,只有36个参数,如果考虑到摩擦,则有36+12=48个参数。

第三步 激励轨迹的设计及其优化

目前工业机器人动力学参数辨识大都采用傅里叶级数型的轨迹,这里我选择

5*cos(t) + 10*cos(2*t)

作为激励轨迹,轨迹的优化暂不考虑。

第四步 动力学模型的参数辨识

在进行这步之前,需搭建好你的机械臂控制器,机械臂动力学模型,辨识模块(这里采用RLS辨识)

机械臂控制器模块:根据动力学模型建立的滑模控制器,能够跟踪理想的关节角度,关节角速度。
动力学模型:牛顿欧拉动力学方程或者凯恩方法建立。
辨识模块:递推最小二乘法辨识
simulink仿真框图如下,其中包括机械臂动力学模型,控制器设计,牛顿欧拉动力学模型,第六关节辨识模块。

机械臂动力学模型中各关节的惯性参数真实值为:

我使第五,六关节的关节角为激励轨迹5cos(t) + 10cos(2*t),其余四个关节角为0,启动仿真,仿真结果如下
六个关节角的运动角度曲线:

可以看到第五六关节与期望轨迹吻合,且其余四个关节角均保持在1e-11次方左右,可认为是0,达到了角度控制的效果,控制器设计良好。

第六关节惯性参数辨识结果:

在参数辨识图中,第一个小图辨识的值为L_6xx-L_6yy的组合值,第二个小图辨识的值为L_6xy,第三个小图辨识的值为L_6xz,第四个小图辨识的值为L_6yz,将辨识结果与真实值比较可得,辨识效果很好,均得到准确的辨识。

第一个小图辨识的值为L_6zz,第二个小图辨识的值为l_6x,第三个小图辨识的值为l_6y,比较可得,辨识准确,第六关节惯性参数得到了准确的辨识。

遇到问题:在辨识出第六关节的惯性参数后,应该将辨识值作为已知值代入到第五关节的辨识程序中来辨识第五关节的惯性参数,但我遇到的问题是线性化后的第五关节的力矩和线性化之前的牛顿欧拉动力学的力矩不相等,导致第五关节惯性参数不能正确辨识,现正在调试中,期待不久能够解决。

未完待续…