有了前面机器人动力学建模(机器人动力学方程的四种形式)和最小惯性参数集(机器人最小惯性参数集)的基础,明白了离散系统辨识与连续系统辨识的区别,接下来我们就可以开始做动力学参数辨识的工作了。

采用的方法是大家最熟悉的最小二乘法:通过采集N组数据,记录关节位置与力矩,带入到基于最小惯性参数集的动力学方程中,由于Yr'*Yr是满秩的,即可以算出动力学参数向量pr

动力学参数辨识的算法看起来是很容易的,大家一仿真相信效果都好得不行,然而在实践中却步步陷阱,后面会列几点相关的技术细节。

  1. 如何获取Yr

Yr是由角度、角速度与角加速度构成的矩阵,实际中角度可通过位置传感器获取,而角速度与角加速度需通过差分处理,差分会大大的放大噪声,需用低通滤波处理获取;

然而滤波器会引入信号的相位延迟,我们需通过合适的滤波器保证对角度、角速度和角加速度引入相同的时间延时,或者采用离线的无延迟滤波器。

2. 离散系统辨识与连续系统辨识

这个概念需要好好区分下,比较容易使人迷惑,教材中对这块提及的比较少。

3. 激励轨迹

顾名思义,既然是动力学参数,那就得让机器人运动起来,这就需要设计机器人的运动轨迹:通过轨迹激励出相关参数在动力学方程中的作用,这样我们才可以识别出它来,所以该轨迹一般称为激励轨迹。

激励轨迹直接影响Yr矩阵的病态性;举例来说,下图的两个矩阵只有一个元素差1,然而计算出来的结果却天差地别

这本质上是由于左侧矩阵的条件数很大

我们设计激励轨迹的目的,是为了降低矩阵Yr的条件数。关于这部分大家可参考这篇很好的文章:Jan Swevers et al. Optimal Robot Excitation and Identification, IEEE Trans. on Robotics.

4. 辨识结果

首先我们设计出了各关节的激励轨迹,运用最小二乘辨识出动力学参数;下图给出了拟合力矩与实际力矩曲线,在下方的差值曲线中,会存在着误差尖峰值,这本质上是由换向时库伦摩擦力估计误差带来的,因为我们不能准确获知机器人换向的时刻,导致了估计的库仑摩擦力在换向时刻附近存在着大的跳跃。

上:为拟合力矩与实际力矩,下:差值

用其他轨迹的测试结果如下,同样在换向附近会存在着大的跳跃。

上:为拟合力矩与实际力矩,下:差值

5. 总结

  • 我们可以通过严格的牛顿力学理论推导出解析的机器人动力学方程,所以辨识方法围绕着最小二乘思想展开就好,没必要用神经网络等方法,得不偿失。
  • 基于电流环做动力学建模与辨识会受到摩擦力的严重干扰,过于复杂的摩擦力模型并不能从本质上解决电流环的问题,因为这些参数都是时变且与机器人位姿紧密相关的,模型复杂可能会导致泛化能力变差;学术界目前没有合适的方法应对摩擦力,常用的摩擦力模型还是库仑摩擦力+粘滞摩擦力。
  • 其实机器人动力学参数的数目没那么多,国内一些公司宣传动力学时说他们可辨识几百个参数......我认为宣传有点过了,或者摩擦力模型非常复杂。机器人系统辨识已经很成熟了,我们更多的要以学术界的经典论文作为工程问题的依据。
  • 先仿真,后实践。