基于UKF的无人艇操纵响应模型的参数辨识*
2019-10-29褚式新茅云生董早鹏
褚式新 茅云生 董早鹏 杨 鑫 黄 铖
(武汉理工大学交通学院1) 武汉 430063) (武昌船舶重工集团有限公司2) 武汉 430060)
0 引 言
针对无人艇(unmanned surface vessel,USV)的应用和研究日益深入,USV也更加智能化,其中对USV的操纵性精确预报是提高USV智能化必要的步骤,而对USV操纵性的预报的精确性取决于获取预报模型的参数的准确性.
目前通过系统辨识获取模型参数的方法已广泛被学者们认可,而卡尔曼滤波算法是辨识中一种常用算法,且在模型参数获取上已取得了众多成果.霍聪等[1]利用设计拓展Kalman滤波的相关算法辨识了船舶自由横摇模型的参数,辨识结果和仿真实验结果有很好的匹配性;童余德等[2]在Matlab平台上设计了卡尔曼滤波的辨识算法,并与最小二乘法进行对比,证实了通过卡尔曼滤波算法辨识结果的优越性;谢朔等[3]进一步发展卡尔曼滤波算法,提出采用多新息并引入遗忘因子的卡尔曼滤波算法辨识了船舶操纵响应模型,并用实验证实了算法的优越性;Julier等[4]进一步发展卡尔曼滤波算法,提出采用无迹变换的方式消除EKF(extended kalman filter,EKF)算法线性化带来的误差,提出采用无迹卡尔曼滤波(unscented Kalman filter,UKF)算法改进常用的EKF算法用于参数辨识;文献[5-6]进一步应用UKF算法,实现了线性模型和非线性模型的参数识别,并证明了UKF算法在辨识中的泛化性;文献[7]综合对比了EKF算法和UKF算法在辨识同一模型中的差异,并在仿真实验中证明,UKF算法无论在辨识过程中的收敛性和辨识结果的精确性上来说,都优于EKF算法.但是目前在USV操纵模型的辨识上,研究UKF算法的文献并不多,随着对USV操纵性越来越精确的要求,利用EKF算法辨识获取的参数将不再满足精度需求,应用UKF算法辨识USV操纵模型参数将有利于提升USV操纵性预报的精度.
1 无人艇操纵性响应模型
USV在水面航行时,为反映USV的操纵响应过程,对USV运动进行建模,通过简化水动力导数,将操纵响应模型简化为[8-9]
(1)
式中:r为角速度;δ为舵角;T1,T2,T3为时间常数,表示应舵性和航向稳定性;K为舵角增益;δr为压舵角.由于在推导式(1)过程中某些高阶非线性项在低速小扰动条件下被舍去了,但是随着USV快速性的提升,非线性项值逐渐增大,为保证操纵响应模型的适用性,式(1)必须加上非线性项,以满足USV在各种情况下的操纵响应预报,综上,USV操纵响应模型为
(2)
式中:α为非线性项系数.
2 无迹卡尔曼滤波算法(UKF)
UKF算法是卡尔曼滤波算法的另一种拓展算法,它是通过估算每时刻状态矩阵的方式进行参数辨识,通过给定一个初始状态量,然后将均值和协方差进行无迹变换,得到下一时刻状态量,当状态矩阵中参数量稳定时,即为参数的辨识值.UKF算法的步骤可以通过下式描述:
1) 设定初始状态
(3)
(4)
2) 计算样本点
(5)
3) 时间状态更新
(6)
(7)
(8)
(9)
(10)
4) 测量状态更新
(11)
(12)
K=PxyPyy-1
(13)
(14)
(15)
(16)
(17)
(i=1,2,…,2L)
(18)
3 基于UKF算法的参数辨识
3.1 数据采集
在Matlab平台上开展20°Z形操纵运动仿真实验,采用文献[10]中的USV模型参数数据,见表1.
表1 USV二阶非线性响应模型参数
基于工程上常用的四阶龙格-库塔(Runge-Kutta)法进行数值仿真,并将仿真结果绘制见图1.
ψ-向角;δ-舵角;γ-角速度图1 20°Z形操纵实验仿真数据
3.2 参数辨识
为满足辨识需求,需要将模型离散化,使用前向差分法处理式(2),处理过程为
(19)
(20)
(21)
(22)
式中:下标t为时刻;Δt为时间间隔,设yt=ψt+1-ψt.将式(19)~(21)代入式(2)中,得到
(23)
进一步可以表示为
Zt=Htθ
(24)
式中:Zt为输出矩阵;Ht为输入矩阵;θ为参数矩阵,具体表达式为
Zt=[yt+2-2yt+1+yt]
(25)
(26)
(27)
状态矩阵由输出量与待辨识参数组成,设
(28)
式中:x1为输入值;x2-x7为参数矩阵中的6个参数.
初始值设定为
(29)
(30)
设状态转移矩阵为
Ft=
(31)
观测矩阵为
(32)
噪声调整矩阵为
(33)
噪声R,Q设定为数值较小的正态分布随机数矩阵.
[1]The American people will have to pay higher prices for the same consumer goods.In a sense,their earnings will be hollowed out.If a trade war breaks out,the United States will hemorrhage jobs.(2018.4.9)
各参数辨识结果随UKF算法迭代次数的变化见图2.
图2 x2~x7辨识值
由图2可知,UKF是一种有效的辨识算法,在辨识过程中,各个参数均在迭代50次之后收敛,且收敛效果很好.辨识结果数据见表2.
表2 各参数在UKF算法下的收敛值
通过参数矩阵中系数的变换公式可得UKF最后的辨识结果见表3.
表3 USV二阶非线性响应模型参数辨识值
由表3可知,基于UKF算法辨识USV二阶非线性响应模型参数结果均比较接近原始值,辨识误差较小,证明UKF算法具有一定的泛化性,能有效的辨识该模型参数,且具有一定精度.
4 实验验证
UKF算法在辨识USV二阶非线性操纵响应模型参数时拥有较高精度,辨识结果能有效的预报USV操纵性.因USV在海上航行时面临复杂的环境,有时需要做复杂的操纵运动,因此,为更好的验证上述结论,在Matlab平台上开展10°,20°,30°正弦和Z形两种操纵仿真实验,比较基于辨识结果与原始值之间操纵实验中艏向角的差异,以验证UKF算法在预报USV各种操纵运动中的艏向角变化,见图3.
图3 实验艏向角对比图
UKF是一种泛化能力较强的算法,能应用于各种模型的参数辨识中,在辨识USV二阶非线性操纵响应模型参数时,其辨识结果与真实值较为接近,在预报USV的艏向角时与原始艏向角变化较为拟合,综上,基于UKF算法对USV二阶非线性响应模型的辨识结果较为可靠,能有效的预报USV的操纵性.
5 结 论
1) UKF算法是一种泛化能力较强的算法,针对不同模型的辨识,就能取得较好结果,且在辨识过程中,迭代次数较少,收敛性好.
2) UKF是一种精度较高的算法,基于其辨识结果所开展的操纵性中艏向角的变化与基于原始数据USV的操纵性实验中艏向角的变化较为拟合,能有效的预报USV的操纵性.
3) 在实验证明阶段,发现提高实验的操纵角度也能微小的提高USV的预报精度;即在UKF辨识结果基础上,提高操纵实验最大角度能使艏向角变化能更切合实际操纵艏向角的变化.