黨小超, 馬平川, 郝占軍
(1.西北師范大學 計算機科學與工程學院,甘肅 蘭州 730070;2.甘肅省物聯網工程研究中心,甘肅 蘭州 730070)
無線局域網(wireless local area network,WLAN)指紋定位由于部署廣泛,成本低廉,操作簡便成為室內定位方法的主流[1]。文獻[2]利用接收信號強度指示(received signal strength indication,RSSI)的指紋定位方法結合去噪技術,文獻[3]利用主成分分析(principal component analysis,PCA)算法對RSSI信號進行降維,提取RSSI中的主要特征,文獻[4]通過用移動端采集的來自各個AP的RSSI信號建立指紋庫,利用K最近鄰((K-nearest neighbor,KNN)算法,通過最小二乘法找到K個與測試指紋最接近的,通過加權平均得到位置。但是清華大學楊錚與劉云浩教授[5]指出由于RSSI信號的易受多徑效應的影響,有時收到的信號是多徑信號的疊加,導致了定位的不可估量。
基于信道狀態信息(channel state information,CSI)的指紋定位進入人們視線[6],CSI與RSSI相比具有更好的魯棒性,受到多徑效應的干擾更少,所以具有更高的定位精度。
本文提出了一種改進的基于CSI的室內定位方法,經過實驗證明:該方法精度高于其他算法。
在現有的通信系統中,正交頻分復用(orthogonal frequency division multiplexing,OFDM)技術是應用最廣泛的一種多載波傳輸方案。通過對現有的普通商用Wi-Fi設備添加兼容IEEE 802.11n的無線網卡,可以獲取無線信號發射端和接收端之間的CSI,它提供了多個子載波上的信號幅度和相位兩方面的信息。作為RSSI的升級版本,CSI包含更為詳細和準確的多徑傳播信息[9]。在OFDM傳輸系統中,每個信道狀態的頻域模型可以表示為Y=HX+N,其中,Y與X分別為接收和發送信號向量,H為信道信息矩陣,N為加性高斯白噪聲。各個子載波的CSI可以表示為CSI=Y/X。
假設在OFDM傳播過程中的子載波數為N,則CSI矩陣H可以表示為H=[H0,H1,…,Hi,…,HN-1]T,i∈[0,N-1]。定義第i個子載波的CSI為Hi=|Hi|ej(∠Hi)。其中,Hi和∠Hi分別表示第i個子載波的振幅和相位。
傳統KNN算法定位準確率低,定位時間慢。為了解決這個問題本文采用基于高斯核函數的KNN算法來彌補這種不足。徑向基函數(radial basis function,RBF)-KNN定位算法主要分為2個階段[7]:離線訓練階段和在線定位階段,如圖1所示。

圖1 定位流程
建立指紋庫和位置與指紋的匹配模型:離線階段將采集的測試點CSI信號進行預處理并利用RBF-KNN算法在指紋庫進行搜索,結合置信度水平得到定位的位置,下面將詳細介紹一下本算法。

收集測試點CSI信號,ξnew={csinew}卡爾曼濾波處理后,收集到的信號可以用矩陣表示
(1)
取其中的一維矩陣{csi11csi12…csi1p},并將其與數據庫中的每一個點的第一維向量進行比較,常用的比較方法有歐氏距離法、余弦相似度法、皮爾遜系數法以及核函數法。為了比較的方便與準確本文選用了核函數法,并定義了一個基于核函數的權重公式
(2)
式中φ()為測量指紋和指紋庫指紋相似程度的核函數,在這里使用高斯核函數[7]定義相似度公式
(3)
式中σ為使用雙交叉驗證方法估計得到的融合權重參數。然后,通過混合核函數計算在線指紋測量和指紋數據之間的相似性,并且指紋參考點的指標Q(p)與查詢指紋最相似。將測量CSI信號與指紋庫中的信號進行比較,得到相似度,將相似度按照從大到小的順序排列,并選取其中的前K個(K的具體取值將在后續實驗討論)進行加權,估計目標位置
x1=wn1·pn1(x)+wn2·pn2(x)+…+wnk·pnk(x)
(4)
y1=wn1·pn1(y)+wn2·pn2(y)+…+wnk·pnk(y)
(5)
這是一條線路的定位結果,按照相同的方法得出其他5條鏈路的定位結果以及每條鏈路的定位權重如式(2),并使用置信度比較進行最后定位估計。
本實驗采用定制的安裝了Openwrt的TL-WDR4310路由器作為發射端,一臺安裝有Atheros 9380網卡的臺式電腦作為接收器,CPU型號為Intel Core i3—4150,操作系統為 Ubuntu10.04LTS,且內核和無線網卡驅動經過特殊配置。實驗場地選擇9 m×6 m 的辦公區域,部署了25個正方形區域,每個正方形區域為0.8 m×0.8 m,接收機與發射機相距4.5 m,天線高度為1.2 m,其平面圖及詳細區域劃分布局如圖2所示。

圖2 實驗室平面
Atheros網卡中有2個接收天線,TL-WDR4310有3個發射天線,這就相當于有6條通信鏈路,每條鏈路上有56個子載波。在一個參考點測量200次CSI作為指紋庫原始數據進行處理,在測量點取80個CSI進行處理和匹配。
KNN中的K值是算法中的重要參數,將K值從1~10依次取值,分別測試不同取值的定位誤差和定位時間,結果如圖3所示。

圖3 不同K值定位結果
由實驗結果分析k=5是一個臨界點,當k<5時,k近鄰算法的選擇范圍增大,更多的正確樣本進入了選擇范圍,降低了誤差;當k>5時,說明到達了一個臨界,不會因為樣本的增多而提高定位精度,反而因為樣本選擇過多,增加了計算時間,所以本文經過實驗,將K值定為5,可以有效縮小查找范圍,而傳統的KNN定位算法需要比較每一個指紋信息,所以定位時間大大延長。
本文采用距離誤差作為性能指標,采用均方根誤差(root-mean-square error,RMSE)評估,并以此為依據進行評估。假定未知移動設備的位置(Ai,Bi)和用戶的實際位置(Ai,Bi)為了比較,實施了三種現有的方法,包括DeepFi[8],Native Bayes和FIFS[9]。 在實驗中,這些方案使用相同的測量數據集,以保證結果的可靠性。 圖4為四個系統的定位累計分布誤差。

圖4 定位累積誤差比較
在誤差小于1 m時,本系統定位準確率處于中等,但在大于1 m時,本文的定位精度遠高于其他算法,這是由于本文的方法使用新的核函數作為相似度度量,并使用置信度綜合多條線路的定位結果。
本文使用了基于CSI的定位方法,使用卡爾曼濾波對原始信號就行了預處理,結合改進的加權KNN算法與置信度方法進行室內定位.將常用算法與本算法進行對比,實驗中證明:本算法在一定誤差內,精度優于其他對比算法。下一步將對動態人員定位及軌跡追蹤進行研究。