【机器人算法】机器人动力学参数辨识
本篇博文以二连杆系统为例子,讲解机器人的动力学参数辨识,并进行仿真,由于本篇主要是进行仿真因此没有实验数据处理的过程。
本篇博文主要参考了霍伟的《机器人动力学与控制》。
机器人动力学参数主要步骤:
-
牛顿欧拉动力学建模 向外迭代线性化 提取最小参数集 激励轨迹设计 最小二乘法求出动力学参数
动力学建模的方法不用赘述,请参见《机器人学建模、规划与控制》
其中在向外迭代的过程中,对标黄部分进行线性化处理:
于是就可以得到动力学方程的线性化的形式。
这个时候并不能直接使用最小二乘法,因为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
仿真后的结果:
可以看出辨识结果精确有效。