張 憶, 宋俊才, 李 坤
(中國船舶重工集團(tuán)有限公司第七一○研究所,湖北 宜昌 443003)
艦艇在較高的海況條件下作戰(zhàn)時(shí),艦艇上的武器發(fā)射裝置會隨著海浪的波動產(chǎn)生搖擺,這直接影響發(fā)射裝置發(fā)射角的精度,進(jìn)而影響武器系統(tǒng)整體作戰(zhàn)效能的發(fā)揮。發(fā)射裝置在發(fā)射過程中,發(fā)射角的坐標(biāo)與目標(biāo)位置的坐標(biāo)需要保持相對固定,所以需要對發(fā)射裝置進(jìn)行穩(wěn)定控制。穩(wěn)定控制系統(tǒng)主要是通過姿態(tài)方位參考系統(tǒng)采集艦艇的運(yùn)動姿態(tài),控制系統(tǒng)對運(yùn)動姿態(tài)數(shù)據(jù)進(jìn)行處理和運(yùn)算,輸出控制信號對發(fā)射裝置進(jìn)行控制,從而保持發(fā)射裝置的相對穩(wěn)定。在穩(wěn)定控制系統(tǒng)中姿態(tài)方位參考系統(tǒng)采集姿態(tài)數(shù)據(jù)有一定的采樣周期,數(shù)據(jù)傳輸?shù)椒€(wěn)定控制系統(tǒng)中需要傳輸時(shí)間,所以需要實(shí)時(shí)對艦艇的運(yùn)動姿態(tài)數(shù)據(jù)進(jìn)行預(yù)測。
艦艇運(yùn)動姿態(tài)的預(yù)測主要采用自回歸(Autoregressive Model,AR)模型、灰色GM(1,1)預(yù)測模型、人工神經(jīng)網(wǎng)絡(luò)方法、BP預(yù)測模型、極限學(xué)習(xí)機(jī)方法、長短記憶網(wǎng)絡(luò)、Volterra級數(shù)模型等方法[1-6],大多數(shù)預(yù)測算法具有動態(tài)更新困難、預(yù)測效率差、算法復(fù)雜度高等特點(diǎn),不能滿足本發(fā)射裝置穩(wěn)定控制系統(tǒng)中對于實(shí)時(shí)預(yù)測的效率和計(jì)算需求。Kalman濾波是一種適用于實(shí)時(shí)計(jì)算的遞推線性最小方差濾波器,具有實(shí)時(shí)性高和計(jì)算復(fù)雜程度低的特點(diǎn),可以用于實(shí)時(shí)預(yù)測艦艇的運(yùn)動姿態(tài)。
本文基于Kalman濾波預(yù)測算法,提出了組合Kalman濾波隔點(diǎn)預(yù)測算法對艦艇的橫縱搖運(yùn)動姿態(tài)進(jìn)行實(shí)時(shí)預(yù)測,首先對組合Kalman濾波隔點(diǎn)預(yù)測算法進(jìn)行了介紹,然后采用算法流程調(diào)整法、衰減記憶法和平方根法對預(yù)測算法改進(jìn)優(yōu)化,最后采用Matlab對優(yōu)化前后的算法進(jìn)行仿真實(shí)驗(yàn)。通過對比分析仿真結(jié)果可知,改進(jìn)優(yōu)化的算法解決了運(yùn)動姿態(tài)數(shù)據(jù)因采樣和傳輸產(chǎn)生的延遲問題,滿足發(fā)射裝置對艦艇姿態(tài)實(shí)時(shí)預(yù)測的需求。
姿態(tài)方位參考系統(tǒng)測量的艦艇運(yùn)動姿態(tài)數(shù)據(jù)需要傳輸給控制系統(tǒng),其中數(shù)據(jù)采集和數(shù)據(jù)傳輸存在時(shí)間延遲,因此需要將應(yīng)用當(dāng)前采集數(shù)據(jù)預(yù)測下一點(diǎn)采集數(shù)據(jù)的Kalman濾波預(yù)測法修改為預(yù)測第2點(diǎn)采集數(shù)據(jù)的方法,即Kalman隔點(diǎn)預(yù)測法[7]。將兩個(gè)Kalman隔點(diǎn)預(yù)測法組合起來,稱為組合Kalman隔點(diǎn)預(yù)測法,其預(yù)測周期Tt為數(shù)據(jù)采樣周期的2倍。以數(shù)據(jù)前面的4個(gè)點(diǎn)為已知采樣數(shù)據(jù),組合Kalman濾波隔點(diǎn)預(yù)測算法的原理如圖1所示。
圖1 組合Kalman濾波隔點(diǎn)預(yù)測算法的原理圖
艦艇運(yùn)動姿態(tài)的狀態(tài)方程和量測方程為[8-13]
X(t)=AX(t-1)+BU(t-1)+W(t-1)
(1)
Z(t)=HX(t)+V(t)
(2)
式中,X(t)為艦艇t時(shí)刻的運(yùn)動狀態(tài);A為狀態(tài)轉(zhuǎn)移陣,將t-1時(shí)刻狀態(tài)和t時(shí)刻狀態(tài)聯(lián)系起來;X(t-1)為艦艇t-1時(shí)刻的運(yùn)動狀態(tài);B為艦艇姿態(tài)控制輸入U(xiǎn)(t-1)的增益矩陣;U(t-1)為t-1時(shí)刻可選的艦艇姿態(tài)控制輸入;W(t-1)為艦艇姿態(tài)輸入高斯白噪聲,為零均值、方差陣為Q的不相關(guān)白噪聲;Z(t)為對艦艇運(yùn)動姿態(tài)的測量信號;H為測量矩陣,表示狀態(tài)變量X(t)對測量變量Z(t)的增益;V(t)為測量噪聲,為零均值、方差陣為R的不相關(guān)白噪聲。
預(yù)測估計(jì)的公式為
(3)
(4)
濾波增益矩陣的公式為
(5)
式中,Kg(t)為t時(shí)刻艦艇姿態(tài)的濾波增益矩陣;HT為測量矩陣的轉(zhuǎn)置;R為測量噪聲的方差。
濾波估計(jì)的公式為
(6)
(7)
式中,Xt為t時(shí)刻艦艇姿態(tài)的濾波估計(jì)值;Pt為t時(shí)刻艦艇姿態(tài)的濾波誤差協(xié)方差矩陣;I為單位矩陣。
本研究中假設(shè)在艦艇沒有控制輸入的情況下對運(yùn)動姿態(tài)進(jìn)行實(shí)時(shí)預(yù)測,式(3)變?yōu)?/p>
(8)
根據(jù)上述Kalman濾波公式的描述,可得到Kalman濾波預(yù)測流程,如圖2所示。
圖2 Kalman濾波預(yù)測流程圖
對組合Kalman濾波隔點(diǎn)預(yù)測算法進(jìn)行分析,其算法是先輸出預(yù)測值,之后加入測量值計(jì)算估計(jì)值,預(yù)測值與測量值間存在滯后;實(shí)際的控制系統(tǒng)不能得到準(zhǔn)確的艦艇運(yùn)動姿態(tài)模型,導(dǎo)致預(yù)測算法中的新測量值對預(yù)測值的修正作用下降,舊測量值的修正作用相對上升;預(yù)測算法在計(jì)算過程中存在舍入誤差積累,可能導(dǎo)致計(jì)算發(fā)散。基于以上原因,需要采用算法流程調(diào)整法、衰減記憶法和平方根法對預(yù)測算法進(jìn)行改進(jìn)優(yōu)化。
采用算法流程調(diào)整法解決預(yù)測值與測量值間存在滯后的問題,調(diào)整組合Kalman濾波隔點(diǎn)預(yù)測算法的計(jì)算流程,先對艦艇姿態(tài)的濾波增益矩陣和濾波估計(jì)的公式進(jìn)行計(jì)算,然后對預(yù)測估計(jì)的公式進(jìn)行計(jì)算。則式(4)~式(8)調(diào)整為
Kg(t)=Pt-1HT/(HPt-1HT+R)
(9)
Xt=Xt-1+Kg(t)(Zt-HXt-1)
(10)
Pt=(I-Kg(t)H)Pt-1
(11)
(12)
(13)
調(diào)整后的Kalman濾波預(yù)測流程如圖3所示。
圖3 調(diào)整后的Kalman濾波預(yù)測流程圖
針對預(yù)測算法中的新測量值對預(yù)測值的修正作用下降、舊測量值的修正作用相對上升的問題,采用衰減記憶法予以解決。實(shí)際運(yùn)用中采用的衰減記憶法通過逐漸減小舊測量值的權(quán)重,同時(shí)增加新測量值的權(quán)重[14]來實(shí)現(xiàn)。與組合Kalman濾波隔點(diǎn)預(yù)測算法方程相比,衰減記憶法的不同之處在于艦艇姿態(tài)的預(yù)測誤差協(xié)方差矩陣的計(jì)算公式(式(13))中多了一個(gè)標(biāo)量因子s,即
(14)
式中,s為標(biāo)量因子。
組合Kalman濾波隔點(diǎn)預(yù)測算法在計(jì)算過程中的舍入誤差積累會導(dǎo)致Pt-1和Pt喪失非負(fù)定性,Pt-1和Pt的非負(fù)定性將使Kg(t)的計(jì)算失真,從殘差中提取的補(bǔ)償信息越來越不準(zhǔn)確,最后造成計(jì)算發(fā)散。采用平方根法解決計(jì)算發(fā)散的問題,在計(jì)算過程中不是計(jì)算Pt-1和Pt,而是計(jì)算Pt-1和Pt的平方根,從而抑制計(jì)算發(fā)散[15]。
由矩陣?yán)碚摽芍?,任意非零矩陣Ln×m與其轉(zhuǎn)置矩陣LT的乘積是非負(fù)定的,L稱為矩陣的平方根。進(jìn)行平方根計(jì)算時(shí)采用喬萊斯基(Cholesky)分解法對誤差協(xié)方差矩陣進(jìn)行下三角分解。
設(shè)非負(fù)定陣P3×3為
(15)
式中,Pij為非負(fù)定陣P的元素。
設(shè)P的下三角分解矩陣Δ和其轉(zhuǎn)置矩陣ΔT為
(16)
(17)
P=Δ×ΔT
(18)
式中,δij為非負(fù)定陣Δ的元素;Δ為P的下三角分解矩陣;ΔT為矩陣Δ的轉(zhuǎn)置矩陣。
將式(9)和式(11)調(diào)整為
(19)
(20)
綜上所述,改進(jìn)優(yōu)化后的組合Kalman濾波隔點(diǎn)預(yù)測算法與改進(jìn)優(yōu)化前的算法相比,具有如下優(yōu)點(diǎn):① 前者改變了算法的計(jì)算流程,先對艦艇姿態(tài)的濾波增益矩陣和濾波估計(jì)的公式進(jìn)行計(jì)算,然后對預(yù)測估計(jì)的公式進(jìn)行計(jì)算;② 前者在預(yù)測誤差協(xié)方差矩陣的計(jì)算式子中添加了一個(gè)標(biāo)量因子s;③ 前者對Pt-1和Pt進(jìn)行下三角分解,運(yùn)用矩陣的平方根參與計(jì)算。改進(jìn)優(yōu)化算法可以提高預(yù)測算法的預(yù)測精度,增加新測量值對預(yù)測值的修正作用,同時(shí)抑制預(yù)測算法在計(jì)算過程中的計(jì)算發(fā)散;其比改進(jìn)優(yōu)化前的算法更符合實(shí)際運(yùn)用的需求,更能滿足穩(wěn)定控制系統(tǒng)對艦艇運(yùn)動姿態(tài)預(yù)測值的需要。
本文以姿態(tài)方位參考系統(tǒng)測量的艦艇近海橫搖數(shù)據(jù)為仿真原始數(shù)據(jù),數(shù)據(jù)的采樣周期T為0.5 s,共有480個(gè)橫搖數(shù)據(jù)。前40個(gè)橫搖數(shù)據(jù)如表1所示。
表1 前40個(gè)橫搖數(shù)據(jù)表
艦艇的橫搖數(shù)據(jù)是通過姿態(tài)方位參考系統(tǒng)測量得到的解耦數(shù)據(jù),其橫搖運(yùn)動為非線性的,為了簡化運(yùn)動模型,假設(shè)艦艇橫搖兩點(diǎn)之間做等加速直線運(yùn)動,并通過實(shí)時(shí)更新橫搖角度、角速度和角加速度減小非線性對預(yù)測精度的影響。由等加速直線運(yùn)動的運(yùn)動規(guī)律可以得到狀態(tài)方程的公式為
(21)
式中,T為數(shù)據(jù)的采樣周期。
所以,可以得到狀態(tài)轉(zhuǎn)移陣A為
(22)
根據(jù)橫搖數(shù)據(jù)前3個(gè)點(diǎn)可以得到初始角度、初始角速度和初始角加速度,其共同組成了初始值矩陣Xt-1;組合Kalman濾波隔點(diǎn)預(yù)測算法的預(yù)測步長Tt為1 s;初始矩陣Pt-1的元素取任意假定的非零值,本文中取值如式(23)所示;查閱資料可以得到,在工程實(shí)際中艦艇姿態(tài)輸入高斯白噪聲的方差陣Q一般取單位矩陣,如式(24)所示,方差陣Q中的元素值增大,預(yù)測算法的均方根誤差減小;測量噪聲的方差R是根據(jù)姿態(tài)方位參考系統(tǒng)的型號和技術(shù)指標(biāo),其測量橫縱搖的誤差為0.1°,R確定為0.01,方差R增大,預(yù)測算法的均方根誤差增大;由姿態(tài)方位參考系統(tǒng)得到的數(shù)據(jù)為艦艇橫搖角度位置,所以測量矩陣H為式(25)。在仿真實(shí)驗(yàn)中,測量值直接讀取對應(yīng)時(shí)刻的480個(gè)橫搖數(shù)據(jù),衰減記憶濾波的標(biāo)量因子s在仿真中確定為100。
(23)
(24)
H=[1 0 0]
(25)
根據(jù)初始值和參數(shù)的輸入,采用Matlab對組合Kalman濾波隔點(diǎn)預(yù)測算法和優(yōu)化后的組合Kalman濾波隔點(diǎn)預(yù)測算法進(jìn)行仿真,仿真結(jié)果如圖4和5圖所示。
圖4 橫搖角度預(yù)測結(jié)果圖
圖5 橫搖角度預(yù)測誤差圖
圖4中,實(shí)線S為姿態(tài)方位參考系統(tǒng)測量的近海艦艇橫搖數(shù)據(jù),點(diǎn)線S1為組合Kalman濾波隔點(diǎn)預(yù)測算法預(yù)測的數(shù)據(jù),點(diǎn)畫線S2為優(yōu)化后組合Kalman濾波隔點(diǎn)預(yù)測算法預(yù)測的數(shù)據(jù)。從圖4的仿真結(jié)果可以分析,組合Kalman濾波隔點(diǎn)預(yù)測算法的預(yù)測數(shù)據(jù)與測量數(shù)據(jù)相比,存在數(shù)據(jù)滯后,優(yōu)化后預(yù)測算法的預(yù)測數(shù)據(jù)滯后情況得到明顯改善。
圖5中,點(diǎn)線e1為組合Kalman濾波隔點(diǎn)預(yù)測算法預(yù)測數(shù)據(jù)與測量數(shù)據(jù)的誤差,實(shí)線e2為優(yōu)化后組合Kalman濾波隔點(diǎn)預(yù)測算法預(yù)測數(shù)據(jù)與測量數(shù)據(jù)的誤差。從圖5的仿真結(jié)果可以分析,優(yōu)化后預(yù)測算法預(yù)測數(shù)據(jù)的誤差比優(yōu)化前預(yù)測數(shù)據(jù)的誤差要小。
優(yōu)化后的預(yù)測算法與優(yōu)化前的算法相比,前者主要在采用平方根法對矩陣Pt-1和Pt計(jì)算時(shí)增加了計(jì)算量,根據(jù)仿真計(jì)算的時(shí)間估計(jì),優(yōu)化后的預(yù)測算法增加的計(jì)算量可以忽略不計(jì)。分別對兩種算法的橫搖角度預(yù)測誤差求均方根,組合Kalman濾波隔點(diǎn)預(yù)測算法的均方根誤差為0.3935°,優(yōu)化后組合Kalman濾波隔點(diǎn)預(yù)測算法的均方根誤差為0.1173°。優(yōu)化后的預(yù)測算法的均方根誤差比原算法減小0.2762°,根據(jù)穩(wěn)定控制系統(tǒng)對運(yùn)動姿態(tài)實(shí)時(shí)預(yù)測的精度要求,其均方根誤差需要小于0.2°,優(yōu)化后的預(yù)測算法滿足姿態(tài)數(shù)據(jù)實(shí)時(shí)預(yù)測的需求。
本文提出了組合Kalman濾波隔點(diǎn)預(yù)測算法對艦艇的運(yùn)動姿態(tài)數(shù)據(jù)進(jìn)行預(yù)測,針對預(yù)測算法存在的預(yù)測值與測量值滯后、新測量值對預(yù)測值的修正作用下降和計(jì)算發(fā)散的問題,采用算法流程調(diào)整法、衰減記憶法和平方根法對預(yù)測算法進(jìn)行改進(jìn)優(yōu)化。依據(jù)姿態(tài)方位參考系統(tǒng)測量的近海艦艇橫搖數(shù)據(jù),輸入實(shí)際發(fā)射裝置穩(wěn)定控制系統(tǒng)的參數(shù),采用Matlab軟件對優(yōu)化前后的預(yù)測算法進(jìn)行仿真實(shí)驗(yàn)。通過將仿真結(jié)果與測量數(shù)據(jù)進(jìn)行對比計(jì)算可知,改進(jìn)優(yōu)化后的預(yù)測算法的均方根誤差小于0.2°,滿足艦艇姿態(tài)數(shù)據(jù)實(shí)時(shí)預(yù)測的需求。后續(xù)將會把預(yù)測算法運(yùn)用到實(shí)際艦艇上的發(fā)射裝置穩(wěn)定控制系統(tǒng)中,達(dá)到預(yù)測姿態(tài)數(shù)據(jù)的目的。