本篇博文以二连杆系统为例子,讲解机器人的动力学参数辨识,并进行仿真,由于本篇主要是进行仿真因此没有实验数据处理的过程。
本篇博文主要参考了霍伟的《机器人动力学与控制》。
机器人动力学参数主要步骤:
- 牛顿欧拉动力学建模
- 向外迭代线性化
- 提取最小参数集
- 激励轨迹设计
- 最小二乘法求出动力学参数
动力学建模的方法不用赘述,请参见《机器人学建模、规划与控制》

其中在向外迭代的过程中,对标黄部分进行线性化处理:

于是就可以得到动力学方程的线性化的形式。

这个时候并不能直接使用最小二乘法,因为Y矩阵不满秩,并且如果使用SVD等方式进行伪逆解处理时,由于Y矩阵的条件数较大,Y矩阵是一个病态矩阵,这就导致伪逆计算的结果十分不精确,并且没有实际的物理意义,比如说将质量计算为负值等等的。因此需要对观测矩阵Y和惯量参数矩阵进行修改。
这就涉及到了最小参数集的提取,最小参数集的提取方法见《霍伟》P97页。
对于二连杆系统,其最小参数集为:

Y矩阵和各个关节的位置、速度和加速度有关。因此激励轨迹将直接影响到Y.'*Y求逆时候的可信度,因此需要优化激励轨迹,激励轨迹的优化一般是寻找约束非线性多变量函数的最小值,本篇博文由于没有优化计算量的原因,没有进行激励轨迹的优化。
优化后可以直接使用最小二乘法:

本篇博文二连杆的参数为
subs(p,{'L1','L2','m1','m2','I1','I2','c1x','c1y','c2x','c2y','Izz1','Izz2'},{0.3,0.3,0.5,0.5,5.4e-3,5.4e-3,0.15,0,0.15,0,0.016650,0.016650})
因此真实连杆的最小参数集为:
0.06165
0.225
0
0.01665
0.075
仿真后的结果:

可以看出辨识结果精确有效。
这篇博文输入自由度低的,高自由度的请参考我的另一篇博文->【机器人算法】机械臂动力学参数辨识仿真