基于改进细菌觅食算法的摩擦参数辨识方法
2022-07-11周昊玥张建忠
周昊玥,张建忠
(东南大学 电气工程学院,南京 210096)
0 引 言
在高精度伺服系统中,非线性摩擦力使系统的精度和动态性能下降,在低速区域造成跟踪畸变等不良结果。为了提高伺服系统的性能,需要对非线性摩擦力进行补偿。在各类摩擦补偿方法中,基于摩擦模型的补偿方法能快速精确地进行摩擦补偿,是较常用的摩擦补偿方法。
在基于摩擦模型的补偿方法中,摩擦模型的选择及其参数的辨识对补偿效果至关重要。目前,使用较多的是Canudas于1995年提出的LuGre模型[1],该模型能较精确地描述摩擦的预滑动效应、摩擦滞后、Stribeck效应等。由于引入了无法直接进行观测的鬃毛平均形变量来描述摩擦现象,LuGre模型的动态参数辨识较为困难。参数辨识的准确度不高,将出现过补偿或欠补偿现象,无法发挥LuGre模型精度高的优势。针对该研究难点,研究人员提出了多种辨识方法:文献[2]针对LuGre模型的动态参数,提出了基于高增益闭环速度控制的辨识算法;文献[3]提出了合作进化灰狼优化算法,将进化算法的探索能力和灰狼优化算法的开发能力相结合,同时对LuGre模型的所有参数进行辨识;文献[4]提出了智能萤火虫群优化算法用于摩擦参数辨识;文献[5]结合粒子群优化算法和实时编码遗传算法,对LuGre模型进行参数辨识;文献[6]采用遗传算法和Stribeck曲线对LuGre模型的静态参数进行辨识,再由系统的滑前位移曲线计算模型的动态参数;文献[7]采用径向基函数神经网络逼近LuGre模型。但这些常用智能算法的参数辨识策略,包括遗传算法、粒子群、优化算法、神经网络算法等大多存在早熟收敛、容易陷入局部极小值的缺点[8-10]。
Passino于2002年提出的细菌觅食算法(以下简称BFO)具有并行搜索、易跳出局部极小值的特点[11],适用于参数多、模型复杂的LuGre模型参数辨识。针对BFO寻优精度低、收敛速度慢的问题,本文提出了一种改进细菌觅食算法(以下简称IBFO),引入自适应步长方法,根据适应度和位置分量对步长进行调整。在MATLAB/Simulink中模拟了参数辨识过程并验证了参数辨识效果。
1 IBFO算法原理
BFO通过模拟自然界中大肠杆菌的觅食行为求解问题,该算法由趋向、复制、迁徙三种操作组成[12-13]。设细菌种群大小为S;p(i,j,k,l)表示细菌i的位置,其中i=1,2,3,…,S;j、k、l分别为三种操作的次数。设位置空间为M维,则p(i,j,k,l)可用分量表示为[p1(i,j,k,l),p2(i,j,k,l),…,pM(i,j,k,l)]。进行参数辨识时,M即待辨识参数数量,每个细菌的位置表示一组参数辨识值。由适应度J判断细菌位置的优劣。趋向操作中,细菌的位置更新公式:
pm(i,j+1,k,l)=pm(i,j,k,l)+Cm(i)Φm(j)
(1)
式中:pm表示位置向量的第m维分量,m=1,2,3,…,M;Cm(i)表示在该维方向上移动的步长;Φm(j)表示随机单位向量的第m维分量。传统BFO算法中,步长Cm(i)固定不变,为了提高收敛速度和收敛精度,本文提出了自适应步长方法,按如下公式计算步长Cm(i):
(2)
图1 IBFO算法流程图
式中:J(i,j,k,l)为细菌i当前适应度;Jth为适应度阈值;C为固定步长。IBFO算法流程图如图1所示,与BFO相比,IBFO的步长Cm与适应度J、位置分量pm占比正相关。在前期适应度高时,大的步长能够提高搜索效率和收敛速度;在后期适应度低时,小的步长能够提高收敛精度,防止在算法最优点附近振荡。步长与位置分量的大小正相关,能兼顾不同大小参数的收敛精度。
2 基于IBFO的摩擦参数辨识方法
2.1 摩擦模型与摩擦补偿原理
LuGre模型是一种摩擦模型,该模型使用三个数学表达式准确描述了系统转速与摩擦力之间的关系。LuGre模型的数学表达式如下:
(3)
式中:Tf为总摩擦力矩;内部状态量z为鬃毛的平均形变。LuGre模型中含有六个参数:动态参数中,使用鬃毛的刚度系数σ0和微观阻尼系数σ1描述鬃毛形变产生的相互作用力,即预滑动阶段的摩擦力。静态参数中,库伦摩擦力矩Tc表示非零速下的摩擦,与法向载荷成比例,与速度幅值无关。最大静摩擦力矩Ts表示物体从静止到产生相对运动所需的力矩。Stribeck速度ωs描述负斜率摩擦现象。黏性摩擦系数σ2表示接触表面间流体润滑层的黏性行为,与速度成比例[14]。
图2 永磁伺服电机系统控制原理图
分别采用内模控制策略和“有功阻尼”概念设计电流环和转速环的参数[17],则系统模型可表示:
在汽轮机就地仪表起停盘上有盘车自动/手动按钮,盘车电机可以就地启动,也可以在中心控制室远程启动。盘车电机控制逻辑如图1所示[3]。
(4)
式中:α为电流环带宽;β为转速环带宽。LuGre模型确定了摩擦力模型的结构,还需确定模型中的六个参数,才能使用LuGre模型进行摩擦补偿。LuGre模型参数中,静态参数主要描述宏观下的摩擦力,动态参数描述微观下的摩擦力,进行参数辨识时难以同时兼顾,一般分两步进行辨识。
2.2 静态参数辨识
Tf=Tc+(Ts-Tc)e-(ω/ωs)2+σ2ω
(5)
(6)
式中:e1(W1,ωi)表示转速为ωi时摩擦力矩的实际模型Ti和辨识模型Tf(W1,ωi)的误差。定义静态参数辨识的适应度J1:
(7)
2.3 动态参数辨识
由式(3)可知,LuGre模型中,动态参数σ0、σ1与内部状态量z相互耦合,并且z无法直接测量,因此动态参数的辨识较困难。令q轴参考电流为小幅值阶跃信号,此时电磁转矩也为小幅值阶跃变化的量,可以模拟预滑动位移阶段,将电机微小的位移θ看作z,将无法测量的z近似为可测量的θ,从而进行动态参数辨识。近似后,式(3)可用如下微分方程表示:
(8)
由式(8)可见,此时摩擦力矩只与动态参数σ0、σ1、静态参数σ2有关。由于上一步进行了静态参数辨识,σ2为已知参数。由机械运动方程可得:
(9)
(10)
定义动态参数辨识的适应度J2:
(11)
3 仿真验证
3.1 仿真模型与参数
为了验证本文算法的有效性,开展了相关的仿真研究,永磁伺服电机系统的仿真参数如表1所示。
表1 仿真参数
3.2 参数辨识验证
基于图1的IBFO算法,利用MATLAB的m语言编写程序实现参数辨识。首先在电机空载情况下,采集不同转速下的电磁转矩和不同时刻下的角位移。静态参数辨识时,种群大小为200,趋向次数为50,复制次数为10,迁徙次数为4,迁徙概率为0.4,引力深度、引力宽度、斥力深度、斥力宽度均为0.05,Tc∈[0,10],Ts∈[0,10],ωs∈[0,1],σ2∈[0,1]。动态参数辨识时,种群大小为100,趋向次数为30,复制次数为10,迁徙次数为1,迁徙概率为0.3,引力深度、引力宽度、斥力深度、斥力宽度均为0.05,σ0∈[0,106],σ0∈[0,103],辨识结果如表2所示。
表2 参数辨识结果
由表2可见,与BFO相比,IBFO的辨识精度更高,每个参数的误差均有降低,所有辨识误差在3%以内。使用IBFO辨识时,误差较大的是动态参数中的微观阻尼系数σ1,原因是σ1的辨识依赖阶跃响应的动态部分,而动态部分变化非常迅速,因此辨识难度最大。
图3 单个细菌的辨识误差曲线(静态参数)
在静态参数辨识中,观察同一个细菌,BFO和IBFO的误差如图3所示。对比图3(a)与图3(b),IBFO的收敛速度更快、收敛精度更高。由图3(a)可见,由于步长固定,不同大小的参数误差差别较大,其中ωs最小,导致ωs的误差最大,但辨识结果由所有细菌移动过的位置中适应度最小的位置决定,因此ωs最终的辨识误差为42.60%。由图3(b)可见,IBFO每个参数的误差均较小,趋向次数为1500次左右时的波动是迁徙操作造成的,波动后误差能迅速减小,反映了IBFO较高的收敛速度。
在动态参数辨识中,观察同一个细菌,BFO和IBFO的误差如图4所示。对比图4(a)与图4(b),IBFO的收敛速度更快、收敛精度更高。两个动态参数中,鬃毛的刚度系数σ0收敛更快,结合式(8)可知,σ0可由运动停止时的位移进行辨识,σ0辨识的准确度会较大地影响适应度,因此σ0收敛更快。
图4 单个细菌的辨识误差曲线(动态参数)
3.3 摩擦补偿效果验证
按照图2的控制系统原理,在MATLAB/Simulink中构建永磁伺服电机系统仿真模型。基于IBFO参数辨识结果,构建LuGre模型并实现永磁伺服电机的前馈摩擦补偿,从而观测参数辨识和摩擦补偿的效果。为了观察摩擦力矩造成的转速过零死区现象,令伺服系统的参考转速为ω*(t)=6sin(2πt) 。仿真结果如图5所示。可见,摩擦补偿后,转速的过零死区和滞后现象被大幅削弱,跟踪畸变得到大幅削弱,转速跟踪误差最大为0.755 rad/s。
图5 摩擦补偿仿真波形
4 结 语
本文针对LuGre摩擦模型,提出了一种基于IBFO的参数辨识方法,在传统BFO的基础上,引入自适应步长方法,根据细菌适应度和位置分量改变趋向操作中的步长,提高了参数辨识的收敛精度和收敛速度。利用MATLAB建立BFO和IBFO算法,模拟摩擦参数辨识过程,仿真结果表明,IBFO能更好地辨识LuGre摩擦模型的参数。使用BFO辨识参数时,静态参数最大误差为42.60%,动态参数最大误差为10.58%;使用IBFO辨识参数时,静态参数最大误差降至1.08%,动态参数最大误差降至2.90%。利用MATLAB/Simulink构建永磁伺服电机系统仿真模型,使用IBFO辨识的参数进行摩擦补偿仿真,结果表明该辨识结果较大程度地改善了转速过零死区和转速波形畸变现象,进一步验证了IBFO参数辨识方法的有效性。