前言:最近在搞神经网络,看到有用神经网络逼近未建模动态的,也有用神经网络来逼近整个模型的,后者即是无模型控制。无模型控制它不需要知道系统的名义模型,直接用神经网络来逼近整个系统,感觉这个方法还蛮厉害的。鉴于此,我将此方法用在了六关节机械臂的模型上,最后的控制效果还不错。

1. 机械臂动力学方程

这里的 f  为摩擦力,d 为外部干扰,τ为关节力矩,动力学建模方法使用导师的凯恩方法,具体代码不再赘述。

2. 控制器设计

在实际工程中,M ,N ,G 矩阵以及摩擦力 f  都是未知的,故这里采用无模型控制方法,即采用三个神经网络来分别逼近 M ,N ,G  矩阵,同时在控制律中加入鲁棒性以抵抗外部干扰。RBF神经网络控制器结构选为6-7-1结构,神经网络的输入为角度和角速度,输出为矩阵的估计值 M ^ ,N ^ ,G ^   。

3. 仿真框图及结果

Simulink仿真框图如下:

仿真结果
六个关节角度跟踪:

六个关节角速度跟踪:

4. 结论

  因为给定轨迹的初值和系统状态的初值不一样,所以跟踪上指定的轨迹需要一点时间,六个关节的角度和角速度能够在大约0.5s内跟踪上cos轨迹,稳定之后,角度的误差大约在10的负三次方,角速度的误差在10的负二次方。由于我更倾向于角度能很快的跟踪上,所以会导致角速度在一开始会变得很大,但很快角速度便迅速的跟踪上指定轨迹。

5. 后续改进

当我把符号函数的系数给的很大时,这样虽然可以使收敛速度加快,但同时由于符号函数的不连续性,也会使得系统的控制输入迅速来回切换,产生大的扰动,所以我的力矩输入扰动较大。
  后续改进是打算结合模糊控制,通过模糊控制来调整符号函数的增益系数,这样可以使得当系统距离平衡点很远时在能保证大的增益系数从而快速靠近,而当靠近滑模面时增益系数会减小,从而减小在滑模面附近的抖动。即增益系数是自适应的,这样就既可以使得系统能很快的跟踪上指定轨迹,也能在跟踪上之后减小增益从而降低控制输入的扰动。