劉兆巖,陳立偉,黃 璐
(1.哈爾濱工程大學,黑龍江 哈爾濱 150000;2.衛星導航系統與裝備技術國家重點實驗室,河北 石家莊050081)
室內位置服務[1]在一些特定場合的需求日趨增強,商場、機場、醫院及停車場等場合越來越意識到能夠得到精準室內位置信息的好處[2]。全球導航衛星系統(GNSS)使室外定位的準確率達到了很高水平,但是在復雜的室內環境,GNSS信號衰減過大、不可靠[3]。多年來,科研機構一直努力研究,試圖探索出其他技術,以獲得可靠、準確的室內定位系統(IPS)。其中一些定位技術已經取得了成功,如iBeacon定位技術、射頻識別(Radio Frequency Identification,RFID)技術及超寬帶(Ultra Wideband,UWB)技術等[4]。iBeacon定位技術設備小、普適性強、易集成,但穩定性差、覆蓋范圍小。RFID技術成本低、精度高,但有著傳輸距離短、不易集成的弊端。UWB技術有較高的精度,但是成本較高。各種定位技術都由于精度問題或附加設備的成本問題而縮小了其潛在的應用范圍。WiFi室內定位技術是為解決上述問題而迅速發展的一種室內定位技術,受到了越來越多的重視[5]。傳統的WiFi室內定位技術中,接收信號強度指示(Received Signal Strength Indication,RSSI)由于成本低且容易獲取而被廣泛應用[6]。但因為RSSI的粗粒度以及高度易變性,在獲取過程中存在信號不穩定、誤差大等問題,從而無法在復雜的室內環境中實現高精度定位[7]。
近年來,隨著多入多出(Multiple-Input Iultiple-Output,MIMO)系統和正交頻分復用(Orthogonal Frequency Division Multiplexing,OFDM)系統在IEEE 802.11a/n標準中得到不斷應用,同樣可以從WiFi設備中獲取信道狀態信息(Channel State Information,CSI),它代表了發射天線到接收天線的每一個子載波的信道矩陣,包含了每個子載波的幅度和相位信息[8],可以為每個位置提供更細粒度和豐富的信息。
本文提出一種基于CSI相位差分指紋的室內定位方法,在離線階段通過接收CSI信息,獲取每個子載波矯正相位信息構建指紋數據庫。在線階段利用改進WKNN算法對實時采樣信號進行在線匹配,最終完成采樣點的位置估計。
CSI[9]在物理層表征了收發信機之間通信鏈路的信道特性。它不僅提供了環境衰減、距離衰減等信道信息,還反映了室內環境下信號傳輸存在的反射、散射和衍射等情況。在頻域空間中,不同子載波的幅度和相位信息將以CSI信道矩陣的形式進行描述。在窄帶平穩衰落信道中,OFDM系統的頻域模型:
Y=HX+N,
(1)
式中,Y,X分別為接收信號向量和發射信號向量;H為信道矩陣;N為附加的高斯白噪聲向量。信道矩陣可以完全地描述信道的特性[10],信道矩陣可由下式估計得出:
(2)

在OFDM系統中,信號通過多個子載波進行傳輸,因此信道矩陣H可以表示為:
H=[H1,H2,…,HN],
(3)
式中,Hi為第i個子載波上的CSI,可以表示為:
Hi=|Hi|e-i∠Hi,
(4)
式中,|Hi|,∠Hi分別為第i個子載波上的CSI幅值和相位。應用在IEEE 802.11n標準[11]的MIMO系統中支持多輸入天線和多發射天線,因此CSI矩陣可以表示為:
(5)
式中,t為發射天線數;r為接收天線數。
本文將使用配有Intel 5300無線網卡的電腦,在Ubuntu 12.04 LTS-Ubuntu 14.04 LTS 系統下,通過修改無線網卡的驅動,利用Linux系統中的系統函數將CSI信息導出為.dat格式的文件。
CSI因其豐富的數據特征而被作為指紋用于室內定位研究當中,但由于硬件條件的影響,接收機和發射機之間的同步誤差不能完全消除,往往接收機接收到的CSI中包含時鐘同步誤差以及不同載頻誤差引起的相位偏移。發生偏移的原始相位信息錯綜復雜,因此很少會將相位信息作為指紋。30個數據包的原始相位如圖1所示。

圖1 30個數據包的原始相位Fig.1 The original phase of 30 packets
針對上述問題,本文采用基于線性變換[12]的方法對原始相位進行預處理,消除不同載頻誤差引起的相位偏移,得到CSI真實相位。

(6)
式中,φi為第i個子載波的真實相位;mi為第i個子載波的索引號;N為快速傅里葉變換的大??;Δt為接收端時間偏差;β為由載頻誤差引起的相位偏移;Z為測量噪聲。為了將未知的Δt,β剔除,得到真實相位值,引入2個中間量k,b,定義如下:
(7)
(8)

(9)
原始相位經過線性變換后,相位中不再包含時間偏差Δt和相位偏移β,圖2給出了在同一位置用2根接收天線接收的原始相位及通過線性變換得到真實相位。

圖2 原始相位及真實相位Fig.2 Original phase and true phase
由圖2可以看出,經過線性變換得到的CSI相位僅僅是真實相位的線性組合,規律性更加明顯。
圖3是在3個不同位置用同一根天線采集30個連續數據包的真實相位圖。由圖3可以看出,經過線性變換得到的真實相位在同一點基本穩定,而且不同點區分度明顯,有利于將CSI相位信息作為指紋進行定位。

圖3 3個位置點的30個數據包的真實相位Fig.3 The true phase of 30 packets at three locations
基于指紋庫的CSI定位技術是利用接收天線采集信道的狀態信息,建立信號特征值參數指紋庫。將待定位點采集到的特征值參數與指紋庫中特征值參數進行匹配計算,從而得到待測點的實際位置。指紋庫定位技術分為2個階段:離線建庫階段和在線定位階段[13]。
離線建庫階段主要包括采集WiFi CSI信息,對采集信息進行預處理,提取矯正后的相位信息,建立特征值指紋庫。建立特征值指紋庫首先在測試區域內選定m個測試參考點,然后依次采集每個測試參考點的特征值參數Fmn,每個點的特征值(Fm1,Fm2,…,Fmn)對應該點坐標(xm,ym),按如表1的格式存儲在數據庫中。該數據庫即為特征指紋數據庫。
表1 指紋庫格式
Tab.1 Fingerprint database format

x1y1F11F12…F1nx2y2F21F22…F2n??????xmymFm1Fm2…Fmn
其中,(xm,ym)為測試參考點m的坐標;(Fm1,Fm2,…,Fmn)為測試參考點m的n維特征值參數。
在線定位階段,對比計算待定位點的數據特征值與指紋庫中的特征值,在指紋庫中匹配得到一組最近的特征值參數,得到相應的位置坐標,完成設備或人員的定位。定位流程如圖4所示。

圖4 指紋定位流程Fig.4 Fingerprint positioning flowchart
KNN算法[14]只是選取距離最近的k個近鄰參考點而忽略了它們的距離差別,當指紋數據庫分布不均時,待定位點與近鄰參考點距離差別較大,會影響定位精度。因此,本文提出的一種改進的WKNN算法,該算法在傳統WKNN算法初次得出位置坐標的基礎上進行二次匹配,計算得出最終坐標。
傳統的KNN算法首先計算待定位點特征值組(F1,F2,…,Fn)到指紋數據庫參考特征值組之間的距離,本文采用歐氏距離,具體計算如下:
(10)
式中,Li為待定位點與指紋數據庫中第i個參考點的歐式距離;Fj為待定位點特征值組中的第j維特征值;Fij為特征值指紋數據庫中第i個參考點的第j維特征值,i=1,2,…,m;j=1,2,…,n。
然后在Li中選取距離由近到遠的k(k≥2)個參考點,則待定位點的位置坐標可由這k個參考點估算得出:
(11)

本文采用的改進WKNN算法為每個近鄰參考點坐標分配一個權重,權重由待定位點和近鄰參考點的距離Li經高斯函數變換得到:
(12)
式中,Wki為k個近鄰參考點中第i個點的權重;Lki為待定位點到k個近鄰參考點中第i個點的距離;Limin為待定位點到k個近鄰參考點中第i個點的最小距離;a為最大權重值,通常取1;b為半峰寬度,可根據k值調整。
之后,為每個緊鄰參考點加上對應權重,即可由WKNN算法得到定位坐標:
(13)
考慮到真實坐標與距離最近的k個緊鄰點關聯性較強,本文提出一種二次匹配定位算法,該方法在初次匹配得到定位坐標的基礎上,首先計算初次定位坐標與k個緊鄰點的歐氏距離Ldi,將k個距離值經過高斯函數變換得到各自的權重,改進后的計算公式:
(14)

完整的改進WKNN算法定位步驟如下:
① 首先在地面設置參考點,采集所有參考點的CSI信息,并經過數據預處理建立特征值指紋數據庫;
② 在線采集待定位點CSI信息,經過預處理與指紋數據庫匹配計算得到k個緊鄰參考點;
③ 計算k個緊鄰參考點對應的權重;
④ 由k個緊鄰參考點的加權坐標得到待定位點的初次預測坐標;
⑤ 計算初次預測坐標與k個緊鄰參考點的歐式距離,并經過高斯變換得到二次權重;
⑥ 給k個緊鄰參考點分配對應的二次權重,預測最終位置坐標。
為驗證本文所提算法的可行性和有效性,搭建了WiFi指紋定位平臺。選取廠房作為測試環境,選取測試范圍為5 m*5 m。廠房可以模擬大型體育場館、機場和火車站的空曠環境,為實現高精度室內定位,本文使用3個AP,AP布設及測試區域平面圖如圖5所示。其中AP布設位置為圖5中黑點。

圖5 測試環境平面圖Fig.5 Test environment plan
首先設置等間距的參考點,如圖5白點,參考點數為100個。在測試區域建立直角平面坐標系,標定每個參考點的位置坐標。采集參考點數據,提取數據中的CSI相位信息,并進行預處理,處理后的數據與之對應的坐標按表1的格式保存,得到離線的特征值指紋數據庫。
測試人員選取5個測試點進行定位測試,在線采集待測試點數據時,室內其他活動正常進行。對采集到的數據進行預處理,得到待定位點的特征值參數,每個點任意選取10組特征值參數進行定位分析。
本文所采用的定位算法k值的選取會影響定位結果[15]。為獲得最優定位結果,選取了不同的k值進行定位分析。圖6給出了WKNN和改進WKNN2種算法在相同指紋數據庫、相同待測試點的情況下,不同k值所得到的平均定位誤差。

圖6 2種算法不同k值平均誤差Fig.6 Different k-valued average error plots for the two algorithms
橫軸k值,分別選取3,4,5,6,7,8,9,10,縱軸為5個待測試點的平均定位誤差。由圖6可以看出,改進WKNN的平均定位誤差都低于WKNN的平均定位誤差。在使用WKNN時,k值選取4,5,6,7,8的定位誤差差別不大;k為3時,定位誤差最小;k為7,8,9,10時,隨著k值的增大,定位誤差逐漸增大。在使用改進WKNN算法時,k=3時,平均誤差最小;其他k值時,平均定位誤差比較穩定。根據圖6的結果,確定k=3。
圖7和圖8是在k取3時,分別使用傳統WKNN算法和改進的WKNN算法進行定位所得到的誤差對比圖和誤差累計分布函數圖。

圖7 2種定位算法誤差對比Fig.7 Comparison of two positioning algorithm errors

圖8 2種定位算法誤差累計分布函數圖Fig.8 Error distribution function diagram of two positioning algorithms
可以看出,使用傳統WKNN算法進行定位,定位誤差在1 m以內的概率為80%左右,最大定位誤差超過了1 m。而使用本文所提出的改進的WKNN算法后,所有定位點的誤差均優于1 m,并且相較于傳統WKNN算法定位不存在定位偏差較大的點,增加了定位系統的穩定性。表2給出了具體的定位誤差數據。
表2 數據處理前后定位精度對比

Tab.2 Comparison of positioning accuracy before and
由表2可以看出,使用改進WKNN算法的定位結果在平均誤差、最大誤差方面都優于傳統WKNN算法的定位結果。在最小誤差方面,傳統WKNN算法跟改進WKNN算法定位誤差相當,這是因為數據中存在一部分特征值,這部分正常值的定位精度較高,決定了最小誤差的下限。經過實驗驗證,改進的WKNN算法可以有效提高定位精度,有效減小信號波動帶來的影響,最大定位誤差僅為0.98 m,可滿足室內定位需求。
本文提出一種基于CSI相位指紋匹配的室內定位方法,在離線建立指紋庫階段增加了對測量CSI相位預處理的過程,提高了指紋數據庫的可信度。在此基礎上提出了改進加權K近鄰法對在線采集到的信號進行匹配定位。通過實驗驗證,所提算法可以有效提升定位精度,平均誤差達到0.63 m,基本可滿足室內定位需求。但指紋數據庫采集工作量大,在保證定位精度的同時如何減少工作量將是下一步研究的重點。