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