袁 楓,焦良葆,陳 楠,顧慧東
(南京工程學(xué)院人工智能產(chǎn)業(yè)技術(shù)研究院,江蘇 南京 211167)
在嚴(yán)格的工業(yè)環(huán)境中需要高精度的定位信息,以滿足各種作業(yè)場地的應(yīng)用需求,例如監(jiān)管變電站工作人員、保證作業(yè)人員安全等[1]。目前國內(nèi)外常見的無線定位技術(shù)主要有:射頻信號、超寬帶(Ultra-wide Band, UWB)、無線局域網(wǎng)(WLAN)、超聲波、藍(lán)牙、紅外線、GPS定位等[2]。其中GPS能較好地滿足室外位置服務(wù)的需求,但是難以滿足室內(nèi)定位的精度要求[3]。相較于其余的定位技術(shù),UWB定位技術(shù)有著顯著的優(yōu)點(diǎn):穿透性強(qiáng)、定位精度高、抗干擾能力強(qiáng)、功耗低、時(shí)間分辨率好[4]。故本文選擇用UWB來進(jìn)行室內(nèi)定位研究。
在室內(nèi)定位技術(shù)中,常用的幾種測距方法有:接收信號強(qiáng)度[5](Receive Signal Strength, RSS)、接收信號角度[6](Angle of Arrival, AOA)、接收信號時(shí)間差[7](Time Difference of Arrival, TDOA)、接收信號時(shí)間[8](Time of Arrival, TOA)。其中TOA和TDOA測距算法是室內(nèi)定位技術(shù)中應(yīng)用最廣泛的2種算法[9]。TDOA算法充分利用了UWB信號的時(shí)間分辨能力強(qiáng)的特點(diǎn),此外該算法標(biāo)簽只需要與基站交互一次即可完成測距,且在標(biāo)簽較多的環(huán)境內(nèi)也可保持較低的延遲率[10]。但TDOA算法必須保證基站之間嚴(yán)格的時(shí)鐘同步,一定程度上加大了技術(shù)方案的實(shí)施難度[11]。TOA測距算法在接入大量標(biāo)簽時(shí)容易因?yàn)闃?biāo)簽發(fā)生通信沖突而產(chǎn)生測距信息丟失的情況,但其完全規(guī)避了時(shí)鐘同步所帶來的技術(shù)難度和測距誤差[12],并且通過增加標(biāo)簽基站之間的信息交互次數(shù)在一定程度上可以減少晶振偏移帶來的計(jì)時(shí)誤差,對硬件要求不高。故本文選取TOA算法作為測距算法。
文獻(xiàn)[11]中提出一種基于UWB的室內(nèi)定位系統(tǒng),使用的是TOA測距算法[13]。TOA算法中存在如果接入大量的標(biāo)簽時(shí),通信沖突嚴(yán)重,使整個(gè)系統(tǒng)的定位性能下降的問題。本文對基本的通信流程做出改進(jìn),具體如下:先設(shè)置一個(gè)主基站,標(biāo)簽只需與主基站進(jìn)行通信,而從基站只需要進(jìn)行監(jiān)聽,然后通過DS-TWR(Double Sided -Two Way Ranging)算法來解析收到的時(shí)戳,實(shí)現(xiàn)標(biāo)簽與主從基站之間的測距過程,最終完成室內(nèi)定位。改進(jìn)后的流程讓通信方案變得簡單,使得整個(gè)系統(tǒng)的魯棒性更好。其次,針對TOA算法中多標(biāo)簽沖突的問題,本文提出使用基于Hash算法的時(shí)隙分配法,能夠通過散列讓標(biāo)簽在自己的唯一時(shí)隙上,從而使沖突次數(shù)降低,使整個(gè)系統(tǒng)中可以容納更多的標(biāo)簽。
TOA測距算法稱作TOF(Time of Fight)算法,一般分為單向測距[14](One Way Ranging, OWR)和雙向測距[15](Two Way Ranging, TWR)。OWR算法雖然方法原理簡單,但是需要嚴(yán)格的時(shí)間同步,實(shí)現(xiàn)難度大。而TWR算法雖然不基于時(shí)鐘同步,通過標(biāo)簽基站之間的多次交互來屏蔽時(shí)鐘同步帶來的誤差[16],實(shí)現(xiàn)簡單,但是若直接使用TWR算法會因?yàn)榛緲?biāo)簽之間晶振偏移的影響造成很大的測距誤差[17]。故本文使用的是雙邊雙向測距DS-TWR算法。DS-TWR算法與TWR相比有效地減少了晶振偏移帶來的測距誤差[18]。
DS-TWR測距階段是通過標(biāo)簽基站之間3次信息交互來計(jì)算信號在兩者之間的飛行時(shí)間,從而實(shí)現(xiàn)測距信息獲取[19]。其測距原理如圖1所示。某時(shí)刻節(jié)點(diǎn)A向節(jié)點(diǎn)B發(fā)送一條測距請求并記錄下此時(shí)的發(fā)送時(shí)間戳Tsp,節(jié)點(diǎn)B記錄收到來自節(jié)點(diǎn)A信息的接收時(shí)間戳Trp,并在一定延時(shí)后發(fā)送回復(fù)信息給節(jié)點(diǎn)A,節(jié)點(diǎn)A收到來自節(jié)點(diǎn)B的回復(fù)信息后記錄下當(dāng)前時(shí)間戳,并在一定延時(shí)后繼續(xù)回復(fù)一條測距信息給節(jié)點(diǎn)B,節(jié)點(diǎn)B收到測距信息后記錄下當(dāng)時(shí)時(shí)間戳。上述測距過程共產(chǎn)生6個(gè)時(shí)間戳,根據(jù)式(1)即可求出信號在2個(gè)節(jié)點(diǎn)間的飛行時(shí)間T。
圖1 DS-TWR測距原理圖
(1)
DS-TWR測距算法中,節(jié)點(diǎn)都是以自身的時(shí)間戳進(jìn)行計(jì)算,所以能夠有效消除時(shí)鐘同步帶來的測距誤差,但是晶振偏移依然會影響到測距精度[20]。晶振偏移是以ppm(part per million)為單位,表示百萬分之一,例如10 ppm的晶振在1 s內(nèi)會出現(xiàn)10-5s的誤差[21]。若采用高質(zhì)量晶振,會造成硬件成本和功耗的大幅增加[22],不符合IEEE802.15.4a中的低功耗要求。所以下面具體分析晶振偏移給測距算法帶來的距離誤差的原因。
如圖1所示,DS-TWR測距算法共產(chǎn)生6個(gè)時(shí)間戳,令:
(2)
根據(jù)式(1),信號飛行時(shí)間的真實(shí)值Tprop可表示為:
(3)
考慮到標(biāo)簽基站晶振偏移的影響(λ1和λ2分別為2個(gè)節(jié)點(diǎn)的晶振偏移,單位為ppm),信號飛行時(shí)間的測量值可表示為:
(4)
令k=Treply1-Treply2,由于工業(yè)環(huán)境為短距離測量,T遠(yuǎn)遠(yuǎn)小于k,所以測距誤差可簡化為:
(5)
其中,c為光速。從上式可以看出,算法測距誤差與晶振偏移和標(biāo)簽基站的信息回復(fù)時(shí)延之間的差值k有關(guān)[23]。仿真實(shí)驗(yàn)中,k的值無限趨近于0(設(shè)置其為μs級)。圖2為DS-TWR在不同的k和λ1-λ2下的測距誤差。
圖2 不同λ1-λ2和k下的測距誤差
從圖2可以看出,在極端環(huán)境下(時(shí)延差值0.1 ms、晶振誤差20 ppm),測距誤差接近0.16 m,而在正常時(shí)延差值條件下測距誤差基本控制在0.02 m以內(nèi),該誤差可以忽略不計(jì)[19]。
改進(jìn)DS-TWR算法,需要設(shè)定一個(gè)主基站,一般主基站為基站注冊表中的第一個(gè)基站。標(biāo)簽只需要與主基站進(jìn)行通信,而從基站只需要進(jìn)行接收監(jiān)聽。圖3為改進(jìn)DS-TWR算法的實(shí)現(xiàn)過程。假設(shè)主基站為A、從基站為B,位置固定,則基站A與基站B間的距離dAB為定值。
圖3 改進(jìn)DS-TWR算法主基站距標(biāo)簽更近示意圖
完成一次改進(jìn)DS-TWR測距的步驟如下:
Step1標(biāo)簽向空間內(nèi)廣播發(fā)送RNG1消息,并記錄此時(shí)間戳Trng1_tx。
Step2延遲一定時(shí)間后標(biāo)簽向空間廣播發(fā)送RNG2消息,并記錄此時(shí)間戳Trng2_tx。
Step3主基站接收到標(biāo)簽發(fā)送的RNG1和RNG2消息,分別記錄收到的時(shí)間戳Trng1_rx1和Trng2_rx1。
Step4從基站接收到標(biāo)簽發(fā)送的RNG1和RNG2消息,分別記錄收到的時(shí)間戳Trng1_rx2和Trng2_rx2。
Step5主基站將Trng1_rx1和Trng2_rx2裝填進(jìn)RES幀,將此消息發(fā)送出去,記錄發(fā)送時(shí)間戳Tres_tx。
Step6從基站接收到主基站發(fā)送的RES消息,記錄接收時(shí)間戳Tres_rx2,并解析該數(shù)據(jù)幀。
Step7標(biāo)簽接收到主基站發(fā)送的RES消息,記錄接收時(shí)間戳Tres_rx1。
Step8標(biāo)簽將Trng2_tx、Tres_rx1和Tfin_tx時(shí)間戳裝填進(jìn)FIN幀,將此幀發(fā)往主基站。
Step9主基站收到FIN消息記錄接收時(shí)間戳Tfin_rx,并解析FIN幀獲得各個(gè)時(shí)間戳,運(yùn)用DS-TWR算法求解點(diǎn)對點(diǎn)距離。
從圖3的流程圖中可得以下的公式:
tA=Trng2_rx1-Trng1_rx1
(6)
tB=Trng2_rx2-Trng1_rx2
(7)
t1=Tres_tx-Trng2_rx1
(8)
t2=Tres_rx2-Trng2_rx2
(9)
根據(jù)式(8)和式(9)可得主基站與從基站之間的時(shí)鐘頻偏差比:
(10)
由于主基站在RES數(shù)據(jù)幀中攜帶了tA的相關(guān)時(shí)間戳,所以從基站在本地即可獲得時(shí)鐘頻偏差比k。
1)當(dāng)從基站比主基站離標(biāo)簽遠(yuǎn)時(shí),由圖3從物理角度出發(fā)可得關(guān)系式:
t2+ΔtAB=t1·k+tAB
(11)
2)當(dāng)從基站比主基站離標(biāo)簽近時(shí),由圖4所示可得關(guān)系式:
圖4 改進(jìn)DS-TWR算法主基站距標(biāo)簽更遠(yuǎn)示意圖
t2-ΔtAB=t1·k+tAB
(12)
式(12)相較于式(11)對ΔtAB處理進(jìn)行了相反的處理,即t2-ΔtAB,而當(dāng)始終固定ΔtAB為UWB信號從標(biāo)簽到從基站的飛行時(shí)間減去UWB信號從標(biāo)簽到主基站的飛行時(shí)間時(shí),則圖4中ΔtAB應(yīng)為負(fù)值,所以式(12)可以改為式(11),從而統(tǒng)一關(guān)系式的形式。
3)當(dāng)從基站與主基站離標(biāo)簽一樣近時(shí),如圖5所示,同樣可由式(11)表示,此時(shí)的ΔtAB為0,所以可以統(tǒng)一3種情況的表達(dá)式為式(11)。
圖5 改進(jìn)DS-TWR算法主從基站距標(biāo)簽同樣近示意圖
標(biāo)簽在收到RES消息后發(fā)送FINAL消息,如圖5所示采用標(biāo)準(zhǔn)DS-TWR算法完成標(biāo)簽到主基站的測距,所得距離為dA。此時(shí)根據(jù)ΔdAB和dA可得標(biāo)簽到從基站的距離dB:
dB=dA+ΔdAB
(13)
在標(biāo)簽與從基站的測距過程中,從基站只進(jìn)行接收信號的操作,所以可以在空間范圍內(nèi)隨意增加基站,都可同理完成測距。改進(jìn)后的方案只是改進(jìn)了通信流程及計(jì)算距離的方法,并沒有改變內(nèi)部的晶振偏移和標(biāo)簽基站的信息回復(fù)時(shí)延,故測距誤差并沒有得到優(yōu)化。
Hash算法又稱散列算法,是一種常用于降低沖突率的算法。在UWB通信中,如何防止多個(gè)標(biāo)簽發(fā)生通信沖突的關(guān)鍵在于:通過一種科學(xué)的時(shí)隙分配算法將基站和標(biāo)簽分配在唯一的時(shí)隙上。
在一個(gè)能夠通信的區(qū)域中,有M個(gè)基站(M>3)與N個(gè)標(biāo)簽;基站和標(biāo)簽開啟后都立刻進(jìn)行準(zhǔn)同步,即主基站周期發(fā)送SYN報(bào)文,其余的標(biāo)簽接收到SYN報(bào)文并進(jìn)行準(zhǔn)同步;發(fā)送SYN報(bào)文的基站以發(fā)送SYN報(bào)文的時(shí)刻作為基站循環(huán)周期起始時(shí)刻,標(biāo)簽收到SYN報(bào)文的時(shí)刻作為該設(shè)備的循環(huán)周期起始時(shí)刻,忽略掉信號在空中的傳播時(shí)間;從起始時(shí)刻開始,設(shè)置一個(gè)時(shí)隙段,然后通過Hash算法將每個(gè)標(biāo)簽和基站安排在不同的時(shí)隙中。圖6為具體通信流程示意圖。
圖6 通信流程示意圖
本文采用的Hash算法為素?cái)?shù)求余法,序號為T的標(biāo)簽測距的時(shí)隙號TS0[1…5]計(jì)算方法如下:該標(biāo)簽所得基站列表即為M個(gè)基站的列表A[1…M],該列表為基站的序號列表,且所有標(biāo)簽列表一致;若M>5,首先對列表A[1…M]進(jìn)行散列,得到5個(gè)下標(biāo)I[1…5],第1次定位需要至少4個(gè)基站,并設(shè)置一個(gè)冗余基站:
I[i]=((T+Z)i)%5,i=1,…,5
(14)
TS0[i]=((T+Q)(A[I[i]]+P))%Q,i=1,…,5
(15)
TS1[i]=((T+P)(A[I[i]]+Q))%P,i=1,…,5
(16)
式(14)中T為標(biāo)簽序號,Z為任意一個(gè)比5大的質(zhì)數(shù)。
式(15)和式(16)中TS0[i]、TS1[i]為序號為T的標(biāo)簽通過散列獲得的時(shí)隙號;A[I[i]]為散列后的基站序列號;%是取余符號;Q和P是素?cái)?shù)1和素?cái)?shù)2,是任意取的質(zhì)數(shù),目的是為了讓得到的時(shí)隙號能夠散列開。
具體的應(yīng)用于工程領(lǐng)域的時(shí)隙段格式如下所示:
R0|R1|S0[1]|S0[2]|…|S0[29]|R3|S1[1]|S1[2]|…|S1[31]|R4|
其中R0~R3為冗余時(shí)隙,由各基站發(fā)送準(zhǔn)同步信號;S0和S1為定位時(shí)隙,一共64個(gè)可用時(shí)隙,通過質(zhì)數(shù)求余的方法將基站和標(biāo)簽合理地安排在各個(gè)時(shí)隙中進(jìn)行通信。
整體的時(shí)隙分配圖如圖7所示。
圖7 時(shí)隙分配圖
時(shí)隙分配法可以有效地降低標(biāo)簽與標(biāo)簽之間、標(biāo)簽與基站的通信沖突,讓系統(tǒng)中標(biāo)簽的容納量增加。
3.1.1 硬件平臺
室內(nèi)定位系統(tǒng)硬件平臺是基于STM32高性能微處理器和DWM1000射頻收發(fā)芯片并結(jié)合各類外圍電路設(shè)計(jì)而成的,具體是由電源管理模塊、STM32主控模塊、UWB測距模塊、指示模塊和網(wǎng)絡(luò)傳輸模塊構(gòu)成。其中,網(wǎng)絡(luò)傳輸模塊是基站特有,指示模塊是標(biāo)簽特有。由于基站在測距過程中需承載較多功能,如與標(biāo)簽的實(shí)時(shí)通信、距離解算和數(shù)據(jù)上傳等功能,故選擇性能較高的STM32F407ZET6處理器。標(biāo)簽選擇的是性能稍弱的STM32F105RCT6。此外基站和標(biāo)簽的主控芯片都是通過SPI總線與DWM1000相連,且通過USART接口調(diào)試測距程序。圖8為標(biāo)簽實(shí)物圖,圖9為基站實(shí)物圖。
圖8 標(biāo)簽實(shí)物圖
圖9 基站實(shí)物圖
3.1.2 軟件實(shí)驗(yàn)平臺
本定位系統(tǒng)分為上位機(jī)和下位機(jī),上位機(jī)是在Linux系統(tǒng)中編寫,主要負(fù)責(zé)將基站上報(bào)來的測距信息進(jìn)行解析最終完成室內(nèi)定位。下位機(jī)軟件通信方案的開發(fā)平臺為Keil uVision5。圖10為測距的程序流程圖。
圖10 測距流程圖
標(biāo)簽側(cè)的定時(shí)器1和基站側(cè)的定時(shí)器1是作為程序的一個(gè)大周期,BLK包是為了進(jìn)行準(zhǔn)同步,即前文中的SYN報(bào)文,標(biāo)簽側(cè)的設(shè)定的定時(shí)器2時(shí)間是通過散列算法獲得的特定時(shí)間,設(shè)定時(shí)器3是為了讓標(biāo)簽隔一段時(shí)間再發(fā)送RNG2包,標(biāo)簽發(fā)完所有的包后就進(jìn)入休眠,等待下一個(gè)周期。而從基站全程處于監(jiān)聽狀態(tài)。
將改進(jìn)前的代碼用Keil先燒錄至一個(gè)標(biāo)簽中和4個(gè)基站中,然后放在視距良好的空曠的房間里,隨機(jī)選點(diǎn)進(jìn)行測距,待標(biāo)簽的電量耗盡,記錄數(shù)據(jù),將標(biāo)簽基站取下,再將改進(jìn)版的代碼燒錄至取下的標(biāo)簽和基站中進(jìn)行測距,從而保證實(shí)驗(yàn)環(huán)境的統(tǒng)一性,分析實(shí)驗(yàn)數(shù)據(jù)對2套系統(tǒng)的穩(wěn)定性和功耗進(jìn)行對比。實(shí)驗(yàn)環(huán)境如圖11所示。
圖11 實(shí)驗(yàn)環(huán)境
將充滿電的標(biāo)簽放入定位系統(tǒng)進(jìn)行定位實(shí)驗(yàn),直至標(biāo)簽電量耗盡不足以進(jìn)行定位。在服務(wù)器上取其中一個(gè)基站與標(biāo)簽的測距數(shù)據(jù)進(jìn)行分析,如圖12與圖13所示,其中改進(jìn)前通信方案在定點(diǎn)測距中的實(shí)際距離為2.664 m,改進(jìn)后通信方案在定點(diǎn)測距中的實(shí)際距離為1.846 m。圖中的橫坐標(biāo)為測距獲得的樣本數(shù)量,縱坐標(biāo)為距離。
圖12 改進(jìn)前的測距信息
圖13 改進(jìn)后的測距信息
表1 方案對比數(shù)據(jù)表
由圖12、圖13和表1可知,在標(biāo)簽從滿電到電量耗盡,改進(jìn)后的方案測得的樣本數(shù)據(jù)更多,而且改進(jìn)后的系統(tǒng)也沒有因?yàn)闃?biāo)簽電量即將耗盡而產(chǎn)生測距大幅度波動(dòng),這表明改進(jìn)后的系統(tǒng)魯棒性更好,改進(jìn)后比改進(jìn)前的標(biāo)簽?zāi)芎墓?jié)省了33.3%,獲取的樣本數(shù)量也增加了26.5%。
由于測試沖突率,現(xiàn)實(shí)中需要大量的基站和標(biāo)簽,故本文用MATLAB仿真。規(guī)定標(biāo)簽的通信順序是:每個(gè)標(biāo)簽與5個(gè)基站依次通信,如果第1個(gè)基站與1號標(biāo)簽正在通信,2號標(biāo)簽也要與1號基站通信,則算一次沖突,而2號標(biāo)簽在等待1 s后,再與2號基站通信,若2號基站也被占用則再等待1 s后與下一個(gè)基站通信,并且沖突次數(shù)加1,以此類推。
為了達(dá)到與現(xiàn)有通信方式相同,選擇從500個(gè)標(biāo)簽和200個(gè)基站中隨機(jī)產(chǎn)生5個(gè)基站、20個(gè)標(biāo)簽進(jìn)行通信,標(biāo)簽序號定義為1…500,基站序號定義為1…200?;竞蜆?biāo)簽的周期定為512 ms,測距一次的時(shí)間為8 ms。仿真結(jié)果如圖14所示。圖中縱坐標(biāo)為同一時(shí)間內(nèi)標(biāo)簽與同一基站的通信次數(shù),如果通信次數(shù)大于1,則判為沖突;橫坐標(biāo)為總體的測距次數(shù)。
圖14 改進(jìn)前通信成功次數(shù)
采用時(shí)隙分配法時(shí),為了達(dá)到條件相同,在200個(gè)基站中隨機(jī)抽取5個(gè)基站,在500個(gè)標(biāo)簽中抽取20個(gè)標(biāo)簽,標(biāo)簽序號定義為1…500,基站序號定義為1…200。一個(gè)時(shí)隙段取64個(gè)時(shí)隙,一個(gè)時(shí)隙取8 ms,基站和標(biāo)簽的周期就是64×8 ms,即512 ms,與現(xiàn)有通信方式條件完全相同。仿真結(jié)果如圖15所示。求得改進(jìn)前通信方式?jīng)_突率達(dá)到39%。用改進(jìn)后的時(shí)隙法進(jìn)行通信,通信沖突率只有26%,沖突率降低了13個(gè)百分點(diǎn)。故時(shí)隙分配法能夠有效地降低沖突率。
圖15 改進(jìn)后通信成功次數(shù)
本文提出了一種基于DS-TWR算法的改進(jìn)方案。該方案能夠有效地減少標(biāo)簽與基站之間的通信次數(shù),使標(biāo)簽處于聆聽的狀態(tài)時(shí)長減少,降低標(biāo)簽的功耗,從而延長了標(biāo)簽的待機(jī)時(shí)間。使用Hash算法使得定位系統(tǒng)中一個(gè)定位區(qū)域內(nèi)同時(shí)容納30個(gè)標(biāo)簽,沖突率有效降低。但是還有許多問題需要完善:現(xiàn)在的定位系統(tǒng)只能進(jìn)行時(shí)鐘準(zhǔn)同步,不能達(dá)到精準(zhǔn)的時(shí)鐘同步,在進(jìn)一步的研究中,將會設(shè)計(jì)通信更加簡單的TDOA測距算法,實(shí)現(xiàn)更加穩(wěn)定的定位系統(tǒng)。