鄭涵,俞孟蕻,袁偉
江蘇科技大學電子信息學院,江蘇鎮(zhèn)江212003
目前,許多工程船都安裝了動力定位系統(tǒng)。動力定位系統(tǒng)主要用于在不借助錨泊系統(tǒng)的情況下,通過控制器的計算使船舶依靠自身推進系統(tǒng)抵抗風、浪、流等環(huán)境的影響,以保持在某目標位置或者按照一定的軌跡航行,從而完成各種作業(yè)功能。動力定位系統(tǒng)的主要目的是實現(xiàn)船舶縱蕩、橫蕩和艏搖3個自由度的控制,其優(yōu)點是不受水深的限制,定位精確,機動性強。若要在動力定位系統(tǒng)中建立船舶運動模型,就需確定模型中的參數(shù)值[1]。近年來,系統(tǒng)辨識理論的快速發(fā)展為船舶運動模型的建立提供了新的思路和方法。Fossen等[2]采用的擴展卡爾曼濾波方法已被廣泛用于船舶運動模型參數(shù)的辨識中。隨后,邊信黔等[3]提出了動力定位控制系統(tǒng)模型參數(shù)的離線最速下降尋優(yōu)辨識方法,采用該方法不僅節(jié)約了辨識時間,減少了試驗費用,而且還提高了動力定位系統(tǒng)的工作效率。邢家偉[4]采用遺忘因子最小二乘法與自適應遺傳算法相結合的參數(shù)辨識方法,對船舶運動數(shù)學模型中的慣性矩陣和線性水動力阻尼矩陣進行了辨識,證明該方法對其矩陣的辨識有效、可行。李春風等[5]利用免疫遺傳神經網絡對艦船水動力系數(shù)進行了辨識。丁彥侃[6]提出了一種改進的并行擴展卡爾曼濾波算法,用來辨識船舶運動模型參數(shù)。由于非線性誤差積累等方面的問題,參數(shù)辨識的效果往往不好。本文將根據動力定位系統(tǒng)設計的需要,提出一種辨識效果更好的反饋粒子濾波算法[7-12]來辨識模型中的參數(shù),通過辨識實驗,仿真驗證該方法的有效性和可靠性。
船舶動力定位系統(tǒng)主要控制船舶在水平面的3個自由度的運動,分別為縱蕩、橫蕩和艏搖。為了描述船舶的水平面運動,建立了如圖1所示的坐標系。首先,建立大地(Earth-Centered,Earth-Fixed,ECEF)坐標系 XOY;其次,在船體上建立船體坐標系xoy,坐標平面xoy在水平面內,原點o位于船舶重心處,ox軸指向船艏,oy軸指向船舶右舷正橫方向。
圖1 兩種坐標系的定義Fig.1 The definition of ECEF coordinate system and body coordinate system
以船的重心為參考點,根據船舶操縱性理論和動力定位系統(tǒng)的特征,建立船舶數(shù)學模型[13]:
式中:TKμ為推進器、舵的控制力和力矩矢量,其中T為實船控制配置矩陣,μ為由實船操縱中給出的控制命令,K為待辨識的推進器系數(shù)矩陣;w為由風、浪、流等作用力組成的環(huán)境干擾力;,包括大地坐標下的位置和艏搖角度ψ;,包括船舶在隨船坐標系下的縱蕩速度u、橫蕩速度υ和艏搖角速度r;R(ψ)為大地坐標系和隨船坐標系的轉換矩陣,
M,D分別為質量矩陣和阻尼參數(shù)矩陣,
式中:m為船舶質量;Iz為隨船坐標系xoy的轉動慣量;xg為船舶質心到隨船坐標原點的距離,將隨船坐標系的原點取在船舶重心上,則為船舶在各個運動方向上的附加質量系數(shù),可以通過理論估算[14]得出;Xu,Yv,Yr,Nv,Nr為船舶在各個運動方向上的水動力阻尼系數(shù),線性水動力阻尼矩陣D為需要辨識的未知量。
由于擴展卡爾曼濾波的非線性誤差積累問題,參數(shù)辨識的精度往往不高[15]。本文將采用一種免重采樣非線性濾波算法——反饋粒子濾波(Feedback Particle Filter,F(xiàn)PF)算法來避免該問題。FPF算法是將每個粒子作為一個可控的隨機系統(tǒng),通過求解歐拉—拉格朗日邊界值問題,得到在Kullback-Leibler距離最小意義下的最優(yōu)反饋控制律,然后再根據前一時刻對粒子自身的狀態(tài)進行校正和更新。不同于粒子濾波,反饋粒子濾波算法不需要重采樣步驟,可以有效避免因估計狀態(tài)維數(shù)增加而導致的計算量增大[15]問題,易于實際工程應用。
假設連續(xù)時間動態(tài)系統(tǒng)的狀態(tài)方程和觀測方程如下:
式中:xt為系統(tǒng)狀態(tài)向量,xt∈Rd,其中d為系統(tǒng)的狀態(tài)維數(shù);zt為觀測向量;zt∈Rm,其中m為系統(tǒng)的觀測維數(shù);ft(·)為系統(tǒng)狀態(tài)方程;ht(·)為觀測方程;wt和rt分別為系統(tǒng)過程噪聲和觀測噪聲。對連續(xù)時間系統(tǒng)采用歐拉法進行離散化處理,粒子的離散化方程為
式中:Kt為一個d×m維的矩陣;p=1,2,3,…,d;q=1,2,3,…,m;分別為系統(tǒng)的狀態(tài)預測向量和觀測預測向量:
由以上FPF的算法公式可以看出,F(xiàn)PF基于誤差更新的反饋增益控制結構仍然存在,其與線性卡爾曼濾波(Linear Kalman Filter,LKF)的反饋增益結構對比如圖2所示。
圖2 反饋增益結構比較Fig.2 Comparison of feedback gain structure
為便于進行實驗,將式(1)、式(2)中的船舶運動數(shù)學模型解耦,分離出縱蕩運動數(shù)學模型以及橫蕩與艏搖運動數(shù)學模型。船舶在僅主推進器工作的情況下采用縱蕩運動數(shù)學模型,在僅側推進器工作的情況下采用橫蕩與艏搖運動數(shù)學模型。分別對這2個模型進行參數(shù)辨識海上實驗,記錄船舶在這2種狀態(tài)下的實驗數(shù)據。利用數(shù)學模型和實驗數(shù)據,在Matlab平臺上編寫FPF算法程序,進行仿真實驗。
船舶只使用主推進器,使船舶縱向前進,辨識縱蕩阻尼參數(shù)Xu和2個主推進器系數(shù)k1,k2。
由船舶運動數(shù)學模型分離出的縱蕩運動模型,得到狀態(tài)方程和觀測方程為
式中:u為狀態(tài)變量;μ1為輸入變量;z1為輸出變量;w1,r1分別為縱蕩運動模型中的過程噪聲和觀測噪聲;Xu與K1為需要辨識的參數(shù)。
船舶只使用側推進器,使船舶橫向前進并產生艏搖角度,辨識橫蕩與艏搖阻尼系數(shù)Yv,Yr,Nv,Nr和側推進器系數(shù)k3。
由于橫蕩與艏搖運動的速度項和加速度項的系數(shù)有耦合,為便于求解,引入了一個動量h,定義h=Mv。從船舶運動數(shù)學模型中分離出橫蕩與艏搖運動模型,得到狀態(tài)方程和觀測方程為
其中,
式中:hvr為狀態(tài)變量;μvr為輸入變量;zvr為輸出變量;wvr,rvr分別為橫蕩與艏搖運動模型中的過程噪聲和觀測噪聲;矩陣Dvr與Kvr為需要辨識的參數(shù)。
本實驗數(shù)據由一艘大型自航耙吸挖泥船“新?;?”號于海上實驗中獲得。該船總長128 m,型寬25.6 m,型深9.2 m,設計吃水6.8 m,總載重量13 710 t,滿載航速15 kn。推進系統(tǒng)由2個主推進器和1個側推進器組成。選取合適的實船數(shù)據600組,得到船舶在固定坐標系的位置(X,Y),船的艏搖角度ψ,船舶航速ν,左、右兩側主推進器推力μ11和μ12,以及側推進器推力μvr。設置采樣間隔時間Δt=0.1 s,粒子數(shù)N=500,過程噪聲方差Q=0.1Id×d,觀測噪聲方差R=0.01Im×m。
采用FPF算法分別進行縱蕩辨識實驗及橫蕩與艏搖辨識實驗,辨識結果如表1所示。
表1 參數(shù)辨識結果Table 1 Parameter identification results
分別采用FPF和擴展卡爾曼濾波(Extended Kalman Filter,EKF)這2種算法對推進器系數(shù)k1,k2,k3進行辨識,辨識結果如圖3所示。
圖3(a)和圖3(b)中的k1,k2由縱蕩模型實驗得出,圖3(c)中的k3由橫蕩與艏搖模型實驗得出。由圖3可以看出,F(xiàn)PF算法的振蕩幅度較EKF算法小很多,在遞推100次左右趨于平穩(wěn),而EKF算法則在遞推200次左右才趨于穩(wěn)定,且圖3(b)中顯示,EKF算法在趨于穩(wěn)定之后仍然存在明顯的波動??梢?,F(xiàn)PF算法的收斂速度更快,穩(wěn)定性更好。
圖3 參數(shù)值k1,k2,k3的仿真結果對比Fig.3 Comparison of simulation results ofk1,k2,k3
通過對模型參數(shù)的估計,建立船舶運動數(shù)學模型,用模型進行運動仿真。由于實驗結果的數(shù)值較大,將仿真值與實測數(shù)據進行對比不易于觀察,因此,繪制了如圖4所示的二者的差值仿真圖。在縱蕩實驗中得到船舶運動距離和航速的仿真值,然后與實測數(shù)據進行對比得到距離差值和航速差值;在橫蕩與艏搖實驗中得到船舶運動距離和艏向角的仿真值,然后與實測數(shù)據進行對比得到距離差值和艏向角差值。
仿真結果表明,在采用FPF參數(shù)辨識方法建立的船舶運動模型中,仿真值與實測值之間的差值穩(wěn)定在較小范圍內,具有可靠性。圖4(a)中,由于在實驗數(shù)據記錄等過程中產生的誤差峰值點數(shù)量較少,故忽略不計。
圖4 仿真值與實測值的差值圖Fig.4 Differential chart between simulated values and measured values
本文針對傳統(tǒng)擴展卡爾曼濾波方法的不足,提出了一種新型的FPF算法并應用到了船舶運動數(shù)學模型的參數(shù)辨識中。分離船舶運動模型,建立縱蕩運動模型及橫蕩與艏搖運動模型并分別進行辨識實驗。通過Matlab仿真,得到運動模型里待辨識的推進器推力系數(shù),發(fā)現(xiàn)辨識的收斂速度更快,穩(wěn)定性更好,證明了該算法的有效性。實驗結果表明,本文所提出的FPF算法能夠較好地應用到船舶運動數(shù)學模型的參數(shù)辨識中,可使其辨識效果與真實值更接近。該算法可靠,能夠滿足船舶模型參數(shù)辨識的需要。