本代码是我的毕设里面的一部分,首先是将SCARA机器人简化成为简单的平面双机械臂模型,对其进行动力学建模,由于SCARA机器人的特性,动力学方程中的重力项可以忽略,最后将动力学方程化简成为AX=B的形式,用递推最小二乘的方法,对其中的惯性参数进行辨识,将模型的惯性参数分为六个未知量,在已知位置,速度,加速度和力矩的情况下,进行递推就可以最终得到辨识的六个参数。
有关递推最小二乘的原理,可以参考刘金琨老师的《系统辨识理论及MATLAB仿真》一书的第三章内容,书中详尽的描述了最小二乘,加权最小二乘,递推最小二乘等一系列基础辨识方法的知识,并附有详尽的代码和注释,很有参考价值。
递推最小二乘的核心公式如下:
关键就是通过之前时刻的估计值,以及下一时刻的估计值,更新增益矩阵K和P阵,一步一步实现递推。在调试的过程中,值得注意的一点是P和theta初值的选取,一共有两种方法,如下所示:
在我的调试中发现,书中提供的代码采用的是第二种方式,即任意假设的方式,尽管随着递推的进行,该初值对于辨识结果的影响会越来越小,但是我实际对比中发现,其效果在迭代了3000次以后还是不尽人意,因此如果不是对计算量又要求的 话,选用第一种方法能都得到更好的结果。
通过调用Robotic