【机器人学】机械臂动力学参数辨识仿真
本文以puma560m机械臂为例子进行动力学参数辨识的讲解,puma560m可以在robotic toolbox中找到,这里以它真实机械臂对他的动力学参数进行辨识。
此外这里还有要说的是,机械臂参数辨识其实是一个系统工程,其中和机械、电子、嵌入式都有着很深的联系,并不是仿真这么简单的。
但是仿真又是很重要的,如果仿真都做不出来,那么实验结果不可能有理论依据,仿真做不出来的,实验也是做不出来的。
本篇文章的思路和我的另一篇是完全一样的,只不过是扩展到了多自由度->【机器人算法】二连杆机器人动力学参数辨识。
仿真环境
因为这里是仿真,所以要有一个仿真环境,这里为了简单直接用matlab中的mdl_p560akb,把他当成真实的机械臂,此外这里再对其进行建模作为真实机械臂的仿真。
下图为“真实”机械臂和仿真结果的对比,其中线是真实机械臂的数据,点是我们仿真出来的数据,可以看出仿真结果完全正确。
线性化
线性化实际上就是将辨识参数分离出来,不考虑关节动力学和不考虑摩擦力,那么一个杆子就有10个待辨识参数,p560就有6*10个待辨识参数。那么动力学公式就可以转化为如下的形式:
其中K就是一个和DH参数和关节位置、速度和加速度有关的矩阵。
一般思路来说我们直接采集实验数据然后,用最小二乘法就可以了:
但是,由于机械臂靠近基座关节的自由度缺失和我们只关心关节轴的力矩的原因(力传感缺失),K.'K是不可逆的。有人说可以用SVD求伪逆云云,但是SVD求得的伪逆是一个没有物理意义的“假”值,用这个值求出的待辨识参数也一定是不真实的,辨识没有意义。
因此我们需要通过转化,使得K.'K可逆,这个过程就是提取最小参数集。
最小参数集
我们不可能辨识出所有的动力学参数,但是我们可以通过提取最小参数集来辨识出动力学参数的线性组合。