楊彩云,顧 錦,夏志東,毛科技,胡軍國
(1.衢州學(xué)院電氣與信息工程學(xué)院,浙江 衢州 324000;2.衢州市水利局,浙江 衢州 324000;
3.衢州市柯城區(qū)水利局,浙江 衢州 324000;4.浙江工業(yè)大學(xué)計算機科學(xué)與技術(shù)軟件學(xué)院,浙江 杭州 310014;5.浙江農(nóng)林大學(xué)信息工程學(xué)院,浙江 杭州 311300)
近年來在物聯(lián)網(wǎng)(IoT)的許多應(yīng)用場景中都需要實時和精確的位置信息,如在輔助導(dǎo)航、位置跟蹤和其他基于位置的服務(wù)。全球衛(wèi)星導(dǎo)航系統(tǒng)(GNSS)是目前存在的最普遍的RTLS技術(shù)。然而在室內(nèi)環(huán)境(如商場、醫(yī)院和工業(yè)倉庫)中,由于墻壁和障礙物造成無線信號的非視距(NLOS)傳播、多徑和多通道干擾等現(xiàn)象,使得GNSS系統(tǒng)無法完成室內(nèi)等相對復(fù)雜場景的目標(biāo)定位。
目前常見的RTLS解決方案,通常使用射頻識別(RFID)、Zigbee和超寬帶進(jìn)行測距定位。然而RFID存在信號傳輸距離短、Zigbee存在信號多徑效應(yīng)等不足,導(dǎo)致測距結(jié)果誤差較大。為獲得高精度的定位系統(tǒng),使用超寬帶(UWB)測距是較好的選擇[1-2]。由于其帶寬大,可以減少由墻壁和障礙物引起的誤差源影響。大量的室內(nèi)定位研究都是基于UWB技術(shù)開展,如參考文獻(xiàn)[3]提出了一種新的3D到達(dá)時間(TOA)定位算法,該算法的主要思想是用新變量代替定位估計中的二次項,并使用加權(quán)最小二乘線性估計,然后與卡爾曼濾波器組合以減少傳輸過程中的干擾誤差。參考文獻(xiàn)[4]研究了天線方向?qū)Τ瑢拵?UWB)實時定位系統(tǒng)的定位性能的影響,該研究的目的是評估當(dāng)標(biāo)簽的天線方向未置于最佳方向時的對定位的影響。實驗結(jié)果表明,當(dāng)發(fā)射器和接收器的垂直天線方向與設(shè)備制造商推薦的參數(shù)差別較大,則對定位有顯著影響。參考文獻(xiàn)[5]為提高定位精度,利用多個冗余錨節(jié)點提高信號穩(wěn)定性,并根據(jù)標(biāo)簽的絕對位置和移動信息來降低定位誤差。參考文獻(xiàn)[6]針對UWB連續(xù)定位跟蹤問題,提出一種分區(qū)室內(nèi)定位方法,克服一段時間內(nèi)連續(xù)位置跟蹤的限制,并將該系統(tǒng)應(yīng)用于醫(yī)院分析工作人員的工作量。文獻(xiàn)[7]對UWB室內(nèi)定位技術(shù)中基于TDOA的最小二乘(LS)方法,Chan算法和Taylor算法進(jìn)行了分析,并在室內(nèi)視線環(huán)境下利用動態(tài)和靜態(tài)數(shù)據(jù)進(jìn)行了測試。結(jié)果表明三種定位算法均可達(dá)到分米級定位精度。
雖然上述研究利用UWB技術(shù)可以實現(xiàn)高精度的室內(nèi)定位,但都至少采用三個及以上的錨節(jié)點才可工作,如圖1所示的三角定位法。我們知道目前UWB硬件的價格并不便宜,倘若定位場景較大,則整個室內(nèi)定位系統(tǒng)的成本將非常高。而且錨節(jié)點數(shù)量越多,定位過程中消耗的能量越高,對定位系統(tǒng)長期生存是不利的。為提高室內(nèi)定位性能,提出了一種基于軌跡預(yù)測的雙錨節(jié)點移動定位方法。論文組織結(jié)構(gòu)如下:第一章節(jié)介紹了定位過程中使用到的相關(guān)知識;第二章介紹了在二維平面和三維空間中的定位過程;第三章節(jié)介紹了基于LSTM模型的軌跡預(yù)測方法確定標(biāo)簽的真實位置;第四章對提出的定位方法進(jìn)行實驗分析;最后總結(jié)提出的方法。
圖1 三邊定位
根據(jù)美國聯(lián)邦通訊委員會(FCC)的定義,UWB是一種絕對帶寬大于500 MHz,頻率大于2.5 GHz的傳輸方式;或者對于頻率小于2.5 GHz的系統(tǒng),信號帶寬與中心頻率之比大于0.2。如圖2所示,由于它們的帶寬很大,超高的帶寬可以屏蔽信號在傳播過程中的多徑和衰減效應(yīng),理論上可以減少由墻和障礙物引起的測距影響,因此能夠準(zhǔn)確的測量兩節(jié)點間的直線距離。
圖2 超寬帶圖
使用無線測距實現(xiàn)室內(nèi)定位有多種方法,但總體上可分為兩類:①基于信號強度(RSSI)衰減測距的定位原理;②基于信號到達(dá)時間或到達(dá)時間差的測距,根據(jù)信號傳輸時間和電磁波在空氣中傳播速度計算兩節(jié)點間距離。由于UWB技術(shù)的信號生存期很短,因此基于時間的方案比基于RSSI的方案能獲得更精確的測距結(jié)果。在基于時間的方案中,利用飛行時間(TOF)測量標(biāo)簽和多個錨節(jié)點之間的距離。雙向測距(TWR)涉及標(biāo)簽和每個錨節(jié)點之間的雙向消息交換,測距機制如表1所示:
表1 TWR測距原理表
利用節(jié)點間距離d或信號傳播時間TOF,可以根據(jù)錨節(jié)點確定標(biāo)簽位置。主要方法可通過信號到達(dá)或信號到達(dá)時間差進(jìn)行定位,分別如下所示。
①TOA定位算法
TOA[8-9]算法以錨節(jié)點為圓心,以標(biāo)簽與錨節(jié)點之間的估算距離d為半徑,構(gòu)建圓,三個及以上個錨節(jié)點形成的圓的交點即為標(biāo)簽的位置。二維空間標(biāo)簽位置的計算方法如式(1)所示。式中,di代表標(biāo)簽與錨節(jié)點i的估算距離,(xi,yi)為錨節(jié)點i的坐標(biāo),為已知值,(x,y)表示標(biāo)簽的坐標(biāo),為未知值,當(dāng)錨節(jié)點的數(shù)量大于3時,即可計算出標(biāo)簽的坐標(biāo)。
②TDOA定位算法
TDOA[10-11]代表到達(dá)時間差算法,與TOA相比TDOA的優(yōu)點是不需要在錨節(jié)點與標(biāo)簽之間進(jìn)行時間同步。由于錨節(jié)點和標(biāo)簽的時間不同步,需要計算TOF的偏移量,即到達(dá)時間差。通過TDOA計算形成的目標(biāo)應(yīng)該在雙曲線的交點處。二維空間標(biāo)簽位置的計算方法如式(2)所示。
式中,(xi,yi)和(xj,yj)代表錨節(jié)點i和j的坐標(biāo),(x,y)表示標(biāo)簽的坐標(biāo)點,TOFi和TOFj分別代表標(biāo)簽發(fā)出的廣播信號分別到達(dá)錨節(jié)點i和j的時間。該方法同樣在錨節(jié)點數(shù)量大于等于3時,才能解算出標(biāo)簽的坐標(biāo)值。
目前大量的WSN室內(nèi)定位方法都基于二維平面進(jìn)行討論,而實際場景為三維空間,因此討論三維空間的定位是非常必要的。本章節(jié)分開討論以雙錨節(jié)點進(jìn)行二維平面和三維空間的定位問題,可采用TOA或TDOA進(jìn)行定位。
首先將定位系統(tǒng)進(jìn)行分割,每兩個錨節(jié)點劃分到一個區(qū)域中,如圖3所示。當(dāng)標(biāo)簽在某個區(qū)域中,則利用該區(qū)域的兩個錨節(jié)點的已知信息(包括錨節(jié)點的坐標(biāo)(xi,yi)和(xj,yj)、錨節(jié)點與標(biāo)簽之間的距離di和dj)計算標(biāo)簽的位置(x,y)。
圖3 二維平面定位原理圖
利用式(1)構(gòu)建二元二次方程對,如式(3)所示,即可求得標(biāo)簽的坐標(biāo)(x,y)。但該方程可得到兩個解,分別對應(yīng)兩個圓的交點T(x,y)和T′(x,-y),如圖4所示,這兩個位置其中某一個為標(biāo)簽的實際位置T,而另一個位置為虛假位置T′,只要通過一定的方法排除虛假位置即可實現(xiàn)雙錨節(jié)點的定位。
圖4 坐標(biāo)系轉(zhuǎn)換圖
在三維空間中同樣將定位空間進(jìn)行劃分,每兩個錨節(jié)點劃分到一個長方體內(nèi),每個長方體稱為一個小區(qū),每個小區(qū)都包含兩個錨節(jié)點。三維空間中錨節(jié)點Mi和Mj的三維坐標(biāo)分別為(xi,yi,zi)、(xj,yj,zj),錨節(jié)點Mi和Mj到標(biāo)簽T的距離分別為di、dj。利用上述已知信息可根據(jù)方程組(4)計算標(biāo)簽T可能的位置(x,y,z)。
式(4)是一個三元二次方程,存在三個未知數(shù)x、y、z,幾何意義表示兩個球面的相交位置,如圖5所示。因此利用兩個錨節(jié)點求得的標(biāo)簽位置為一個圓圈,標(biāo)簽的實際位置為該相交圓的某一點,但本文介紹到這里僅僅能確定標(biāo)簽位于該圓圈上,而無法具體確定具體哪個點是標(biāo)簽的位置。
圖5 球面相交圖
一般現(xiàn)有的UWB定位方法需要三個或更多錨節(jié)點,這將消耗大量能量和成本。且目前的研究主要集中在靜態(tài)對象上,而實際室內(nèi)環(huán)境中更大的需求是對移動目標(biāo)的定位,如商場內(nèi)的行人等,因此本文以運動物體為定位對象。第2章節(jié)介紹了在二維平面和三維空間中,基于雙錨節(jié)點的定位情況,但無論是二維平面還是三維空間,都能獲得2個甚至多個定位結(jié)果,因此并不能真正意義上使用兩個錨節(jié)點完成對標(biāo)簽的定位。本章節(jié)主要介紹如何利用標(biāo)簽的歷史定位結(jié)果從當(dāng)前多個預(yù)定位結(jié)果中選擇一個最終且準(zhǔn)確的位置作為標(biāo)簽的定位結(jié)果。
移動標(biāo)簽在移動過程中會呈現(xiàn)趨勢性和連續(xù)性,如人行走,不會出現(xiàn)很大跨越的情況,因此可以利用軌跡預(yù)測方法對下一個時間t即將到達(dá)的位置進(jìn)行預(yù)測。標(biāo)簽的運動軌跡可用式(5)表示。
式中,1≤t≤n,n表示軌跡中定位點的數(shù)量,pt表示t時刻標(biāo)簽的坐標(biāo)(xt,yt)或(xt,yt,zt)。
假設(shè)標(biāo)簽在定位區(qū)域中以勻速v移動,由于標(biāo)簽移動在時間上具有趨勢性和連續(xù)性,因此本文采用時間關(guān)聯(lián)性較強的深度學(xué)習(xí)模型LSTM[12-14]對軌跡進(jìn)行預(yù)測,具體預(yù)測過程如下所示:
在深度學(xué)習(xí)中循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)能夠較好的處理時間序列上的問題,RNN的輸出由當(dāng)前的特征輸入和前一時刻的狀態(tài)決定,如圖6所示。將標(biāo)簽軌跡序列Path輸入到RNN模型中,則該模型隱藏層的輸出ht如式(6)所示。
圖6 RNN結(jié)構(gòu)圖
式中,σh表示輸出的激活函數(shù),wph、whh表示網(wǎng)絡(luò)內(nèi)部相鄰層之間的權(quán)重矩陣,ht-1為模型上一時刻的狀態(tài),bh表示偏置系數(shù)。
RNN的輸入層輸出結(jié)果如式(7)所示。
式中,σy表示激活函數(shù),who表示輸出層與隱藏層之間的權(quán)重矩陣,ht表示隱藏層的輸出結(jié)果,bo表示輸出層偏置系數(shù),pt表示標(biāo)簽位置預(yù)測結(jié)果。
由于RNN模型隨著時間序列的加長,模型變深以后會存在梯度消失的情況,為解決該問題,引入LSTM模型,該模型是一種RNN的變種,能夠長期存儲記憶。其基本單元相同,如圖7所示,將該基本單元替換RNN模型中的結(jié)構(gòu)A即為LSTM模型。該模型的基本單元包含輸入門it,遺忘門ft和輸出門ot,其中輸入門和輸出門用于控制信息流的輸入和輸出,遺忘門用于控制前一時刻的狀態(tài),該結(jié)構(gòu)通過這三種門實現(xiàn)長期的記憶,LSTM結(jié)構(gòu)中的參數(shù)如式(8)所示。
圖7 LSTM單元結(jié)構(gòu)圖
式中,wpf、whf、wcf、wpi、whi、wci、wpo、who、wco、wpc、whc都表示模型內(nèi)部的權(quán)重值;bf、bi、bo、bc都表示模型的偏置參數(shù);ct表示在t時刻模型的輸出狀態(tài),ht表示t時刻隱藏層輸出結(jié)果,將ht輸入式(7)即可得到t時刻標(biāo)簽T的預(yù)測位置。
利用LSTM模型預(yù)測標(biāo)簽軌跡是一種較可靠的方法,但本文并不需要預(yù)測標(biāo)簽未來可能到達(dá)的幾個點,僅需要預(yù)測標(biāo)簽下一個時刻的位置(如圖8所示,p1-p5表示已知的軌跡,根據(jù)歷史軌跡預(yù)測出下一時刻標(biāo)簽可能到達(dá)的位置p′6),然后結(jié)合第1~2章節(jié)的內(nèi)容即可實現(xiàn)雙錨節(jié)點的定位。
圖8 標(biāo)簽軌跡預(yù)測圖
將標(biāo)簽軌跡中上一個已知點和當(dāng)前的預(yù)測結(jié)果以直線連接,如圖9中p5表示上一時刻的定位結(jié)果,p′6表示利用LSTM模型預(yù)測的下一時刻的位置。將兩個位置直線連接,在二維平面上利用兩個錨節(jié)點進(jìn)行定位,計算得到兩個位置都可能是標(biāo)簽的實際位置(見圖4),如圖9(a)中T和T′所示,其中位置T與直線的垂直距離為D1,位置T′與直線的垂直距離為D2,且D1<D2。由于標(biāo)簽在移動過程中具有一定連續(xù)性,因此位置T是標(biāo)簽實際位置的概率高于位置T′,因此可以確定t時刻,對標(biāo)簽的定位結(jié)果為T位置。
圖9 定位結(jié)果確定原理圖
在三維空間中,標(biāo)簽的預(yù)定位結(jié)果為一個圓(如圖5),而標(biāo)簽的實際位置位于圓上的某一個點,與二維平面確定標(biāo)簽位置相同,將圓上某個距離直線最近的一個點作為標(biāo)簽的定位結(jié)果,如圖9(b)所示。雙錨節(jié)點定位算法的具體流程如表2所示。
表2 雙錨節(jié)點定位流程表
實驗采用MATLAB平臺和真實室內(nèi)場景進(jìn)行測試分析,基于TOA算法進(jìn)行定位。采用平均定位誤差A(yù)E作為衡量定位精度的標(biāo)準(zhǔn),如式(9)所示。
式中,(x,y,z)表示標(biāo)簽的實際坐標(biāo),(xi,yi,zi)表示定位算法計算得到的標(biāo)簽坐標(biāo),n表示定位的點數(shù)。
實驗中以仿真方式模擬標(biāo)簽在定位區(qū)域中移動,每條路徑由200個點組成,且標(biāo)簽移動具有連續(xù)性。利用模擬方法收集定位區(qū)域內(nèi)3 000條移動軌跡,用于LSTM模型的訓(xùn)練,默認(rèn)情況下傳感器節(jié)點的最大通信半徑R為30m。
二維平面定位采用仿真方式進(jìn)行,定位區(qū)域長為120m,寬為80m,實驗中錨節(jié)點數(shù)量為15個,標(biāo)簽的數(shù)量為30個。為驗證定位精度,標(biāo)簽的實際位置是已知的。實驗結(jié)果如圖10所示,為標(biāo)簽移動第5次之后的結(jié)果,即在該結(jié)果之前,移動標(biāo)簽已經(jīng)完成了前4次定位。
圖10 二維平面定位結(jié)果圖
實驗結(jié)果表明本文提出的雙錨節(jié)點定位算法對標(biāo)簽的定位結(jié)果是可靠的,標(biāo)簽的估算位置與實際位置之間的距離非常接近,有些標(biāo)簽的定位結(jié)果與實際結(jié)果甚至重疊了。
為驗證定位算法對移動標(biāo)簽的定位性能,以圖10中某個標(biāo)簽為實驗對象,標(biāo)簽勻速在定位區(qū)域內(nèi)移動,連續(xù)對標(biāo)簽進(jìn)行定位,實驗結(jié)果如圖11所示。圖11(a)表示標(biāo)簽的實際移動路徑,圖11(b)表示利用本文算法對標(biāo)簽連續(xù)定位的散點圖,圖11(c)表示將定位散點圖按順序連接后,再利用Kalman濾波算法進(jìn)行濾波得到的標(biāo)簽軌跡。
圖11 軌跡定位結(jié)果圖
實驗結(jié)果表明對移動標(biāo)簽的定位得到的軌跡與標(biāo)簽實際移動軌跡重合度非常高,該散點圖的平均定位誤差A(yù)E為6.43 cm。利用kalman濾波算法對軌跡散點圖進(jìn)行濾波處理后得到的軌跡圖與標(biāo)簽實際軌跡重合度更高,平均定位誤差為5.24 cm。
當(dāng)定位區(qū)域中錨節(jié)點數(shù)量不同時,理論上對定位精度存在影響。本實驗在定位區(qū)域內(nèi)隨機部署不同數(shù)量的錨節(jié)點,對30個標(biāo)簽進(jìn)行定位,實驗結(jié)果如表3所示。
表3 二維平面不同錨節(jié)點數(shù)量的定位誤差
錨節(jié)點數(shù)量為5個時,平均定位誤差為16.71 cm;錨節(jié)點數(shù)量為10個時,平均定位誤差為11.36 cm;錨節(jié)點數(shù)量增加5個,其平均定位誤差降低了5.35 cm。當(dāng)錨節(jié)點數(shù)量為15個時,平均定位誤差為6.48 cm;錨節(jié)點數(shù)量為20個時,平均定位誤差為6.35 cm。從15個錨節(jié)點增加到20個時,定位誤差僅僅降低了0.13 cm,基本沒提高,因為本文僅采用2個錨節(jié)點即可實現(xiàn)定位,對錨節(jié)點數(shù)量沒有太高要求,因此后續(xù)錨節(jié)點增加,對定位精度的提高幫助也不大。
在三維空間中利用DWM1000模塊(UWB模塊)進(jìn)行實物實驗,部署兩個UWB模塊作為錨節(jié)點,一個UWB模塊作為移動標(biāo)簽,如圖12所示。兩個錨節(jié)點距離地面的高度都為1.3 m,兩個錨節(jié)點之間的距離為6.6 m,標(biāo)簽節(jié)點的高度z可調(diào)整三角架改變,實驗過程中定位高度z如表4所示。移動標(biāo)簽從位置a移動到位置b,總共定位9次,實驗結(jié)果如圖13所示。
圖12 三維定位場景圖
表4 標(biāo)簽節(jié)點高度表
圖13 三維定位誤差圖
在三維空間中進(jìn)行定位,實驗結(jié)果表明在對實物標(biāo)簽進(jìn)行9次定位中,誤差最大為10.6 cm,誤差最小的定位點為5.3 cm,九個定位點的平均定位誤差A(yù)E為7.58 cm。
二維平面定位采用仿真方式進(jìn)行,定位區(qū)域長為120 m,寬為80 m,實驗中錨節(jié)點數(shù)量為15個,標(biāo)簽的數(shù)量為30個。在三維空間中的定位同上所述。分別在兩種情況下,對傳感器節(jié)點通信半徑對平均定位精度的影響進(jìn)行分析,傳感器節(jié)點的通信半徑取值范圍從10 m到40 m,間隔5 m取值。實驗結(jié)果如圖14所示。
圖14 傳感器節(jié)點通信半徑對平均定位精度影響圖
實驗結(jié)果表明,在二維定位以及三維定位中,平均誤差A(yù)E的值隨著傳感器節(jié)點的最大通信半徑的增大而降低。在達(dá)到30 m后,平均誤差降幅不明顯。與此同時,在增大傳感器節(jié)點最大通信半徑的同時,其開銷也會增大。在達(dá)到30 m之后,增大傳感器節(jié)點的最大通信半徑的收益不高,最終決定將傳感器節(jié)點的最大通信半徑定位30 m。
本文提出的方法利用兩個錨節(jié)點即可實現(xiàn)定位,理論上可以在錨節(jié)點稀疏的情況下實現(xiàn)高精度的定位。本實驗對比了參考文獻(xiàn)[5]提出的基于冗余錨節(jié)點的定位優(yōu)化方法和文獻(xiàn)[15]提出的基于時間逆轉(zhuǎn)的兩步TOA估計算法進(jìn)行對比。文獻(xiàn)[5]提出的定位算法需要錨節(jié)點的數(shù)量多于3個,文獻(xiàn)[15]提出的定位算法至少需要3個錨節(jié)點。實驗在一個5 m×5 m的二維平面進(jìn)行,定位50個標(biāo)簽的位置,通過改變定位區(qū)域中錨節(jié)點的部署數(shù)量驗證三種算法的定位精度,實驗結(jié)果如圖15所示,橫坐標(biāo)為錨節(jié)點數(shù)量,縱坐標(biāo)為平均定位誤差。
圖15 定位精度對比圖
實驗結(jié)果表明隨著定位區(qū)域內(nèi)錨節(jié)點數(shù)量增加,三種方法的定位誤差首先都快速降低,當(dāng)錨節(jié)點數(shù)量達(dá)到一定值時,定位誤差降低速度變緩。因為錨節(jié)點增加以后,定位過程所需要的錨節(jié)點數(shù)量區(qū)域飽和。在相同數(shù)量錨節(jié)點時,本文提出的方法定位誤差最小,其次是文獻(xiàn)[15]提出的兩階段TOA定位算法,最后是文獻(xiàn)[5]提出的冗余錨節(jié)點定位算法,因為本文定位算法最少需要兩個錨節(jié)點即可完成定位,對錨節(jié)點的需求小于文獻(xiàn)[15]的方法,而文獻(xiàn)[5]對錨節(jié)點的需求最大,該方法需要三個以上的錨節(jié)點來降低定位誤差。
當(dāng)錨節(jié)點數(shù)量不少于14個時,本文提出的定位方法取得的平均誤差已經(jīng)低于10 cm;文獻(xiàn)[15]提出的方法當(dāng)錨節(jié)點數(shù)量不少于20個時,平均定位誤差低于10 cm;文獻(xiàn)[5]提出的方法當(dāng)錨節(jié)點數(shù)量不少于22個時,平均定位誤差低于10 cm。綜上所述,本文提出的方法能夠在稀疏錨節(jié)點的情況下實現(xiàn)對標(biāo)簽的精確定位。
針對目前大部分的室內(nèi)定位算法需要至少三個錨節(jié)點才能實現(xiàn)定位問題,提出一種基于標(biāo)簽軌跡預(yù)測的雙錨節(jié)點定位方法。利用標(biāo)簽的歷史軌跡結(jié)合LSTM模型進(jìn)行軌跡預(yù)測,然后從雙錨節(jié)點定位結(jié)果中選擇最佳位置作為最終的定位結(jié)果,并在二維平面和三維空間中討論了定位效果,實驗結(jié)果表明提出的方法能在稀疏錨節(jié)點的情況下實現(xiàn)高精度定位。