劉威,周詩(shī)超,孫建港,溫鵬,李凱
(中北大學(xué) 信息探測(cè)與處理重點(diǎn)實(shí)驗(yàn)室,山西 太原 030051))
隨著軍事戰(zhàn)略不斷調(diào)整,炮口磁場(chǎng)測(cè)量已經(jīng)逐漸進(jìn)入大家的視野。近年來(lái),相關(guān)領(lǐng)域的科研工作者開始通過(guò)測(cè)量炮口磁場(chǎng)數(shù)據(jù)來(lái)進(jìn)行彈丸運(yùn)動(dòng)姿態(tài)的解算[1]。在此過(guò)程中,炮口磁場(chǎng)數(shù)據(jù)的精度將直接影響彈丸姿態(tài)解算的結(jié)果,所以對(duì)炮口磁場(chǎng)數(shù)據(jù)進(jìn)行處理就顯得尤為重要。
目前針對(duì)炮口磁場(chǎng)信號(hào),大多采用最小二乘法、經(jīng)驗(yàn)?zāi)B(tài)分解、自適應(yīng)閾值、卡爾曼融合等信號(hào)處理方法[2-5]??柭鼮V波能巧妙融合測(cè)量數(shù)據(jù)和估計(jì)數(shù)據(jù),并得到最優(yōu)的卡爾曼融合值,被廣泛運(yùn)用在信號(hào)處理領(lǐng)域[6]。在此基礎(chǔ)上,文獻(xiàn)[7]設(shè)計(jì)了基于Inertial Measurement Unit (IMU)彈道測(cè)量的擴(kuò)展卡爾曼濾波參數(shù)估計(jì)算法,得到了誤差小于1 m/s的彈道修正信息;文獻(xiàn)[8]研究了一種基于改進(jìn)卡爾曼數(shù)據(jù)融合算法的溫室物聯(lián)網(wǎng)采集系統(tǒng),可提高數(shù)據(jù)采集的精度和系統(tǒng)的穩(wěn)定性;文獻(xiàn)[9]基于卡爾曼理論推導(dǎo)出多傳感器擴(kuò)維有偏卡爾曼濾波和多傳感器序貫有偏卡爾曼濾波算法,并證明了其優(yōu)越性。
基于此,筆者通過(guò)傳感陣列測(cè)量炮口磁場(chǎng),并設(shè)計(jì)了基于卡爾曼的炮口磁場(chǎng)數(shù)據(jù)融合處理算法,與其他濾波方式比較,卡爾曼濾波不但可以減小外界磁場(chǎng)的干擾,而且可以降低磁傳感器空間分布不確定性帶來(lái)的誤差,從而大大提高炮口磁場(chǎng)測(cè)量的精度。
在彈丸上,磁傳感器按照既定的規(guī)律排列組成磁傳感陣列[10-13]。將8個(gè)傳感器均勻分布在彈丸上,每個(gè)傳感器相隔45°來(lái)組成傳感陣列,如圖1所示,傳感器輸出的值即為所在位置的磁場(chǎng)強(qiáng)度。
根據(jù)地磁場(chǎng)方向與炮管的位置關(guān)系,地磁場(chǎng)與炮管垂直時(shí)磁場(chǎng)最大,平行時(shí)磁場(chǎng)最小,所以當(dāng)彈丸旋轉(zhuǎn)時(shí),傳感器檢測(cè)到的磁場(chǎng)總是會(huì)有一個(gè)明顯的波峰和波谷。假設(shè)炮管口周圍的磁場(chǎng)是周期變化的,從而得到磁場(chǎng)與相位關(guān)系式:
B(ti)=Asinφ+C,φ∈(0,2π),
(1)
(2)
由于是8路傳感器,根據(jù)式(1)可推出:
(3)
式中:Bi表示8路傳感器的磁場(chǎng);Ai表示各傳感器所測(cè)得的磁場(chǎng)最大值與平均磁場(chǎng)強(qiáng)度的差值;ω表示傳感器旋轉(zhuǎn)的角速度;N表示采樣點(diǎn)數(shù);Fs表示采樣頻率;φ表示傳感器之間的相位差;φ表示炮口的平均磁場(chǎng)強(qiáng)度。
式(3)是根據(jù)磁場(chǎng)部分特點(diǎn)推導(dǎo)出的炮口磁場(chǎng)數(shù)學(xué)模型,也被稱為卡爾曼融合中的經(jīng)驗(yàn)?zāi)P汀?/p>
BP神經(jīng)網(wǎng)絡(luò)以其逆向傳播和多層反饋的特點(diǎn)被廣泛應(yīng)用于數(shù)據(jù)擬合方面[14-15]。BP神經(jīng)網(wǎng)絡(luò)用于數(shù)據(jù)擬合時(shí),相應(yīng)數(shù)學(xué)模型中的參數(shù)有未知和已知兩種情況,若為已知參數(shù),只需利用已知模型通過(guò)神經(jīng)網(wǎng)絡(luò)對(duì)參數(shù)進(jìn)行微調(diào);若為未知參數(shù),需要通過(guò)已知數(shù)據(jù)集利用訓(xùn)練函數(shù)對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練從而得到參數(shù)值。
根據(jù)式(3)所示,筆者建立的炮口磁場(chǎng)數(shù)學(xué)模型為非線性模型,數(shù)據(jù)擬合時(shí)需要在非線性系統(tǒng)模型中引入BP神經(jīng)網(wǎng)絡(luò)的激活函數(shù)θ。本程序中采用的Leaky ReLu激活函數(shù),該激活函數(shù)能將線性模型變?yōu)榉蔷€性模型,而且相比于ReLu函數(shù)Leaky ReLu函數(shù)范圍更大。
BP神經(jīng)網(wǎng)絡(luò)由多個(gè)神經(jīng)元構(gòu)成,其組成分為輸入層、輸出層和隱藏層。筆者采用3層神經(jīng)網(wǎng)絡(luò)來(lái)進(jìn)行函數(shù)模型的擬合,結(jié)構(gòu)圖如圖2所示,通過(guò)訓(xùn)練數(shù)據(jù)樣本,使得BP神經(jīng)網(wǎng)絡(luò)不斷向期望的未知目標(biāo)函數(shù)逼近,最終確定式(3)中的未知參數(shù),得到確定的炮口磁場(chǎng)分布數(shù)學(xué)模型。
筆者針對(duì)炮口陣列式磁場(chǎng)測(cè)量方式,將卡爾曼自適應(yīng)融合算法分為兩個(gè)階段:第一階段對(duì)單個(gè)傳感器的數(shù)據(jù)進(jìn)行卡爾曼濾波處理,為第二階段提供數(shù)據(jù)支撐;第二階段采用多傳感器卡爾曼融合算法,首先根據(jù)最小均方誤差算法尋找最優(yōu)加權(quán)因子得到傳感器融合數(shù)據(jù),然后以融合數(shù)據(jù)為基礎(chǔ)進(jìn)行卡爾曼二次融合得到誤差更小的數(shù)據(jù)[16]?;诳柭臄?shù)據(jù)融合算法結(jié)構(gòu)如圖3所示。
通過(guò)炮口的磁場(chǎng)來(lái)得到炮彈的運(yùn)動(dòng)狀態(tài)時(shí),由于炮口磁場(chǎng)環(huán)境的復(fù)雜和傳感器自身的誤差,將會(huì)導(dǎo)致結(jié)果產(chǎn)生偏差。為了獲得更精確的炮管磁場(chǎng)數(shù)據(jù),采用卡爾曼濾波法對(duì)炮口磁場(chǎng)數(shù)據(jù)進(jìn)行處理??柭鼮V波能在不確定的動(dòng)態(tài)系統(tǒng)中對(duì)系統(tǒng)的下一個(gè)狀態(tài)進(jìn)行預(yù)測(cè),及時(shí)根據(jù)卡爾曼增益選擇更可靠的一方,最終得到更真實(shí)的數(shù)據(jù)。
卡爾曼算法實(shí)現(xiàn)過(guò)程主要分為兩個(gè)階段:預(yù)測(cè)階段和更新階段。預(yù)測(cè)階段是在預(yù)測(cè)模型準(zhǔn)確的情況下,通過(guò)預(yù)測(cè)方程得到當(dāng)前狀態(tài)值;更新階段則是根據(jù)卡爾曼增益修正預(yù)測(cè)階段的估計(jì)值,得到校正后的狀態(tài)估計(jì)值。最優(yōu)卡爾曼濾波器設(shè)計(jì)為式(4)~(8)。
狀態(tài)預(yù)測(cè):
x(k|k-1)=Ax(k-1|k-1)+Bkuk,
(4)
式中:k表示系統(tǒng)離散時(shí)間;x(k-1|k-1)表示k-1時(shí)刻狀態(tài)最優(yōu)估計(jì);A為狀態(tài)矩陣;x(k|k-1)表示k時(shí)刻的預(yù)測(cè);uk為控制量;Bk為uk的控制矩陣。
協(xié)方差預(yù)測(cè):
P(k|k-1)=AP(k-1|k-1)AT+Q(k),
(5)
式中:P(k-1|k-1)表示k-1時(shí)刻的協(xié)方差最優(yōu)估計(jì);P(k|k-1)表示k時(shí)刻的協(xié)方差預(yù)測(cè);Qk表示過(guò)程噪聲協(xié)方差。
狀態(tài)估計(jì)更新:
x(k|k)=x(k|k-1)+K(k)[z(k)-Hx(k|k-1)],
(6)
式中:x(k|k)表示k時(shí)刻最優(yōu)估計(jì)值;z(k)表示k時(shí)刻的測(cè)量值;H表示觀測(cè)矩陣;K(k)表示k時(shí)刻的卡爾曼增益:
(7)
式中,R(k)表示k時(shí)刻觀測(cè)噪聲協(xié)方差矩陣。
協(xié)方差更新:
P(k|k)=[I-K(k)H]P(k|k-1),
(8)
式中:P(k|k)表示k時(shí)刻協(xié)方差估計(jì);I表示單位矩陣。
傳感器均分安裝在測(cè)量裝置上,每個(gè)傳感器的分配權(quán)重應(yīng)該一樣,但是實(shí)際中由于傳感器自身的差異和空間分布的不絕對(duì)一致,直接應(yīng)用平均融合會(huì)導(dǎo)致誤差較大,因此需要采用加權(quán)融合。為達(dá)到最優(yōu)結(jié)果,采用最小均方算法(LMS),其核心思想是,將各傳感器信號(hào)作為參考信號(hào)di(i=1,2,…,n),di信號(hào)經(jīng)過(guò)卡爾曼濾波之后成為d′i,這時(shí)提出一個(gè)加權(quán)因子Wi使得di與Wid′i之間要滿足均方差最小的條件。
(9)
式中:xi為第n個(gè)傳感器的第i個(gè)數(shù)據(jù);Wn為第n個(gè)傳感器的加權(quán)因子;x′i為第n個(gè)傳感器經(jīng)過(guò)卡爾曼濾波后第i個(gè)數(shù)據(jù)。
式(9)經(jīng)過(guò)化簡(jiǎn)得到:
(10)
式中多項(xiàng)都為計(jì)算值,設(shè)
(11)
將式(11)帶入式(10),化簡(jiǎn)可得:
(12)
當(dāng)均方誤差最小時(shí)可得到最優(yōu)權(quán)值W′n,即:
(13)
式中,Wn(σn)表示用σn來(lái)表示W(wǎng)n的關(guān)系式。
根據(jù)最優(yōu)加權(quán)因子式(13)可得到最后的融合結(jié)果D為
(14)
在得到融合數(shù)據(jù)后,以融合后的數(shù)據(jù)作為卡爾曼估計(jì)值,傳感器數(shù)據(jù)作為觀測(cè)值,通過(guò)卡爾曼濾波再次融合得到誤差更小的數(shù)據(jù)。
選取一截密閉管道用以仿真炮管的內(nèi)部結(jié)構(gòu),將密閉管道放在以轉(zhuǎn)速0.05 r/s旋轉(zhuǎn)的轉(zhuǎn)臺(tái)上,用帶有8路傳感器的測(cè)量裝置,對(duì)炮口磁場(chǎng)進(jìn)行測(cè)量,用以模擬炮彈在身管內(nèi)的旋轉(zhuǎn)運(yùn)動(dòng)。在旋轉(zhuǎn)一周的過(guò)程中,磁傳感器會(huì)以46 kHz的采樣頻率持續(xù)采集數(shù)據(jù)。由于外界環(huán)境的干擾,采集的磁場(chǎng)數(shù)據(jù)會(huì)包含噪聲,所以要對(duì)數(shù)據(jù)進(jìn)行處理與分析。
BP神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)擬合是根據(jù)傳感器采集到的數(shù)據(jù)對(duì)建立的炮口磁場(chǎng)數(shù)學(xué)模型的驗(yàn)證,確??柭诤蠒r(shí)狀態(tài)轉(zhuǎn)移模型的貼合性,以減小卡爾曼融合時(shí)的過(guò)程噪聲。
本次BP神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)擬合采用1-10-1的網(wǎng)絡(luò)結(jié)構(gòu),也就是由1個(gè)輸入層、包含10個(gè)神經(jīng)元的隱含層和1個(gè)輸出層組成。本次神經(jīng)網(wǎng)絡(luò)的訓(xùn)練樣本為一個(gè)轉(zhuǎn)臺(tái)旋轉(zhuǎn)一周采樣20 s的數(shù)據(jù),共有920 000個(gè)樣本數(shù)據(jù)。圖4為BP神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)擬合對(duì)比圖。
從圖4的結(jié)果對(duì)比中可以看出,原始數(shù)據(jù)和數(shù)據(jù)擬合得到的曲線基本貼合,最大的誤差7.8%出現(xiàn)在10 s左右,大部分時(shí)間的誤差基本在6%以下。由于相對(duì)誤差在10%以下,可以認(rèn)為該BP神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)擬合采用的函數(shù)模型是可行的,可以將該模型作為卡爾曼融合時(shí)的經(jīng)驗(yàn)?zāi)P汀?/p>
使用傳感器測(cè)量時(shí),常常因?yàn)閭鞲衅髯陨碓肼暥鴮?dǎo)致結(jié)果產(chǎn)生誤差,所以需要對(duì)獲得的數(shù)據(jù)進(jìn)行處理。傳感器自身的噪聲一般為高斯白噪聲,針對(duì)白噪聲,通常使用卡爾曼濾波進(jìn)行處理。本次仿真將通過(guò)神經(jīng)網(wǎng)絡(luò)驗(yàn)證的炮口磁場(chǎng)數(shù)學(xué)模型作為卡爾曼濾波的先驗(yàn)估計(jì),以傳感器采集的數(shù)據(jù)作為卡爾曼濾波的測(cè)量值。
對(duì)傳感器陣列測(cè)量炮口磁場(chǎng)來(lái)說(shuō),狀態(tài)值為磁場(chǎng)和相位,觀測(cè)值為傳感器測(cè)量值,分別建立狀態(tài)方程和測(cè)量方程:
(15)
z(k)=Hx(k)+υ(k),
(16)
根據(jù)式(15)、(16)最終得到的狀態(tài)方程如下:
X=A(x)+Cu,
(17)
y=Dx,
(18)
其中:
D=[1 0];C=b.
由于測(cè)量值采用的是8路傳感器直接采集的數(shù)據(jù),所以卡爾曼濾波的觀測(cè)方式為直接觀測(cè)。根據(jù)狀態(tài)值和測(cè)量值的關(guān)系,可得到式(16)中的測(cè)量矩陣為H=[1 0]。
卡爾曼是一個(gè)多次迭代的修正過(guò)程,在每一次迭代中都會(huì)進(jìn)行一次更新,導(dǎo)致最后的值會(huì)慢慢收斂趨近于真實(shí)值,所以在設(shè)置初始值時(shí),零時(shí)刻X(0|0)就用零時(shí)刻的測(cè)量值代替,協(xié)方差初始P(0|0)用1代替。
在單傳感器進(jìn)行濾波時(shí),卡爾曼估計(jì)值完全是由炮口磁場(chǎng)數(shù)據(jù)模型計(jì)算的數(shù)據(jù),測(cè)量值由傳感器提供。經(jīng)過(guò)卡爾曼濾波后得到結(jié)果,如圖5所示。
圖5(a)為運(yùn)用卡爾曼算法迭代運(yùn)行920 000次的結(jié)果,其中理論值表示炮口磁場(chǎng)數(shù)學(xué)模型輸出的值;測(cè)量值為傳感器的測(cè)量值;Kalman預(yù)測(cè)值則表示經(jīng)過(guò)卡爾曼濾波的數(shù)據(jù);圖5(b)為測(cè)量值與卡爾曼濾波值相對(duì)于理論值相對(duì)誤差的對(duì)比。從圖5(b)中可以看出測(cè)量值與理論值的誤差的最大值為13%左右,而卡爾曼濾波值與理論值的誤差最大約為11%,且卡爾曼濾波后的數(shù)據(jù)的誤差在全采樣段均小于測(cè)量值誤差。由此可見(jiàn),經(jīng)過(guò)卡爾曼濾波后,降低了部分噪聲,使數(shù)據(jù)更加準(zhǔn)確。
在進(jìn)行多傳感器融合時(shí),首先,根據(jù)單傳感器卡爾曼數(shù)據(jù)處理把8路信號(hào)分別進(jìn)行濾波得到處理之后8路卡爾曼預(yù)測(cè)值。然后,根據(jù)傳感器測(cè)量的信號(hào)與卡爾曼預(yù)測(cè)得到信號(hào)的均方誤差進(jìn)行計(jì)算。此時(shí)引入權(quán)值Wn,根據(jù)式(13)、(14)得到融合后的數(shù)據(jù)。之后,將融合后的數(shù)據(jù)作為卡爾曼新的估計(jì)值,傳感器的值作為測(cè)量值,再次經(jīng)過(guò)卡爾曼濾波得到結(jié)果,如圖6所示。圖6(a)表示多傳感器融合濾波的結(jié)果,其中理論值表示炮口磁場(chǎng)數(shù)學(xué)模型輸出的值;測(cè)量值為傳感器的測(cè)量值;Kalman預(yù)測(cè)值則表示經(jīng)過(guò)卡爾曼濾波的數(shù)據(jù)。圖6(b)表示融合后的值和測(cè)量值與理論值的誤差對(duì)比。從圖6(b)中可以看出,卡爾曼濾波后的數(shù)據(jù)的誤差最大為3.5%左右,且在全采樣段均小于測(cè)量值誤差。
筆者基于卡爾曼融合理論提出了炮口多路磁場(chǎng)信號(hào)的卡爾曼融合處理方法。對(duì)該方法的數(shù)據(jù)融合原理和炮口磁場(chǎng)信號(hào)處理的過(guò)程進(jìn)行了詳細(xì)分析,并根據(jù)炮口磁場(chǎng)的物理模型建立了炮口磁場(chǎng)的數(shù)學(xué)模型。在建立數(shù)學(xué)模型之后,通過(guò)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行擬合,驗(yàn)證了該數(shù)學(xué)模型的準(zhǔn)確性,其次對(duì)各個(gè)傳感器進(jìn)行了卡爾曼濾波得到待融合值,然后通過(guò)最小均方誤差算法對(duì)待融合數(shù)據(jù)進(jìn)行一次融合,最后再對(duì)一次融合數(shù)據(jù)進(jìn)行卡爾曼融合得到最終結(jié)果。仿真結(jié)果表明,建立的炮口磁場(chǎng)數(shù)學(xué)模型與測(cè)試的結(jié)果基本吻合,誤差不超過(guò)7.8%,可以作為卡爾曼濾波的系統(tǒng)狀態(tài)方程。單傳感器進(jìn)行的卡爾曼濾波得到的預(yù)測(cè)值誤差不超過(guò)11%,均低于測(cè)量值的誤差,證明了卡爾曼濾波的有效性。多傳感器卡爾曼融合后數(shù)據(jù)與真值的誤差不超過(guò)3.5%,和測(cè)量值與真值誤差13%相比,誤差小了9.5%,證明了將多傳感器卡爾曼融合用于炮口磁場(chǎng)信號(hào)處理是可行的。