高麗麗,趙怡焯
(內(nèi)蒙古科技大學(xué)信息工程學(xué)院,內(nèi)蒙古包頭 014010)
隨著人們對(duì)定位需求的不斷增加,對(duì)位置的需求不在局限于室外,室內(nèi)定位開始進(jìn)入人們的視野。目前,室外定位技術(shù)已經(jīng)比較成熟,借助GPS全球定位系統(tǒng)可達(dá)到較高的定位精度,在生活中得到廣泛應(yīng)用,但是由于GPS信號(hào)在室內(nèi)環(huán)境很容易被阻擋,室內(nèi)定位算法一直無法達(dá)到室外定位算法的精準(zhǔn)程度,近年來有很多學(xué)者和科研團(tuán)體投入到室內(nèi)定位算法的研究和實(shí)踐過程中,極大地促進(jìn)了室內(nèi)定位算法研究的發(fā)展。
目前常見的室內(nèi)定位技術(shù)有很多,主要分為兩大類:第一類是基于外置信號(hào)源的室內(nèi)定位技術(shù),主要是利用了藍(lán)牙[1]、Wi-Fi[2],超寬帶UWB[3],射頻識(shí)別RFID[4]等外置信號(hào)源設(shè)備來獲取信息實(shí)現(xiàn)定位,第二類是基于內(nèi)置信號(hào)源的室內(nèi)定位技術(shù),主要是通過傳感器提取的信息來實(shí)現(xiàn)定位。
第一類定位方法在進(jìn)行定位時(shí)需要額外部署對(duì)應(yīng)的特定設(shè)備,有的存在高額成本,各自具有一定的空間局限性,難以在生活中廣泛推行。第二類定位方法是通過傳感器來獲取與位置有關(guān)的信息來實(shí)現(xiàn)定位,主要用到的傳感器有陀螺儀,加速度計(jì)等傳感器。目前智能手機(jī)已經(jīng)成為了人們必不可少的隨身物品,且越來越多的各類高性能MEMS傳感器內(nèi)置其中[5]。由于智能手機(jī)廣泛的使用覆蓋面積和內(nèi)置MEMS傳感器優(yōu)良的數(shù)據(jù)獲取能力,利用智能手機(jī)內(nèi)置的加速度計(jì)和陀螺儀采集行人運(yùn)動(dòng)信息,獲取加速度和角速度數(shù)據(jù),再利用行人定位模型進(jìn)行定位,但單獨(dú)采用原始MEMS傳感器數(shù)據(jù),受到陀螺儀數(shù)據(jù)所含有的高斯白噪聲和常值漂移的影響將導(dǎo)致定位算法的誤差隨時(shí)間增加快速積累,這將大大降低定位算法的精度[6]。
近些年,深度學(xué)習(xí)的算法研究和應(yīng)用實(shí)踐層出不窮。深度學(xué)習(xí)方法用樣本數(shù)據(jù)訓(xùn)練模型,使其自主尋找數(shù)據(jù)內(nèi)在規(guī)律和層級(jí)結(jié)構(gòu)[7],這些學(xué)習(xí)過程可輸入的數(shù)據(jù)包括數(shù)字、文本、圖像數(shù)據(jù)等,其目的是讓計(jì)算機(jī)達(dá)到人的智能程度,并對(duì)研究目標(biāo)進(jìn)行預(yù)測(cè)。Lv Y[8]等使用反向傳播神經(jīng)網(wǎng)絡(luò)(BPNN)來進(jìn)行定位,Saadeddin K[9]等人總結(jié)了很多基于人工智能的定位誤差抑制算法,提出了自適應(yīng)模糊神經(jīng)網(wǎng)絡(luò)。通常將傳感器所采集的數(shù)據(jù)當(dāng)作是時(shí)間序列數(shù)據(jù)來進(jìn)行處理,上列方法都無法考慮到歷史數(shù)據(jù)的時(shí)效性。
綜上所述,針對(duì)MEMS陀螺儀數(shù)據(jù)所帶有的高斯白噪聲和常值漂移,本文提出了一種通過卡爾曼濾波對(duì)MEMS陀螺儀傳感器所得數(shù)據(jù)進(jìn)行預(yù)處理,剔除數(shù)據(jù)本身所帶有的高斯白噪聲,采用由RNN神經(jīng)網(wǎng)絡(luò)發(fā)展而來的LSTM長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)抑制陀螺儀常值漂移,結(jié)合經(jīng)典的定位算法,顯著提高了MEMS加速度計(jì)和陀螺儀在室內(nèi)定位的精度。
在導(dǎo)航系統(tǒng)中,坐標(biāo)系的選擇十分重要,對(duì)不同的運(yùn)動(dòng)采取不同的坐標(biāo)系選擇,合理分析載體在不同坐標(biāo)系下的信息[10]。本文研究的為步行者室內(nèi)導(dǎo)航,這里只介紹導(dǎo)航坐標(biāo)系和載體坐標(biāo)系。
導(dǎo)航坐標(biāo)系:簡(jiǎn)稱n系,導(dǎo)航坐標(biāo)系是行人進(jìn)行導(dǎo)航定位時(shí)采用的參考坐標(biāo)系,以地理坐標(biāo)系上某一位置作為行人運(yùn)動(dòng)的起點(diǎn),該起點(diǎn)為原點(diǎn)建立導(dǎo)航坐標(biāo)系,以原點(diǎn)處水平面為參考,Xn軸、Yn軸、Zn軸沿原點(diǎn)分別指向東、北和天三個(gè)方向。
載體坐標(biāo)系:簡(jiǎn)稱b系,載體坐標(biāo)系的原點(diǎn)Ob為載體(智能手機(jī))的質(zhì)心位置,Xb和Yb分別指向載體向右方向和載體向前方向,Zb軸垂直于Xb和Yb所成平面垂直載體向上。行人的姿態(tài)角包括:俯仰角、滾動(dòng)角和航向角,姿態(tài)角的計(jì)算是根據(jù)載體坐標(biāo)系相對(duì)于導(dǎo)航坐標(biāo)系的運(yùn)動(dòng)來確定的。
四元數(shù)是由4個(gè)元素構(gòu)成的數(shù),公式如下:
P(p0,p1,p2,p3)=p0+p1i+p2j+p3k
(1)
其中,P0-P3是實(shí)數(shù),而i、j、k是虛數(shù)單位。
(2)
式(1)經(jīng)過轉(zhuǎn)化,可以寫成矩陣形式
(3)
通過皮卡方法求解上面式(3),可得如下結(jié)果
(4)
其中式(4)中Δλ的求解方法如下:
(5)
式(5)中Δθx,Δθy,Δθz為陀螺儀在單位時(shí)間內(nèi)三軸方向的角增量。
(6)
通過方向余弦矩陣,可以求得行人的航向角θ、橫滾角φ、俯仰角γ:
(7)
故可得俯仰角γ角,航向角θ、滾動(dòng)角φ為
(8)
由以上分析可得,通過四元數(shù)算法求解出方向余弦矩陣,在通過式(8),可以求出行人航向角,為行人室內(nèi)定位奠定航向基礎(chǔ)。
建立如下圖1所示的行人定位模型,行人在直線行走時(shí),由于在轉(zhuǎn)向時(shí)采用對(duì)行人運(yùn)動(dòng)軌跡建立以曲率為基礎(chǔ)的數(shù)學(xué)模型來替代復(fù)雜的姿態(tài)問題。
假設(shè)目標(biāo)在控制輸入U(xiǎn)(k-1)的作用下,轉(zhuǎn)向運(yùn)動(dòng)中的變化如圖1所示。
假設(shè)輸入控制可以表示為
(9)
Δd(k-1)表示行人在k-1時(shí)刻移動(dòng)的線位移,Δθ(k-1)為k-1時(shí)刻行人航向改變角度。
則行人的狀態(tài)X(k)可以表示為
(10)
X(k)表示行人全局位姿,x(k),y(k)為行人坐標(biāo)系中坐標(biāo),θ(k)為行人航向角。
由此可以確定目標(biāo)的動(dòng)態(tài)方程為
X(k)=f(X(k-1),U(k-1))+ω(k-1)
(11)
其中ω(k-1)是目標(biāo)定位過程產(chǎn)生的噪聲,本文假設(shè)其為高斯白噪聲。
若目標(biāo)的運(yùn)動(dòng)軌跡為弧形,則上式表達(dá)為
(12)
若目標(biāo)的運(yùn)動(dòng)軌跡為直線,則上式表達(dá)為
(13)
行人航向?qū)Ш较到y(tǒng)的噪聲主要源自加速度計(jì)和陀螺儀的測(cè)量過程,姿態(tài)誤差由角速度誤差造成,速度誤差由比力測(cè)量造成,就陀螺儀來說,它的誤差主要表現(xiàn)為高斯白噪聲、漂移(常值漂移和溫度漂移)。卡爾曼濾波器可以對(duì)MEMS陀螺儀獲取的數(shù)據(jù)進(jìn)行降噪和誤差校正。
卡爾曼濾波器模型
(14)
其中,Xk是系統(tǒng)狀態(tài)向量,Zk是系統(tǒng)量測(cè)向量,ωk表示p維系統(tǒng)過程噪聲;Fk/k-1是系統(tǒng)狀態(tài)轉(zhuǎn)移矩陣,Vk是量測(cè)噪聲;Γk/k-1是噪聲輸入矩陣,Hk是量測(cè)矩陣,k代表時(shí)刻。
使用卡爾曼最優(yōu)遞推估計(jì)算法,可以對(duì)噪聲數(shù)據(jù)進(jìn)行估計(jì)和校正,假設(shè)t時(shí)刻的最優(yōu)估計(jì)為k,則:
狀態(tài)預(yù)測(cè)為
k/k-1=Fk/k-1k-1+Bk/k-1Uk
(15)
狀態(tài)估計(jì)為
k=k/k-1+Kk(Zk-Hkk/k-1)
(16)
濾波增益矩陣為
(17)
預(yù)測(cè)誤差方差陣為
(18)
估計(jì)誤差方陣為
(19)
濾波增益矩陣可轉(zhuǎn)化為
(20)
估計(jì)誤差方陣可轉(zhuǎn)化為
Pk=(I-KkHk)Pk/k-1
(21)
卡爾曼濾波算法計(jì)算過程如圖2所示。
RNN模型的全稱是Recurrent Neural Network,循環(huán)神經(jīng)網(wǎng)絡(luò),通過輸入序列數(shù)據(jù),沿序列正向遞歸。相比較于傳統(tǒng)的DNN和BP反向傳播神經(jīng)網(wǎng)絡(luò),RNN具有前后時(shí)序數(shù)據(jù)參數(shù)共享的優(yōu)良特性,RNN可以將參數(shù)進(jìn)行記憶并共享給后面的網(wǎng)絡(luò)節(jié)點(diǎn),在大型的數(shù)據(jù)訓(xùn)練中可以降低波動(dòng),加快學(xué)習(xí)過程。RNN可以處理具有時(shí)間序列特征的數(shù)據(jù),時(shí)間序列數(shù)據(jù)表征了一類事物隨時(shí)間的狀態(tài)變化,此處的“時(shí)間”并非表示時(shí)刻的時(shí)間,而是反映了后面數(shù)據(jù)與前面數(shù)據(jù)存在關(guān)聯(lián)的特性,即每個(gè)輸出值不僅與當(dāng)前輸入值有關(guān)還與之前時(shí)刻的輸出值有關(guān),但RNN存在長(zhǎng)序列數(shù)據(jù)在訓(xùn)練過程中出現(xiàn)的梯度爆炸或梯度彌散的問題[11]。
長(zhǎng)短時(shí)記憶(Long short-term memory,LSTM)是RNN的變種[12]。RNN的關(guān)鍵之處在于,將前面的信息連接到后面的信息,但很多情況下RNN所需要的前序數(shù)據(jù)間隔較遠(yuǎn),當(dāng)時(shí)間間隔逐漸增大時(shí),RNN很容易喪失學(xué)習(xí)遠(yuǎn)距離信息的能力。并且RNN存在長(zhǎng)序列數(shù)據(jù)在訓(xùn)練過程中出現(xiàn)的梯度爆炸或梯度彌散的問題,而LSTM結(jié)構(gòu)正可以解決這個(gè)問題。二者在網(wǎng)絡(luò)結(jié)構(gòu)上對(duì)比如下圖3所示
由圖3可以看出,LSTM神經(jīng)網(wǎng)絡(luò)記憶單元的讀、寫,遺忘操作由三個(gè)門限單元來控制的。假設(shè)輸入時(shí)間序列為x,t為當(dāng)前時(shí)刻,則各單元的狀態(tài)用如下公式表示。
輸入單元:
gt=tanh(Wxggt-1+Whght-1+bg)
(22)
門控單元:
it=σ(Wxiit-1+Whiht-1+bi)
(23)
f(t)=σ(Wxfi(t-1)+Whfh(t-1)+bf)
(24)
o(t)=σ(Wxoi(t-1)+Whoh(t-1)+bo)
(25)
記憶單元:
M(t)=f(t)M(t-1)+i(t)g(t)
(26)
狀態(tài)輸出單元:
h(t)=o(t)tanh(M(t))
(27)
以上公式詳細(xì)的解釋了LSTM通過輸入門,遺忘門和輸出門來提高模型特征能力和記憶能力,從而解決了信息的長(zhǎng)時(shí)記憶問題。
1)數(shù)據(jù)集
本文中,數(shù)據(jù)集是通過智能手機(jī)采集而來,采樣頻率選擇100Hz。行人行走區(qū)域平面圖(20 m×20 m)如下圖4所示,行人順時(shí)針行走,通過四個(gè)直角,四條邊回到起始位置結(jié)束。行走時(shí),手機(jī)保持平放在胸前,通過內(nèi)置陀螺儀和加速度計(jì)進(jìn)行數(shù)據(jù)的采集,假定行人行走時(shí)保持勻速運(yùn)動(dòng)。
2)數(shù)據(jù)歸一化處理
對(duì)訓(xùn)練的特征數(shù)據(jù)進(jìn)行歸一化處理,是為了將數(shù)據(jù)限定到一定范圍內(nèi),減少奇異樣本數(shù)據(jù),使網(wǎng)絡(luò)快速收斂,提升模型精度。采用的是min-max標(biāo)準(zhǔn)化,對(duì)原始數(shù)據(jù)進(jìn)行線性變換,將數(shù)據(jù)歸一到[0,1]之間,轉(zhuǎn)換函數(shù)如下所示
(28)
其中max和min分別為樣本數(shù)據(jù)的最大值和最小值,x為原始數(shù)據(jù),x′為歸一化后數(shù)據(jù)。
3)數(shù)據(jù)集樣本構(gòu)造
數(shù)據(jù)集是神經(jīng)網(wǎng)絡(luò)訓(xùn)練的基礎(chǔ),樣本構(gòu)造可以提高模型穩(wěn)定性和預(yù)測(cè)精度,本文采用的樣本構(gòu)造方法如下圖5所示。首先,將時(shí)間序列數(shù)據(jù)經(jīng)過歸一化后,以滑動(dòng)窗口的方式構(gòu)造樣本,進(jìn)行數(shù)據(jù)集劃分。其中,輸出數(shù)據(jù)為窗口最后一個(gè)值。因?yàn)楸疚乃脭?shù)據(jù)具有時(shí)間序列屬性,為保證數(shù)據(jù)的輸入,輸出具有連續(xù)性,同時(shí)為提高樣本數(shù)目,實(shí)驗(yàn)中,窗口滑動(dòng)步長(zhǎng)選取S=1,為檢驗(yàn)?zāi)P托阅?,分別選取標(biāo)簽長(zhǎng)度N=5,10,15進(jìn)行樣本集劃分得到。
4)LSTM隱藏神經(jīng)元個(gè)數(shù)選擇
神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)精度取決于隱藏神經(jīng)元個(gè)數(shù)的選擇,假設(shè)隱藏神經(jīng)元個(gè)數(shù)太少,數(shù)據(jù)可能欠擬合,影響模型訓(xùn)練結(jié)果,影響預(yù)測(cè)精度。反之,隱藏神經(jīng)元個(gè)數(shù)太多,模型訓(xùn)練時(shí)間久,導(dǎo)致數(shù)據(jù)過擬合。因此,合理選擇隱藏神經(jīng)元個(gè)數(shù)十分重要。
5)反歸一化
使用訓(xùn)練好的 LSTM 模型對(duì)測(cè)試集進(jìn)行預(yù)測(cè),得到預(yù)測(cè)數(shù)據(jù),將其進(jìn)行反歸一化處理,得到當(dāng)前時(shí)刻的陀螺儀的最終預(yù)測(cè)值。
經(jīng)過實(shí)驗(yàn)對(duì)比,選取標(biāo)簽長(zhǎng)度為5進(jìn)行樣本集劃分,確定LSTM模型的輸入,輸出參數(shù)設(shè)定。
具體的輸入序列可用公式表示為
xi={xi-1,xi-2,xi-3,xi-4}T
(29)
為當(dāng)前時(shí)刻的前四個(gè)時(shí)刻的陀螺儀輸出值,即 LSTM輸入層節(jié)點(diǎn)有4個(gè),設(shè)置timestep為4,輸出為當(dāng)前時(shí)刻陀螺數(shù)據(jù)yt,通過訓(xùn)練集進(jìn)行模型的訓(xùn)練。
在模型訓(xùn)練時(shí),將X,Y,Z三軸角增量分別進(jìn)行訓(xùn)練以達(dá)到更高的訓(xùn)練精確度。
LSTM網(wǎng)絡(luò)模型算法流程如圖6所示。
訓(xùn)練集的規(guī)模和質(zhì)量直接決定了模型預(yù)測(cè)的準(zhǔn)確率,因此本文通過實(shí)際行走試驗(yàn)采集了達(dá)6000條以上的數(shù)據(jù)樣本,每條數(shù)據(jù)記錄的屬性包括三軸陀螺儀數(shù)據(jù)和三軸加速度數(shù)據(jù)。
訓(xùn)練過程中,使用Python3.6和Tensorflow1.13.1進(jìn)行數(shù)據(jù)的訓(xùn)練和預(yù)測(cè)。為了使模型性能得到優(yōu)化,選擇Adam優(yōu)化算法調(diào)整網(wǎng)絡(luò)權(quán)重,隨機(jī)梯度下降保持一個(gè)單一的學(xué)習(xí)速率(稱為alpha),并且在訓(xùn)練過程中學(xué)習(xí)速率不會(huì)改變。每一個(gè)網(wǎng)絡(luò)權(quán)重(參數(shù))都保持一個(gè)學(xué)習(xí)速率,并隨著學(xué)習(xí)的展開而單獨(dú)地進(jìn)行調(diào)整。該方法從梯度的第一次和第二次矩的預(yù)算來計(jì)算不同參數(shù)的自適應(yīng)學(xué)習(xí)速率。Adam優(yōu)化方法在每一次迭代時(shí),為使參數(shù)維持穩(wěn)定,將學(xué)習(xí)率控制在一定區(qū)間內(nèi)。
算法步驟如下:
1)計(jì)算梯度的一階矩估計(jì)和二階矩估計(jì):
mt=μmt-1+(1-μ)gt
(30)
(31)
其中,一階矩估計(jì)的衰減率μ為0.9、二階矩估計(jì)的衰減率ν為0.999。
2)再計(jì)算無偏估計(jì)的校正值:
(32)
(33)
3)最后計(jì)算梯度更新值,η=0.01為學(xué)習(xí)率:
(34)
測(cè)試集驗(yàn)證流程如圖7所示。
整個(gè)訓(xùn)練過程的學(xué)習(xí)曲線如圖8所示??梢园l(fā)現(xiàn)驗(yàn)證集錯(cuò)誤率呈下降趨勢(shì)明顯,當(dāng)訓(xùn)練樣本多于兩次時(shí),訓(xùn)練集和驗(yàn)證集的誤差已經(jīng)趨同,說明當(dāng)訓(xùn)練樣本達(dá)到兩次時(shí),已經(jīng)滿足模型訓(xùn)練的樣本數(shù)目要求,且已完成訓(xùn)練模型的預(yù)測(cè)效果表現(xiàn)良好。
由損失函數(shù)可以看出,模型最終收斂到一個(gè)很小的值,如圖9所示,橙色為陀螺儀預(yù)測(cè)曲線,藍(lán)色為陀螺儀真實(shí)數(shù)據(jù),預(yù)測(cè)曲線很好的反應(yīng)了陀螺儀真實(shí)角度的變化。
為衡量所建模型性能,保證其模型可行性及預(yù)測(cè)準(zhǔn)確性,本文采用平均絕對(duì)誤差(MAE),均方誤差(MSE)及決定系數(shù)R2作為評(píng)價(jià)指標(biāo)來評(píng)價(jià)模型的預(yù)測(cè)效果。其具體表達(dá)式如式所示
(35)
(36)
(37)
LSTM神經(jīng)網(wǎng)絡(luò)對(duì)陀螺儀輸出數(shù)據(jù)預(yù)測(cè)效果表1所示。
表1 預(yù)測(cè)效果
行人行走方向估計(jì)如圖10所示,圖中曲線分別是直接使用陀螺儀數(shù)據(jù)和經(jīng)過LSTM處理后數(shù)據(jù)計(jì)算行人行走方向和真實(shí)方向的對(duì)比,90°代表經(jīng)過一個(gè)直角拐彎,從圖中可以看出直接由陀螺儀計(jì)算角度存在很大的累計(jì)誤差,特別是在方向突變時(shí),時(shí)間越長(zhǎng),累積誤差越大。當(dāng)使用經(jīng)過LSTM神經(jīng)網(wǎng)絡(luò)處理后的數(shù)據(jù)進(jìn)行計(jì)算時(shí),得到的方向基本與真是方向一致,表明該算法可以有效抑制陀螺儀常值漂移。
測(cè)試實(shí)驗(yàn)的對(duì)比方法設(shè)置如下:
1)使用陀螺儀輸出數(shù)據(jù)直接定位。
2)使用LSTM神經(jīng)網(wǎng)絡(luò)訓(xùn)練后進(jìn)行定位。
經(jīng)過實(shí)驗(yàn),繪制了如圖11所示的路線圖。
可以看出,直接使用陀螺儀慣導(dǎo)數(shù)據(jù)的路線和實(shí)際路線偏離程度很大,使用本文基于LSTM神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)定位模型,預(yù)測(cè)軌跡和實(shí)際路線吻合程度很高,可見模型準(zhǔn)確率可觀。
不同定位方法的定位誤差累積分布圖如圖12所示,若使用陀螺儀直接進(jìn)行定位,整個(gè)行走過程中的定位誤差非常大,平均定位誤差為2.83m,但是本文所提出的LSTM神經(jīng)網(wǎng)絡(luò)定位方法定位結(jié)果優(yōu)秀,小于3M的定位誤差達(dá)到79.01%,整個(gè)行走過程中平均定位誤差僅有1.33m。
在無法使用GPS的室內(nèi)定位中,本文利用智能手機(jī)內(nèi)置的MEMS傳感器采集定位所需慣導(dǎo)數(shù)據(jù),設(shè)計(jì)了基于LSTM的神經(jīng)網(wǎng)絡(luò)定位模型,使用Adam優(yōu)化方法對(duì)訓(xùn)練過程進(jìn)行了優(yōu)化處理,相比于直接使用陀螺儀數(shù)據(jù)的進(jìn)行定位,其精確程度大大提升,平均誤差在1.33米,能夠滿足用戶的位置服務(wù)需求。
人工智能方法可以在無先驗(yàn)知識(shí)的前提下,對(duì)模型進(jìn)行訓(xùn)練使其達(dá)到人的智能程度,使用驗(yàn)證集數(shù)據(jù)可以對(duì)訓(xùn)練好的模型進(jìn)行驗(yàn)證。本文提出的LSTM神經(jīng)網(wǎng)絡(luò)在剔除陀螺儀數(shù)據(jù)含有的常值漂移時(shí)達(dá)到了很好地效果,以此補(bǔ)充了單純使用MEMS陀螺儀輸出原始數(shù)據(jù)進(jìn)行定位的不足,但是定位精度還是受到傳感器本身測(cè)量精度,無法達(dá)到更高精度,因此,接下來可以先校準(zhǔn)傳感器的測(cè)量誤差,然后結(jié)合LSTM神經(jīng)網(wǎng)絡(luò)定位算法,從根本上提高定位結(jié)果。