黃鳳榮,羿博珩,王 旭,劉慶璘,王文森
(1.河北工業(yè)大學 機械工程學院,天津 300401;2.中國人民解放軍93756 部隊,天津 300131)
微機電系統(tǒng)(Micro-Electro-Mechanical System,MEMS)慣性測量單元(Inertial Measurement Unit,IMU)因成本低、尺寸小以及功耗低等優(yōu)勢在各個領(lǐng)域有廣泛應用需求[1];但MEMS IMU 誤差大且復雜,具有非線性、時變性等特點,在慣性導航的雙積分過程中傳感器誤差會以指數(shù)方式傳播,導致采用MEMS IMU 的車輛導航系統(tǒng)誤差隨時間迅速增大,無法滿足導航定位需求;針對此問題,慣性導航領(lǐng)域一般采用標定補償?shù)姆椒▽鞲衅髡`差進行處理,傳統(tǒng)的基于線性模型的慣性元件誤差標定方法分為分立式標定和系統(tǒng)級標定,但對于MEMS IMU 巨大且復雜的誤差,傳統(tǒng)標定方法已經(jīng)明顯不適用。再者,考慮車輛導航定位可以利用車輛運動中的特殊運動信息,如在不打滑、不騰空的情況下,車輛橫向和垂向的速度為零,那么,利用這些約束信息進行信息融合可以在一定程度上抑制車輛導航定位的誤差。
隨著深度學習的發(fā)展,數(shù)據(jù)驅(qū)動方法已開始被引入慣性導航領(lǐng)域,Chen H 等人[2]描述了一種基于深度學習的消除IMU 誤差的方法,該方法可在實驗室環(huán)境下消除MEMS IMU 信號中的許多誤差源,與傳統(tǒng)的六位置靜態(tài)測試和速率測試方法進行了比較,結(jié)果表明,該方法對IMU 信號的正確識別率達到80%。Jiang C 等人[3]提出了一種對MEMS IMU 輸出信號進行去噪的人工智能(Artificial Intelligence,AI)方法,將信號處理為時間序列,并使用長短期記憶(Long Short-Term Memory,LSTM)對MEMS 陀螺儀的輸出信號進行濾波。Esfahani M A 等人[4]根據(jù)IMU 的不同測量類型,提出了一種三通道LSTM 網(wǎng)絡(luò)架構(gòu),使用兩個連續(xù)IMU 讀數(shù)之間的時間間隔作為慣性網(wǎng)絡(luò)的另一個輸入,以回歸三維相對位移和旋轉(zhuǎn)的幅度,但無法從這些輸出預測三維位置。Brossard M 等人[5]使用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)動態(tài)估計車輛運動簡單模型的不確定性,并結(jié)合不變擴展卡爾曼濾波(Invariant Extended Kalman Filter,IEKF)來估計車輛的位置、速度。
總之,基于深度學習技術(shù)標定IMU 誤差,以及進行運動狀態(tài)檢測開始引起研究者的關(guān)注,目前在此方面的研究剛剛起步,公開的研究成果還很稀少。但已有的研究表明,基于深度學習進行MEMS IMU 誤差標定補償和運動狀態(tài)檢測相結(jié)合無疑是一種新思路。本文針對車輛導航問題,提出一種基于深度學習與運動約束的車輛導航方法,該方法在有效補償IMU 陀螺儀誤差的基礎(chǔ)上,又對車輛運動狀態(tài)進行了準確估計,最后,利用不變擴展卡爾曼濾波進行信息融合實現(xiàn)車輛導航。
首先,基于改進后的膨脹卷積網(wǎng)絡(luò)(Dilated Convolutional Networks,DCN)[6]對MEMS IMU 陀螺儀誤差進行標定補償。其次,利用時間卷積神經(jīng)網(wǎng)絡(luò)(Temporal Convolutional Networks,TCN)[7]動態(tài)檢測車輛的運動狀態(tài)。同時,將特定的運動狀態(tài)信息作為觀測量,基于不變擴展卡爾曼濾波進行信息融合,從而提高車輛導航系統(tǒng)的定位精度,算法框架如圖1 所示。
圖1 算法框架Fig.1 Overall algorithm framework
傳統(tǒng)陀螺儀標定補償方法[8-11]沒有考慮IMU 誤差模型非線性的特點,為了表征MEMS IMU 誤差的非線性,本文提出了一種基于改進DCN 的陀螺儀標定補償方法。該方法使用改進DCN 構(gòu)建MEMS 陀螺儀的誤差輸出模型,網(wǎng)絡(luò)模型以MEMS IMU 的測量數(shù)據(jù)作為輸入,輸出誤差補償后的陀螺儀數(shù)據(jù)。
1.2.1 慣性元件輸出模型
MEMS IMU 的輸出受多種誤差源的影響,比如安裝誤差、刻度因子誤差、零偏和隨機漂移等,慣性元件的輸出模型可以表示為:
其中,Sα、Sg為加速度計和陀螺儀的刻度因子誤差矩陣,ΔCα、ΔCg為加速度計和陀螺儀的安裝誤差矩陣,是IMU 軸系與載體系之間存在安裝誤差導致的。bα、bg是加速度計和陀螺儀的零偏,ε、η是隨機漂移,通常看作是零均值高斯白噪聲。
目前,MEMS IMU 誤差主要來源于陀螺儀,陀螺儀的誤差對導航結(jié)果影響更大,因此,本文對MEMS IMU 陀螺儀漂移進行標定補償。通過對MEMS IMU陀螺儀輸出的誤差分析,經(jīng)過誤差補償?shù)耐勇輧x輸出可以表示為:
其中,A=(I+Sg+ΔCg)-1包含刻度因子誤差參數(shù)和安裝誤差參數(shù),為標定補償后的陀螺儀輸出,陀螺儀的零偏具有隨機性和時變性,因此誤差B可看作是一種時變誤差。估計出矩陣A和時變誤差B并補償即可減小MEMS 陀螺儀的測量誤差。
改進DCN 利用過去N個時刻的IMU 數(shù)據(jù)來預測誤差B,可以表示為:
其中,f(?)是改進DCN 逼近的非線性函數(shù),IMUt是MEMS IMU 在t時刻的輸出值,IMUt-N是在MEMS IMU 在t-N時刻的輸出值。
1.2.2 網(wǎng)絡(luò)結(jié)構(gòu)
為使網(wǎng)絡(luò)模型更符合MEMS 陀螺儀的誤差特性,在采用深度神經(jīng)網(wǎng)絡(luò)對MEMS 陀螺儀的輸出建模時,我們將整個網(wǎng)絡(luò)模型分為兩部分,一部分是DCN,其輸入為加速度計數(shù)據(jù)和陀螺儀數(shù)據(jù),負責預測式(8)中的誤差B,另一部分是一層跨連接1D 卷積層,輸入只有陀螺儀數(shù)據(jù),負責預測矩陣A,流程如圖2 所示。
圖2 標定流程圖Fig.2 Calibration flow chart
為準確估計包含刻度系數(shù)誤差和安裝誤差參數(shù)的矩陣A,本文使用了一個3 輸入通道3 輸出通道的跨連接層,其跨越了整個DCN。該跨連接層是一層1D卷積層,跨連接層的輸入為MEMS 陀螺儀測量值,輸出為,這一層的輸出可以看作是對MEMS 陀螺儀測量數(shù)據(jù)的微調(diào),是補償部分誤差后的陀螺儀數(shù)據(jù)。
1.2.3 損失函數(shù)
改進DCN 是一種監(jiān)督學習方法,需要真實值作為監(jiān)督信息來評估網(wǎng)絡(luò)模型的好壞,在公開數(shù)據(jù)集中,含有使用高精度導航系統(tǒng)得到的精確姿態(tài)信息,本文以精確的四元數(shù)作為神經(jīng)網(wǎng)絡(luò)的監(jiān)督信息,本文的損失函數(shù)如下:
其中,式(9)中n是一個控制損失大小的參數(shù),進而也能控制網(wǎng)絡(luò)訓練過程中梯度的大小,它的取值是通過多次試驗確定的,Q為四元數(shù)真實值,是根據(jù)計算得到的四元數(shù)。需要注意的是,在計算損失之前,四元數(shù)Q、都是經(jīng)過歸一化的。為了防止過擬合現(xiàn)象,損失函數(shù)并不輸出每一時刻四元數(shù)的損失,而是累積x個點的損失后輸出一次損失,這里x的大小為8。
在本節(jié)將介紹車輛運動的典型狀態(tài),這些運動狀態(tài)被正確檢測后會作為觀測量,為基于IEKF 進行信息融合做準備。
1.3.1 運動狀態(tài)檢測
考慮3 種不同的運動狀態(tài),并用二進制向量來表示運動狀態(tài)的有效性:
? 零速狀態(tài):車輛的速度為零。
橫向速度和垂直速度需要在車身系下表示:
? 側(cè)向零速狀態(tài):橫向速度近似為零。
? 垂直零速狀態(tài):垂直速度近似為零。
運動狀態(tài)檢測器在每個時刻t確定哪些特定運動狀態(tài)是有效的,其中由TCN 組成的運動狀態(tài)檢測器從標定補償陀螺儀誤差后的IMU 信號估計每個運動狀態(tài)的概率分數(shù),基于概率分數(shù)通過閾值判斷輸出二進制向量,即運動狀態(tài)。檢測器結(jié)構(gòu)如圖3 所示,我們將為0 的概率分數(shù)的閾值設(shè)置為0.9,將和的閾值設(shè)置為0.5。
圖3 運動狀態(tài)檢測器結(jié)構(gòu)Fig.3 Structure of motion state detector
1.3.2 網(wǎng)絡(luò)結(jié)構(gòu)
時間卷積神經(jīng)網(wǎng)絡(luò)(TCN)是一種應用于解決時間序列建模問題的網(wǎng)絡(luò)結(jié)構(gòu),它具有梯度穩(wěn)定和占用計算資源少等特點。每個運動狀態(tài)對應一個TCN,每個TCN 由4 個殘差塊組成,每個殘差塊包含兩個膨脹因果卷積層(卷積核大小設(shè)置為5),歸一化方面,殘差塊使用了權(quán)重歸一化[12];使用GELU 函數(shù)[13]來提取特征;使用Dropout[14]進行正則化以避免過擬合,具體的網(wǎng)絡(luò)參數(shù)如表1 所示。
表1 時間卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)設(shè)置Tab.1 Parameter setting of time convolution neural network
1.3.3 損失函數(shù)
因為要對3 個不同的運動狀態(tài)進行判斷,我們需要解決三個二元分類的問題,所以我們使用多標簽損失函數(shù)(BCE With Log its Loss):
其中,lt為每個類別的損失,xt為模型輸出,yt為標簽值,σ(xt)為Sigmoid 函數(shù),可以把xt映射到(0,1)的區(qū)間。
傳統(tǒng)擴展卡爾曼濾波(EKF)[15]的系統(tǒng)矩陣依賴當前狀態(tài)估計值,在有噪聲引入時,系統(tǒng)對狀態(tài)估計值的預測是不準確的。當狀態(tài)估計值與真值差距較大時,直接導致系統(tǒng)矩陣也有較大偏差,若使用這樣的系統(tǒng)矩陣繼續(xù)計算,將進一步放大誤差,使系統(tǒng)形成正反饋,最終導致濾波器發(fā)散。此外,EKF 還存在不一致性問題,即EKF 的更新步驟是通過舊狀態(tài)的線性化來計算當前狀態(tài)的協(xié)方差矩陣,但是其與當前狀態(tài)協(xié)方差矩陣的實際值并不一致。
為解決上述問題,不變擴展卡爾曼濾波(IEKF)基于李代數(shù),將群變換應用于系統(tǒng)狀態(tài)變量,所以IEKF 的狀態(tài)量是一個矩陣,并且構(gòu)成群[16]。為了實現(xiàn)系統(tǒng)矩陣與狀態(tài)估計值的獨立,解決傳統(tǒng)EKF 存在的問題,將誤差也定義在群上。因此,我們將標定補償陀螺儀誤差后的IMU 測量值集成到其動態(tài)模型中,并將檢測到的運動狀態(tài)的約束信息作為觀測量,基于IEKF 進行信息融合來完善其估計值。
車輛的動力學模型如下:
其中,Rt表示將載體坐標系映射到導航坐標系的旋轉(zhuǎn)矩陣,vt表示速度,pt表示位置,[ ]×表示3 × 3斜對稱矩陣,g為重力加速度,dt為解算步長,ωt是標定補償后的陀螺儀輸出,a t是加速度值。在應用場景中,我們假設(shè)車身框架與IMU 框架對齊,并且忽略地球自轉(zhuǎn)和科里奧利加速度的影響。
我們將系統(tǒng)狀態(tài)定義為:
其中,χt?SE2(3)為矩陣李群,由方向余弦矩陣Rt、速度vt、位置pt和IMU 誤差構(gòu)成。
增廣右不變誤差定義為:
其中,ηt為右不變誤差,ζt為普通線性誤差。
其中,ξt為ηt對應的李代數(shù),并映射到狀態(tài),F(xiàn)t為系統(tǒng)矩陣,G t和Qt分別為系統(tǒng)噪聲分配矩陣和系統(tǒng)噪聲向量。
IEKF 算法流程如下:
1)初始化X0,P0;
2)時間更新:如果未檢測到特定運動狀態(tài),我們應用式(18)-(20)得到狀態(tài)Xt+1,通過黎卡提微分方程得到協(xié)方差Pt/t1-,協(xié)方差公式如下:
3)量測更新:每個運動狀態(tài)產(chǎn)生以下量測值之一:
需要特別注意的是,當檢測到零速狀態(tài)時,我們不考慮側(cè)向零速狀態(tài)和垂直零速狀態(tài),因為零速已將其包括在內(nèi),如果未檢測到特定運動,則跳過測量更新步驟。
計算增益矩陣Kt,更新Xt以及更新協(xié)方差Pt
更新后的線性化狀態(tài)誤差為:
其中H為:
可得狀態(tài)更新公式:
為了驗證本文提出的基于深度學習與運動約束的車輛導航方法的有效性,本文采用公開 KAIST URBAN 汽車數(shù)據(jù)集進行了實驗驗證。實驗將數(shù)據(jù)集分為訓練集和測試集,在訓練集上標定陀螺儀誤差參數(shù)和優(yōu)化神經(jīng)網(wǎng)絡(luò),訓練結(jié)束后在測試集上回歸誤差補償后的陀螺儀數(shù)據(jù),運動狀態(tài)檢測同理,并進行導航解算,數(shù)據(jù)集分配如表2 所示。同時,與其他兩種基于深度學習的方法進行了比較,并定義了評估標準。
表2 KAIST URBAN 數(shù)據(jù)集訓練集和測試集分配Tab.2 KAIST URBAN data set Training set and test set allocation
KAIST URBAN 數(shù)據(jù)集提供車輛在復雜環(huán)境下(大都市地區(qū)、復雜建筑和居住區(qū))收集到的數(shù)據(jù),其中包含多種傳感器數(shù)據(jù),比如激光雷達、FOG、GPS和AHRS IMU 等,同樣給出了真實姿態(tài)、位置信息。在這個數(shù)據(jù)集中,地面真值是通過位姿圖SLAM 生成的。整個數(shù)據(jù)集中的IMU 數(shù)據(jù)是使用Xsens 的MTi-300 獲得的,采樣頻率為100 Hz。
關(guān)于網(wǎng)絡(luò)訓練,本文的網(wǎng)絡(luò)是使用Pytorch 實現(xiàn)的,并在RTX 2060 GPU 上進行實驗。網(wǎng)絡(luò)的訓練分為陀螺漂移標定補償和運動狀態(tài)檢測兩部分,均使用ADAM[17]優(yōu)化器完成網(wǎng)絡(luò)訓練。
其中,陀螺標定補償網(wǎng)絡(luò)訓練初始學習率為0.001,并且自適應地調(diào)整學習率,當損失變化很小時調(diào)整學習率,訓練回合為1000。為了防止網(wǎng)絡(luò)過擬合,權(quán)重衰減參數(shù)設(shè)為0.1,Dropout 層的參數(shù)設(shè)置為0.2,除此之外,在網(wǎng)絡(luò)訓練時,本文還對訓練集進行了數(shù)據(jù)增強處理,提高數(shù)據(jù)的多樣性,增強模型的魯棒性。
使用ADAM 優(yōu)化器在200 個周期內(nèi)對運動狀態(tài)檢測器進行訓練,初始學習率為0.0001 并由學習率程序自適應調(diào)整,訓練回合為500。對于每個時期,我們將數(shù)據(jù)分為一批2 分鐘的序列,隨機設(shè)置每個序列的初始時刻,但每個序列的開始時刻都有至少1 秒的靜止狀態(tài),以保證濾波器能夠良好地初始化。
為了評估性能,我們考慮了兩個誤差指標:
1)絕對軌跡誤差(Absolute Trajectory Error,ATE,m):
絕對軌跡誤差描述的是位置估計值?p與位置真實值P之間的相似度,以均方根誤差來計算。
2)相對軌跡誤差(Relative Trajectory Error,RTE,m):
相對軌跡誤差描述的是在一個時間為Δt的窗口內(nèi),位置估計值增量與位置真實值增量之間的相似度,這里的Δt為1 s。
在Urban11 到Urban16 序列上訓練完后,我們在測試序列Urban6 到Urban10 上進行評估,本文比較了三種方法。
1)基于TCN 檢測的零速信息融合方法:未對陀螺儀誤差進行標定補償,IMU 測量值直接進入IEKF,僅考慮零速狀態(tài),若檢測到零速狀態(tài),則將零速狀態(tài)約束信息作為觀測量,基于IEKF 進行信息融合。
2)基于TCN 檢測的特定運動狀態(tài)約束融合方法:未對陀螺儀誤差進行標定補償,IMU 測量值直接進入IEKF,將零速狀態(tài)、側(cè)向零速狀態(tài)和垂直零速狀態(tài)作為特定狀態(tài),若特定狀態(tài)被檢測到,則將特定的運動狀態(tài)約束信息作為觀測量,基于IEKF 進行信息融合。3)本文方法:標定補償陀螺儀誤差后的IMU 測量值進入IEKF,將零速狀態(tài)、側(cè)向零速狀態(tài)和垂直零速狀態(tài)作為特定狀態(tài),若特定狀態(tài)被檢測到,則將特定的運動狀態(tài)約束信息作為觀測量,基于IEKF 進行信息融合。
為了對位置精度進行評估,本文計算了整個測試集水平位置和三維位置的ATE/RTE 的平均值,如表3所示。
表3 不同方法在整個測試集水平位置和三維位置的ATE/RTE 平均值對比Tab.3 Mean ATE/RTE values of different methods at horizontal and 3D positions were compared
利用本文方法解算的導航結(jié)果位置精度有了明顯提升,相比其他兩種方法在水平位置ATE/RTE 平均值分別縮小 30.9%/24.7%,11.6%/11.0%;三維位置ATE/RTE 平均值分別縮小34.1%/24.6%,8.7%/10.7%。
各個測試序列的ATE/RTE 值,如表4 所示,從數(shù)值可以直觀地看出,本文的方法得到的位置信息更加可靠,這說明所提出的方法能夠有效提高車輛導航定位精度。
表4 不同方法在各測試序列三維位置的ATE/RTE 對比Tab.4 ATE/RTE values of different methods at 3D positions of each test sequence were compared
圖4 是在測試序列Urban07 上三維位置軌跡估計圖,相比另外兩種方法,本文方法得到的位置誤差值更小。
圖4 Urban07 序列三維位置軌跡對比圖Fig.4 Urban07 Sequence 3D position trajectory comparison
經(jīng)過計算,相比基于TCN 零速檢測方法,利用本文方法測試Urban07 序列最終的水平軌跡誤差從22 m減小到12 m,而且高度誤差大幅降低,約小于4 m,Urban07 測試序列水平位置軌跡估計圖,如圖5 所示。
圖5 Urban07 序列水平位置軌跡對比圖Fig.5 Urban07 Sequence horizontal position trajectory comparison
由于MEMS IMU 誤差大且復雜,具有非線性、時變性等特點,由此基于MEMS IMU 的捷聯(lián)慣性導航系統(tǒng)誤差在短時間內(nèi)快速發(fā)散,其精度遠遠不能滿足車輛導航需求,本文提出了一種基于深度學習與運動約束的車輛導航方法。該方法先使用改進后的膨脹卷積網(wǎng)絡(luò)構(gòu)建了一種具有非線性、時序性、多因素耦合等特點的陀螺儀輸出模型,利用過去時刻的IMU 數(shù)據(jù)預測當前時刻陀螺儀輸出的誤差,并對其進行補償。其次,利用時間卷積神經(jīng)網(wǎng)絡(luò)動態(tài)檢測車輛的運動狀態(tài),同時,將特定的運動狀態(tài)約束信息作為觀測量,基于IEKF 進行信息融合。本文在公開數(shù)據(jù)集上驗證了所提出的方法,并與基于TCN 檢測的零速信息融合方法和基于TCN 檢測的特定運動狀態(tài)約束融合方法進行了對比,實驗結(jié)果表明該方法能夠有效提高位置精度,降低位置誤差。
本文已經(jīng)證明深度神經(jīng)網(wǎng)絡(luò)在車輛導航定位中有著良好的應用前景,但是深度神經(jīng)網(wǎng)絡(luò)有著龐大數(shù)量的參數(shù),在實際應用中需要具有強大運算能力的嵌入式處理器,計算過程會消耗一定的時間,其計算的實時性也是影響實用性的一個重要因素。進一步優(yōu)化算法,提高算法的實用性是未來的工作。