劉顏星,郝占軍,田 冉
(1.西北師范大學計算機科學與工程學院,甘肅 蘭州 730070;2.甘肅省物聯網工程研究中心,甘肅 蘭州 730070)
隨著位置服務的精準需求,室內定位系統成為當今倍受熱捧的技術領域,而基于WiFi信號的室內定位方法因其開放性和易用性吸引了很多科研人員的關注。WiFi作為一種基于IEEE 802.11協議的無線網絡,已經普及到大多數家庭和辦公環境。現今大部分移動設備都內置了符合IEEE 802.11標準的無線網卡,使得用戶能很容易地接入無線局域網絡(WLAN)中,其覆蓋廣的特點大大降低了室內定位技術的成本。
目前,大部分定位方法通過采集接收信號強度指示RSSI(Received Signal Strength Indication)值與指紋庫匹配獲取目標的位置信息,但由于RSSI是粗粒度信息,受到室內環境對信號的折射、反射和衍射等影響,導致其定位性能不穩定。近年來,一些商用無線網卡設備能夠支持物理層信道狀態信息CSI(Channel State Information)信號采集,如Intel5300、Atheros9380無線網卡。由于通過CSI不同子信道可以提取到比RSSI更細粒度特征信號進行分析,同時CSI還可以盡可能避免多徑效應與噪聲的影響,因此,通過信道狀態信息CSI的室內定位[1]研究被關注。
基于CSI和RSSI的室內定位算法相比較,CSI隨時間變化小,靈敏度更高,利用不同子載波的信號傳輸過程,能夠更好地抵制噪聲與多徑效應問題,通過細粒度的CSI指紋方法可以在不增加數據采集成本的前提下,改善室內定位精度,有效提高室內定位的精度[2]。
目前的室內定位方法大致分為測距和無需測距2種。基于測距的定位方法是通過設置錨點,根據角度信息計算空間距離,估計定位點位置;無需測距是依據網絡特性采集指紋庫的方法,通過空間匹配算法實現節點定位。由于基于測距的定位方法的定位精度與AP無線訪問接入點(Access Point)的數量有密切關系,且計算復雜度高,因此,本文基于指紋庫匹配的被動式方法研究室內定位,被定位對象無需攜帶任何具有信號發射功能的設備,不但能夠解決穿戴設備的不便,還能更好地保護被定位對象的個人隱私,如老人防護、動作識別和入侵檢測等。
由于室內環境存在實物多、人員流動性強等特點,信號傳播存在多徑效應,而信道狀態信息CSI能更好地反映這些特點,因此CSI在室內定位領域適用性更高[3]。文獻[4]將CSI和RSSI數據相結合作為指紋特征,引入空間聚類劃分的思想對采集數據進行處理,有效降低了信號的時變性,實現了整體平均定位距離誤差在1.5 m以下。文獻[5]將CSI信號在頻域上通過稀疏表示,有效降低了信號噪聲,一定程度上解決了信號多徑效應對定位精度的影響。文獻[6]提出利用多傳感器位置信息對指紋庫參考節點進行篩選,保留有效參考節點提高定位精度;文獻[7]提出通過深度學習訓練CSI數據作為指紋庫,定位精度有很大提高,但該方法在離線數據采集階段訓練樣本過大,耗時太長。
總結常見指紋定位方法的優缺點可以看出,室內指紋定位算法中解決數據預處理和有效特征值提取是提高定位精度的主要因素。為了達到室內定位的高效率、高精度和高適應性的目的,本文提出一種基于CSI信號的被動式室內指紋定位算法。該算法在離線階段將定位場所劃分為近似同等大小的區域塊,通過支持IEEE 802.11n協議的Atheros9380無線網卡提取CSI信號,在各連接點或區塊位置采樣指紋點數據,對原始數據進行濾波后存入原始信息庫,再對濾波后的數據使用二分K均值聚類(K-means)算法進行分類,建立指紋數據庫;在線階段根據待測點的離線數據和實時數據,采用K最近鄰KNN( K-Nearest Neighbor)匹配算法判定出定位點位置坐標。其核心思想在于離線數據經過方差補償的自適應卡爾曼濾波處理后能夠動態調整算法,解決濾波發散問題[8],使得建立的指紋庫更有效,范圍更小,提高了匹配準確率和定位精度。
室內環境的特點是房間多、障礙物多、人員流動頻繁,假設待測區域完全被無線WiFi網絡覆蓋,信號采集過程中選取均勻的參考點位置,并記錄所有AP點的CSI值。基于正交頻分復用技術OFDM(Orthogonal Frequency Division Multi- plexing)能將信道調制成多個正交子信道[9],并將高速數據信號轉換成并行的低速子數據流,因此,在數據采集時,可以將單個信道信息經過濾波處理后,收集每個子信道的CSI特征值作為參考信息。基于指紋庫定位算法分為離線訓練和在線定位2個階段,其定位模型如圖1所示。

Figure 1 Data processing model based on CSI 圖1 基于CSI定位數據處理模型
離線階段:將定位場地近似劃分為同等大小的區域塊,在各連接點或區塊位置,采用OFDM技術收集單個信道的CSI值并提取振幅和相位信息,在此基礎上使用方差補償的自適應卡爾曼濾波算法對提取的特征數據進行降噪處理,進行奇異值去除,并將降噪后的數據存儲到原始信息數據庫;再通過二分K均值聚類算法對原始數據進行聚類分析,將特征相似的特征值縮小到某一范圍內,形成分簇形態的離線數據庫作為指紋點數據建立特征指紋庫。
在線階段:在待測位置處動態獲取AP的CSI未知特征值,利用自適應卡爾曼濾波算法對數據進行處理,使用KNN計算實時數據與指紋庫的匹配度。由于本文旨在研究離線數據建立對CSI定位算法的影響因素,所以匹配算法使用較為成熟的KNN匹配算法。
自適應卡爾曼濾波算法具有動態處理數據的能力,即對數據進行濾波的過程中能對未知或不確定的系統模型參數進行估計和修正,利用已有的信息對動態噪聲方差實時估計,就可以補償濾波中對動態方差或協方差的不足。這種利用預測殘差對原始向量進行修正,并計算出接近實際狀態向量的方法稱為自適應卡爾曼濾波的方差補償法。其基本思路如下所示:
假設Xk為k時刻的信號向量,將參考點坐標及CSI連續信號離散化,則卡爾曼濾波狀態方程和觀測方程可如式(1)所示:
(1)
其中,Xk+1和Xk分別為狀態向量在tk+1和tk時刻的濾波值,Φk+i,k和Bk+1為狀態向量系數矩陣,Ψk+i,k為控制向量系數矩陣,Uk為控制向量,Γk+i,k為動態噪聲向量的系數矩陣,Ωk為動態噪聲向量,Zk+1為觀測值,Δk+i為觀測噪聲向量。
如果不考慮系統的確定性輸入,其狀態方程和觀測方程如式(2)所示:
(2)
假定{Ωk}和Δk為正態序列,X0為正態向量。定義i步預測殘差如式(3)所示:
(3)

(4)
則Vk+i的方差矩陣為:
Dvv=Bk+iΦk+i/kXk+DΔ k+i Δk+i
(5)
記:
Bk+iΦk+i,rΓr,r-1=A(k+i,r)
(6)
其中,r=1,…,N;k=1,…,n;上標(k+i,r)表示與觀測值有關。假定Ωr-1Ωr-1在觀測時間段tk+1,tk+2,…,tk+n上為常值對角陣,并記:
(7)
根據:
(8)
記:
(9)
其中,ηk+i為零均值隨機向量,i=1,2,…,N。令:
(10)
又記:

(11)
則有:
E=AdiagDΩΩ
(12)
式(12)是關于diagDΩΩ的線性方程組,當N≥r時,式(12)有唯一解。記diagDΩΩ的最小二乘法LS(Least Square)估計為:

(13)
本文采用 Atheros 9380 無線網卡獲取CSI信息,可以在20 MHz和40 MHz帶寬下進行實驗,在20 MHz帶寬下,子載波的數量是56個,40 MHz帶寬下,子載波的數量是114個[10],2個發射天線,3個接收天線,共6條鏈路,則每個CSI信號是一個2×3×p的復數矩陣,其中p為子載波個數[11]。
如圖2所示,在靜態環境某參考點站立一人,在40 MHz帶寬下不同時刻連續采樣20次,取其中一條鏈路的CSI 振幅值對其進行濾波處理,可以看出對原始信道采集的信號數據使用自適應卡爾曼濾波算法進行降噪處理,能夠將異常值縮小到一定范圍內,得到一組完全處理過的優質數據存入原始數據庫,為下一步數據分類提供支撐。

Figure 2 Comparison of original data before and after filtering圖2 原始數據濾波前后對比
(1)原始采集信息數據庫建立。
假設任意參考點能夠采集到n個AP的CSI值,則第i個參考點(xi,yi) 采集到的CSI值可表示為:
Ri=(Ri1,Ri2,Ri3,…,Rin),
i=1,2,3,…,m
(14)
其中,Rin是第i個參考點采集到的第n個AP節點的CSI信號向量。如果將參考點坐標及其CSI信號向量線性組合,則可表示為:
Mi=(Ri1,Ri2,Ri3,…,Rin,xi,yi)
(15)
將m個參考點的數據經3.2節濾波算法處理后,將有效特征向量組合值以式(15)所示的數據結構存儲到原始庫中,以備聚類運算時使用。
(2)二分K-means算法流程。
標準 K-means 聚類算法的目標是找到最小化誤差平方和的聚類結果,初始“簇中心”點由算法隨機選取,因此存在多種劃分情況,導致算法的收斂不是全局最小,而是局部最小。為了解決該問題,本文使用一種能夠度量聚類效果的指標SSE(Sum of Squared Error)權衡算法,SSE為各個樣本點到“簇中心”點距離的平方和,SSE越小,則數據點越接近簇中心,聚類效果也越好。
二分K-means算法首先將原始數據庫看成一個樣本集計算SSE,若此時簇個數小于k(k=2),則選擇最小值一分為二進行劃分操作。由于該算法不再隨機選取簇中心,而是從一個簇出發,因此該算法不會收斂到局部最小值,而是收斂到全局最小值。具體算法流程如下所示:
(1)初始化簇表,將m個采樣點組合成一個簇。
(2)從簇表中取出一個簇,設k=2,使用標準 K-means 聚類算法對選定的簇進行聚類。
(3)從聚類結果中選取誤差平方和最小的那一組簇,將其添加到簇表中。
(4)判斷簇數量是否達到采集參考點數據個數,若達到則聚類結束,否則跳轉到(2)。
二分K-means聚類算法與標準聚類方法相比較,收斂性好,聚類結果更加穩定[12]。
本文算法研究的核心是基于CSI信號的被動式無源指紋定位,被定位目標無需穿戴任何具有信號發射功能的設備,因此指紋庫的構建質量是影響定位準確度的主要因素。結合相關理論研究,將待測區域進行區域劃分,搭建2臺設備對各參考點的CSI信號進行采集,使用方差補償的自適應卡爾曼濾波算法和二分K-means算法對采集的數據進行分類,建立指紋數據庫。
由于Atheros 9380無線網卡獲取CSI信息,在40 MHz帶寬下有114個子載波,因此參考點采集的每個數據包都是一個m′×n′×114復數矩陣HMIMO,其中m′為發射天線數,n′為接收天線數,v=m′×n′為天線對個數。
(16)
任意天線對的矩陣Hij有114個復數,每個子載波的信道頻率響應采樣為:
Hij=[h1,h2,h3,…,h114]
(17)
其中,hi=|hi|ejsin(∠hi)。
式中|hi|為幅值,∠hi為相位,j為子載波編號,由于CSI的相位受頻偏影響不能精確提取,算法中主要提取振幅特征作為指紋參考依據,無線信號在室內環境中存在著多徑傳播的情況,CSI幅值也受此影響[13,14]。因此,本文在離線建立指紋庫階段,首先將獲取的特征數據使用方差補償的自適應卡爾曼濾波進行處理,然后將降噪后的數據通過聚類算法進行離線訓練分類,理論上必能提高指紋庫的構建質量。具體算法流程見本文第3節。

Figure 3 Deployment of experimental environment圖3 實驗環境部署圖
在線定位階段是將未知點提取到的CSI特征信息與訓練階段建立的指紋信息進行比較,估計未知點的位置信息。通過歐氏距離計算未知點與參考點最接近的向量坐標,即任意2個CSI幅值向量i與j的歐氏距離比較。
disi,j=norm(Htrain_i-Htest_j)
(18)
其中,Htrain_i是參考點向量,Htest_j是隨機測試點向量,對于v個天線對有:
DIS=[Dis1,Dis2,…,Disv]
(19)
由于歐氏距離反映的是空間向量之間的“不相關性”,即數值越小,相關性越高。因此,選取前k個較小距離求平均值作為測試點與訓練點之間的距離[15]。
(20)
其中,(xi,yi)表示測試點坐標,計算距離最小的前k個平均值得到測試點與所有訓練點之間的距離后,最后使用KNN算法作為指紋匹配算法定位估計點位置。
本文采用 Atheros 9380無線網卡方案獲取CSI特征信息,定位算法所需設備為:2臺安裝有 Atheros 9380無線網卡的臺式機,CPU 型號為 Intel Core i3-4150,操作系統為 Ubuntu 10.04 LTS,其中一臺機器裝置2根天線作為信號發送機,另一臺裝置3個天線作為接收機,組成6條數據鏈路,在40 MHz帶寬下進行實驗。
分別選擇實驗室和會議室對本文提出的定位算法進行驗證,實驗室場地長9 m、寬6 m,其平面圖和實景圖分別如圖3a和圖3b所示,將實驗參考點劃分標記為1 m×1 m大小方格,天線高度設置為0.8 m;會議室長12 m、寬6 m,其平面圖和實景圖分別如圖3c和圖3d所示,由于會議室的桌椅高度為0.8~1 m,發射天線高度設置為1 m,接收天線高度設置為1.2 m。
在整個測試過程中,由于實驗室人員移動較少,相對靜止,因此把實驗室命名為靜態場景,會議室由于有大量的桌椅和人員走動行為,因而命名為動態場景。
為了驗證本文算法在不同實驗環境中的定位精度和效果,通過準確率和平均誤差2個指標來衡量分析。
5.2.1 指紋采集特征對定位精度的影響
實驗過程中,讓一名人員靜止在圖3所示的實驗環境中,在不同測試點采集測試數據,由于從CSI數據包中可以讀取RSSI信號特征,因此分別采用本文處理過的振幅、未處理的振幅及原生RSSI特征數據作為指紋特征進行測試對比。采用不同算法構建離線特征指紋庫,在靜態和動態2種環境中達到的定位差累積分布如圖 4 所示。

Figure 4 Effect of different feature data on positioning accuracy圖4 不同的特征數據對定位精度的影響
從圖4中可以看出,2種實驗場景中通過CSI定位總體性能都比RSSI定位更好,經本文算法處理后的CSI幅值特征,靜態環境定位精度可以達到0.5~1.5 m,動態復雜環境定位精度能達到1~2 m,靜態環境能將68.2%的測試點的定位誤差縮小到1 m內,動態環境能將57.8%的測試點的定位誤差縮小到1.5 m內。相比較未處理的數據定位算法,平均定位精度提升43.2%,極大提升了室內環境定位精度。這驗證了本文算法對靜態和動態復雜環境的定位準確率均有所提高。

Figure 5 Effect of the number of data samples and reference points on positioning accuracy圖5 數據樣本及參考點數目對定位精度的影響
5.2.2 其它參數對定位精度的影響
由于指紋匹配算法的性能與訓練和測試數據有密切關系,因此,實驗分析了不同訓練樣本數目/測試樣本數目組合對定位精度的影響,分別選取25,50,75,100個參考點作為參數,以平均定位誤差作為評價指標分析算法。不同訓練樣本數目/測試樣本數目組合及參考點選取在動態復雜環境下對定位精度的影響如圖5所示。
從實驗結果可以看出,參考點數目為50~75時,平均定位誤差在1.5 m內,定位精度相對較高;參考點數目小于50或大于75時,定位結果相對較差,原因是參考點太少或太多使得匹配算法計算失真情況較多。在靜態場景中最小平均距離誤差在0.85 m內,原因是在動態場景中人員的活動導致信號多徑效應,干擾了信號的穩定性。
5.2.3 不同定位算法的性能分析
依據上節實驗結果,參考點選擇50個,測試樣本數據取500/200,使用2個AP建立指紋庫,在相同的測試場景下,將本文提出的定位算法與基于 RSSI 的指紋定位算法、基于CSI 的FIFS[16]指紋定位算法、基于CSI的CSI-MIMO[17]指紋定位算法進行對比測試。靜態和動態2種場景中定位距離誤差概率累積分布如圖6所示。

Figure 6 Cumulative distribution of localization distance error probabilities for two scenarios圖6 2種場景中定位距離誤差概率累積分布
從實驗結果可以看出,由于基于RSSI的定位算法易受到環境的干擾,很不穩定,誤差最大,在動態場景中平均距離誤差有80%在3 m左右。FIFS和CSI-MIMO使用了信道狀態信息作為指紋特征值,能夠較好地克服原始信號的多徑干擾,這2種算法的定位精度明顯高于RSSI的。而本文提出的定位算法,在FIFS和CSI-MIMO的基礎上吸取了精華,對采集數據進行濾波聚類后提高了指紋特征,進一步提升了定位精度。在靜態場景中,平均距離誤差有90%在1.5 m以內;動態場景中,平均距離誤差有90%在2 m以內,其整體性能優于其他3種定位算法,可以實現對目標位置更加合理的估計。
本文算法在室內靜態和動態2種環境下分別進行測試驗證,在離線階段對原始采集特征數據使用方差補償的自適應卡爾曼濾波降噪后,再通過二分K-means聚類算法生成多個特征向量,在一定程度上降低了室內多徑效應的影響,有更好的空間特性,從而提高了定位精度,相較現有的一些算法和傳統的室內定位算法均有所改善,實用性較強。