呂幫俊 黃 斌 明廷濤 彭利坤
(海軍工程大學(xué)動力工程學(xué)院1) 武漢 430033) (上海地區(qū)裝備修理監(jiān)修室2) 上海 200136)
在潛艇或水下航行器設(shè)計過程中,必須對其操縱和控制性能進(jìn)行系統(tǒng)的仿真和測試,這些都依賴于精確數(shù)學(xué)模型的建立.而水下航行器數(shù)學(xué)模型中大量的水動力和力矩項,將顯著影響其性能預(yù)報結(jié)果,因此必須對描述其水動力和力矩的系數(shù)進(jìn)行準(zhǔn)確估計[1].在設(shè)計階段,模型試驗和計算流體動力學(xué)(computational fluid dynamics,CFD)是獲取水動力系數(shù)的主要手段,對于實際的水下航行器來說,實尺度試驗結(jié)果無疑是最為可靠與可信的,但由于其相對較高的成本而不受青睞.水下航行器運動模型中的水動力系數(shù)主要可分為兩類,其中的慣性類水動力系數(shù),也即附加質(zhì)量通??梢圆捎眉?xì)長體理論進(jìn)行估算,且能獲得足夠的精度,因此,影響模型預(yù)報精度的核心是粘性類水動力系數(shù),尤其是其中的一階項也即水動力導(dǎo)數(shù)對模型計算結(jié)果的影響尤為突出[1],大量的研究工作致力于解決這一具有挑戰(zhàn)性的問題.其中,系統(tǒng)識別(system identification,SI)理論,以相對較小的代價即可在線或離線辨識出高精度的水動力系數(shù),成為水下航行器設(shè)計階段獲取水動力系數(shù)的一種強(qiáng)大且實用的方法[2-4].將基于SI理論的辨識方法與水動力系數(shù)測試或自航模試驗相結(jié)合,已成為利用試驗數(shù)據(jù)建立系統(tǒng)精確數(shù)學(xué)模型的有力手段[5].
Kalman[6]基于兩步貝葉斯過程,即預(yù)測更新與測量更新,提出了卡爾曼濾波器(Kalman filter,KF),成為線性系統(tǒng)最優(yōu)化自回歸數(shù)據(jù)處理算法.然而,大多數(shù)水下航行器的運動方程均存在一定程度的非線性,無法直接應(yīng)用傳統(tǒng)KF.擴(kuò)展卡爾曼濾波(extended Kalman filter,EKF)的提出使得卡爾曼濾波理論的應(yīng)用拓展到非線性領(lǐng)域,EKF的基本思想是利用泰勒展開將非線性系統(tǒng)線性化,使得原有理論繼續(xù)適用于非線性系統(tǒng),而此時的EKF成為一種次優(yōu)濾波.Abkowitz[7]將其應(yīng)用于船舶試驗試航中,提供了一種“測量”船舶水動力系數(shù)的方法,并驗證模型方程的準(zhǔn)確性.EKF的計算精度依賴于線性近似的有效性,如果線性化處理不當(dāng)或是系統(tǒng)具有強(qiáng)非線性將會引起算法發(fā)散[8].Julier 等[9]結(jié)合無跡變換與卡爾曼濾波提出了無跡卡爾曼濾波(unscented Kalman filter,UKF)方法,避免了 EKF 線性簡化及求解雅克比矩陣等問題,被廣泛運用于非線性系統(tǒng)識別.Sabet等[10]采用UKF來估計AUV空間運動模型中的未知增廣狀態(tài)量(包含10個耦合水動力系數(shù)),并與EKF進(jìn)行比較,表明UKF無論是在估算精度還是收斂速度方面均優(yōu)于EKF.Chowdhary等[11]研究了擴(kuò)展UKF、簡化UKF以及EKF等三種算法對于飛行系統(tǒng)參數(shù)識別的有效性,通過對比發(fā)現(xiàn),三種算法在估算能力上相差無幾,UKF在收斂時間和估計可靠性方面具有一定的優(yōu)勢,但要花費更多的計算代價,而EKF算法始終可以返回高質(zhì)量的計算結(jié)果,并且在計算需求方面要求最低.褚式新等[12]采用UKF算法對USV二階非線性操縱響應(yīng)模型參數(shù)進(jìn)行了辨識,得到與真實值較為接近的結(jié)果,進(jìn)而對USV的操縱性進(jìn)行了有效預(yù)報.VAN等[13]對UKF算法進(jìn)行優(yōu)化提出了SRUKF,采用QR和Cholesky分解等兩種高效的矩陣運算,將UKF算法進(jìn)行N維未知參數(shù)向量估計時的計算復(fù)雜度由O(N3)降低到O(N2).Belanger等[14]采用SRUKF算法對潛艇標(biāo)準(zhǔn)運動方程中的全部120多個水動力系數(shù)進(jìn)行了辨識,計算結(jié)果的平均誤差僅約0.2%,具有很高的辨識精度.因此,目前已開展研究集中在水下航行器空間運動方程水動力系數(shù)的識別,由于模型具有強(qiáng)非線性,一般都認(rèn)為UKF或SRUKF算法比其他算法更具優(yōu)勢.本文針對水下航行器垂直面機(jī)動非線性數(shù)學(xué)模型中的水動力導(dǎo)數(shù)辨識問題,建立了參數(shù)辨識模型,分別采用EKF和SRUKF算法對垂直面運動影響最為顯著的6個參數(shù)進(jìn)行了辨識,并對辨識結(jié)果進(jìn)行了分析比較.
采用國際拖曳水池會議(ITTC)推薦以及造船與輪機(jī)工程學(xué)會(SNAME)術(shù)語公報的體系[15],描述水下航行器空間運動的坐標(biāo)系和主要參數(shù)見圖1.
圖1 描述水下航行器運動的坐標(biāo)系和主要參數(shù)
對Gertler發(fā)表的潛艇標(biāo)準(zhǔn)運動方程進(jìn)行簡化,只考慮垂直面的升沉速度w,縱傾角速度q,縱傾角θ,深度ζ,輸入控制量首舵角δb和尾舵角δs,同時假設(shè)水下航行器在垂直面內(nèi)作弱機(jī)動,保持較低的航速u=u0不變,w、q、θ、δb、δs為小量,得到垂直面三自由度運動方程.
(1)
(2)
(3)
(4)
表1 模型艇參數(shù)值
表2 無因次水動力系數(shù)及測定值
對于一個實際的非線性系統(tǒng),通常采用連續(xù)-離散混合濾波方法,即采用連續(xù)的狀態(tài)估算模型與離散的測量采樣模型
(5)
y(k)=h(x(k),v(k))
(6)
式中:x∈Rn為狀態(tài)向量;u為輸入向量;y∈Rm為觀測向量;p∈Rl為未知參數(shù)向量;f(·)為系統(tǒng)動力學(xué)模型方程;y(·)為測量方程;k為離散的時間序列;w(t)≈N(0,Q)為過程噪聲向量,v(k)≈N(0,R)為第k步的測量噪聲向量,同時假定w(t)和v(k)都為均值為零的白噪聲且彼此不相關(guān).
參考式(5)~(6)給出的狀態(tài)估算和測量采樣模型,將式(1)~(4)所描述的水下航行器垂直面三自由度運動方程改寫成矩陣形式
(7)
y=[θ,w,q]T
(8)
E=T-1S2,F(xiàn)=T-1S3
式(7)給出的運動模型是連續(xù)的,要通過計算機(jī)實現(xiàn)未知參數(shù)的在線估計,或是根據(jù)試驗數(shù)據(jù)進(jìn)行未知參數(shù)的迭代估計時,必須對模型進(jìn)行離散化處理
(9)
式(9)中數(shù)值積分可以采用四階龍格庫塔積分算法
式中:b1=f(xk,uk,p)Δt;b2=F(xk+0.5b1,uk,p)Δt;b3=F(xk+0.5b2,uk,p)Δt;b4=F(xk+b3,uk,p)Δt;積分步長Δt=t(k+1)-t(k).
當(dāng)系統(tǒng)存在隨機(jī)擾動和傳感器噪聲的情況下,EKF可以最優(yōu)地估計非線性系統(tǒng)中的狀態(tài)變量.為了對未知參數(shù)進(jìn)行估計,通常采用的方法是將狀態(tài)參數(shù)向量進(jìn)行擴(kuò)展,即把待識別參數(shù)作為額外的狀態(tài)變量來進(jìn)行估計
(11)
(12)
式中:擴(kuò)展?fàn)顟B(tài)向量x*=[xT,pT]T∈Rn+l;0和I分別為零矩陣和單位陣;F(·)為采用擴(kuò)展向量時的系統(tǒng)動力學(xué)模型方程.
通過EKF進(jìn)行參數(shù)估計時分為兩個步驟:第一步為預(yù)報,主要計算狀態(tài)量以及狀態(tài)誤差協(xié)方差;第二步為測量更新,計算出所構(gòu)造的擴(kuò)展卡爾曼濾波器的增益,進(jìn)行狀態(tài)誤差協(xié)方差矩陣的更新,以及對所預(yù)報的狀態(tài)值進(jìn)行更新.
1) 狀態(tài)預(yù)測
(13)
(14)
2) 測量更新
(17)
采用SRUKF進(jìn)行參數(shù)估計時,狀態(tài)預(yù)測與測量更新等基本步驟與EKF類似,但具體實施細(xì)節(jié)有一定差異.與EKF相比,SRUKF不需要對非線性系統(tǒng)方程進(jìn)行任何線性化處理,而是利用概率分布構(gòu)造Sigma點采樣的方式,保持了原系統(tǒng)的非線性特征.此外,相對于UKF算法,SRUKF采用了高效的QR分解和Cholesky分解矩陣運算,極大的降低了計算復(fù)雜度.
1) Sigma點采樣和狀態(tài)預(yù)測
(18)
(19)
Dk|k-1=f(xk,uk,Pk|k-1)
(21)
(22)
2) 測量更新
(23)
(24)
(25)
(26)
(27)
U=κkSdk
(28)
(29)
為了比較EKF和SRUKF兩種算法進(jìn)行水下航行器水動力系數(shù)辨識時的性能差異,采用模型艇作為仿真算例,相關(guān)參數(shù)見表1.進(jìn)行參數(shù)辨識時所需的測量數(shù)據(jù)由水下航行器垂直面運動模型仿真產(chǎn)生,式(1)~(4)中的水動力系數(shù)取表2所列模型艇的無因次水動力系數(shù)測定值.
為了準(zhǔn)確、迅速的進(jìn)行水動力參數(shù)辨識,需要使水下航行器以一定的形式進(jìn)行機(jī)動,盡可能激發(fā)垂直面的全部水動力分量,通常采用z型機(jī)動或深度、縱傾周期變化的振蕩模式.本文仿真時取無人航行器航速u0=1.1 m/s,采用周期性操舵來實現(xiàn)上述運動,首、尾升降舵按照正弦規(guī)律操舵δb=δsin(0.03t),δs=δsin(0.04t),分別取舵角幅值δ=5°和10°,仿真時長t=3 000 s,步長Δt=0.1 s,水下航行器在垂直面的運動軌跡見圖2,為了便于比較,兩種算法采用同一組測量數(shù)據(jù)作為水動力系數(shù)辨識算法的輸入.
圖2 分別采用5°/10°幅值正弦規(guī)律操舵時無人水下航行器狀態(tài)參數(shù)變化情況
圖3 無因次水動力系數(shù)隨時間收斂情況
此外,從算法的平均收斂時間比較來看,文獻(xiàn)[15]應(yīng)用SRUKF算法辨識潛艇標(biāo)準(zhǔn)運動方程水動力系數(shù)所需時間約2 500 s,由圖3可知:當(dāng)操舵幅值分別為5°/10°時,采用SRUKF算法,全部水動力系數(shù)收斂到固定值所需時間約2 500 s/3 000 s,而EKF算法僅需要約100 s/600 s即可收斂到固定值.因此,EKF算法相較于SRUKF具有更快的辨識速度,且兩種算法都受到操舵幅值的影響,也即水下航行器機(jī)動強(qiáng)度越大,水動力系數(shù)收斂速度越快
從理論上講,SRUKF算法采用無跡變換,采樣點沒有經(jīng)過線性化,也沒有忽略高階項,在求解非線性系統(tǒng)時具有更高的精度.但由仿真結(jié)果來看,對于本算例所涉及的水下航行器垂直面水動力導(dǎo)數(shù)辨識,無論是辨識誤差還是收斂速度,EKF都優(yōu)于SRUKF.分析其主要原因,是水下航行器采用低航速在垂直面正常機(jī)動時,采用非線性方程和線性方程的求解結(jié)果誤差在5%之內(nèi),可以認(rèn)為其垂直面運動模型具有較好的線性度,因此采用EKF算法對于其水動力系數(shù)辨識具有很好的效果.盡管采用SRUKF與EKF算法用于參數(shù)估計時,算法復(fù)雜度都為O(N2),但是EKF算法的收斂速度要明顯優(yōu)于SRUKF算法.
表3 無因次水動力系數(shù)辨識誤差
文中分別采用基于卡爾曼濾波原理的EKF和SRUKF算法,以模型艇在垂直面正弦操舵機(jī)動時的縱傾角、垂速和縱傾角速度變化作為測量輸入,對水下航行器垂直面運動模型中的6個核心水動力導(dǎo)數(shù)進(jìn)行了系統(tǒng)辨識,取得了理想的辨識效果.盡管SRUKF算法理論上具有更高的計算精度,但通過仿真研究發(fā)現(xiàn),SRUKF算法的辨識精度受模型艇機(jī)動強(qiáng)度的影響較大,對于線性度較高的水下航行器垂直面正常機(jī)動模型,無論是辨識精度還是收斂速度,EKF算法都要優(yōu)于SRUKF,更適用于線性水動力系數(shù)的在線識別.