葉和敏,彭建盛,2
(1.廣西師范大學電子工程學院,廣西桂林541004;2.河池學院人工智能與制造學院,廣西宜州546300)
隨著室外GPS定位[1]的不斷發展,GPS定位技術為人們帶來了巨大的便利[2]。近年來,人們對室內定位的需求越來越大[5]。但目前問題是,GPS信號會受到室內建筑物的遮擋和吸收[3]導致定位精度難以滿足人們在室內定位的需求[4]。針對室外定位技術無法適用于室內定位的問題,越來越多的研究者投入到室內定位技術的研究中來。文獻[6-7]的作者提出了采用紅外線來進行室內定位。采用紅外線技術進行定位最大的問題就是紅外線無法穿透室內障礙物,使得它只能視距傳播且易受其它光源干擾。針對該問題,文獻[8]提出了基于藍牙指紋的室內定位,采用融合聚類的方式對K-means算法進行優化,最后通過肘方法和輪廓系數法確定最佳聚類數及K-means算法的初始聚類中心。文獻[9]提出一種基于區域優選的自適應藍牙指紋定位算法,通過離線階段建立RSSI位置映射指紋庫,在線階段,采用加權歐式距離和區域優選算法,最終實現90%的點定位精度優于1.5米。不過藍牙定位技術存在信號覆蓋范圍小的問題。在較大的室內空間需要布置大量的藍牙基站,這顯然是不現實的。隨著無線WLAN技術的發展,無線WiFi設備成為人們在室內的無線網絡接入點,而且越來越多室內環境隨處可見。因此采用WiFi信號進行室內定位最大的優點是不需要額外布置定位所需的設備[13]。文獻[14]基于WiFi定位,提出了一種奇異譜分析與高斯過程回歸算法相結合的室內WiFi定位方案。文獻[15]提出一種基于WiFi指紋數據空間位置關系對指紋數據分級的方法,實驗結果表明,該方法實現了1.5米的平均定位精度。文獻[14-15]均采用傳統的WiFi指紋算法進行室內定位的。但是平均定位精度在1.5米~3米。
顯然這樣的精度難以滿足機器人在室內定位精度的要求。導致傳統算法定位精度不高的問題在于:傳統算法參考點間距通常為1米,參考點間距較大會導致算法定位誤差增大;傳統算法通常在一個時段進行WiFi信號采集,所采集的WiFi信號不夠全面,用于定位時將產生較大誤差;傳統算法的位置指紋數據特殊性不高,容易出現匹配錯誤;傳統算法采用歐式距離大小作為相似度參考,指紋匹配準確率不高。因此,提出一種應用于機器人室內定位的WiFi指紋定位算法,所提算法實際上是在傳統算法基礎上進行相應的改進和優化。在改進的算法中,將原來參考點間距1米縮小為0.3米,增加參考點的數量[10]。然后采用分時段采集方法在一天不同時段采集不同次數的WiFi信號強度數據,使得采集到的信號強度值足夠全面。針對傳統算法的位置指紋數據特殊性不高的問題,采用標準化處理方法[11]對采集到的WiFi信號進行標準化處理,從而提高指紋數據的特殊性。由于傳統算法指紋匹配準確率不高,在實時定位階段,以馬氏距離大小作為相似度參考并融合改進的自適應K值WKNN算法,從而提高指紋匹配的準確率。
該系統是對機器人進行室內定位。圖1所示是機器人室內定位系統圖。為了獲得機器人在室內中的位置。在離線階段,用戶通過移動終端或PC端連接機器人上的WiFi熱點信號,訪問機器人的控制頁面。通過控制頁面,可以控制機器人進行WiFi信號采集和存儲。機器人在室內分布均勻的N個參考點采集位于室內不同位置的q個路由器的WiFi信號。在每個參考點處采集到q個WiFi信號強度值并組成信號強度向量(rssi1,rssi2,…,rssiq)。經過機器人對數據的處理并將該參考點的所有信息存入的機器人的指紋數據庫中。機器人在此系統中起到關鍵性作用,數據的處理和定位算法的執行均在機器人上進行。在實時定位階段,用戶通過控制頁面發出定位請求。機器人在接收到定位請求指令后,機器人立刻采集當前位置的WiFi信號,經過機器人CPU對數據的處理和計算,最終把定位結果返回到控制頁面上。用戶此時可知道機器人在室內的位置。
圖2是機器人室內定位系統運行模型圖,該模型主要分為兩個階段:離線操作階段和實時定位階段。在離線操作階段,首先將室內劃分為等間距的網格圖,每個網格的頂點作為機器人采集信號的參考點。機器人在室內每個參考點進行信號采集,在每個參考點采集到q(室內WiFi接入點個數)個WiFi信號強度值。然后繼續從其它參考點采集WiFi信號強度值,直到將室內所有參考點的信號強度值都采集完。最后經過標準化處理WiFi信號建立位置指紋標準化數據庫。該數據庫包含參考點位置坐標、參考點采集到WiFi信號強度值的期望向量以及WiFi信號強度值的協方差矩陣。

圖2 機器人室內定位系統運行模型
在實時定位階段,機器人在室內某個待定位點采集q個實時的WiFi信號。然后采用馬氏距離公式計算待定位點采集到的數據與指紋數據庫的各個指紋數據之間的馬氏距離。以馬氏距離大小作為相似度的參考。然后采用改進的自適應K值WKNN算法計算出待定位點的坐標。最后機器人將待定位點的坐標發送到手機端或PC端。用戶可在控制頁面上查看到機器人在室內的位置,由一個紅點表示出來。
目前傳統的WiFi指紋的定位算法,每個參考點間距通常為1米。為了獲取室內更多有效信息,從而提高算法定位精度,將傳統算法參考點間距從1米改為0.3米。如圖3所示是長10.5米寬7.3米的室內俯視圖,其中每個小圓點代表一個參考點,每個參考點間距是0.3米。在這個室內不同位置布置了4個WiFi接入點,分別是AP1、AP2、AP3、AP4。

圖3 室內俯視及參考點位置
WiFi信號強度值在室內傳播會受到多徑、散射、衍射、反射以及室內物體吸收等影響。WiFi信號強度值每時每刻都存在波動,而且一天中每個時段波動的程度也存在差異。針對該問題,改進的算法在室內每個參考點進行了n=100次的WiFi信號采集,而且這100次采集是在不同時段的室內環境下進行的,分別是早上8:00-11:30采集30次,中午12:00-1:30采集10次,下午2:30-5:30采集30次,晚上7:30-10:30采集30次。這樣分時段的采集將有效解決WiFi信號噪聲對定位精度影響較大的問題。
改進的算法所構建的指紋數據庫與傳統算法構建的指紋數據庫不同,稱之為標準化指紋數據庫。傳統算法的指紋數據通常表示((xt,yt),RSSI1,RSSI2,RSSI3,RSSI4),其中(xt,yt)表示參考點t的坐標,RSSI1~RSSI4表示在參考點t處采集到的4個WiFi設備的平均信號強度值。傳統算法的指紋數據特殊性很低導致定位精度不高。為此,采用標準化處理方法對WiFi信號進行標準化處理。標準化處理后的指紋數據標記為((xt,yt),m(t),∑t),t表示當前參考點(t=1,2,…,N)。對于這樣的指紋數據,指紋數據庫中有N個(N表示參考點的總數)。其中,(xt,yt)表示參考點t的坐標。m(t)是參考點t處采集到4個WiFi設備信號強度的期望向量,m(t)可以由式(1)估計得出

(1)
其中,向量中的第一項表示為參考點t處采集接入點AP1信號強度的均值,X表示信號強度值,k表示第k次采集,n為采集總次數。第二、三、四項分別表示AP2、AP3、AP4的信號強度均值。∑t是一個協方差矩陣,它可以表示為

(2)



(3)

實時定位過程中,機器人在待定位點采集實時WiFi信號強度值,將當前采集到的信號強度值與指紋數據庫中所有指紋數據進行匹配計算來獲取機器人當前位置的坐標。
1)獲取實時WiFi信號來確定位置坐標:機器人在室內的一個待定位點處采集分布在四個不同位置的WiFi接入點的信號強度值,構成信號強度向量x=(rssiAP1,rssiAP2,rssiAP3,rssiAP4)。得到該數據后機器人將啟動定位程序,直到獲得定位結果。
2)馬氏距離作為相似度的評判標準:由(1)中機器人已獲取了待定位點的實時信號強度向量x=(rssiAP1,rssiAP2,rssiAP3,rssiAP4),將向量x與指紋數據庫中所有指紋數據進行相似度計算。基于馬氏距離大小作為x與指紋數據相似度的衡量標準,馬氏距離越小,相似度越大。馬氏距離可表示為式(4):

(4)

3)改進的自適應K值WKNN算法:文獻[11]是通過計算出x與指紋數據中的m(t)和∑t的最小馬氏距離即可估計出待定位點坐標。這樣做可能會忽略其它參考點對定位精度帶來的積極作用。所以,對此作出改變。首先由機器人獲取的實時信號強度向量x=(rssiAP1,rssiAP2,rssiAP3,rssiAP4),然后由式(4)來計算x與所有參考點指紋數據的馬氏距離d。對計算出的馬氏距離進行升序排序。排序后馬氏距離最小的是d1,最大的是dN,N是參考點的數量。d1N是d1與dN的距離差。由式(5)計算出距離差的平均值

(5)

(6)
如果d1t>S,則將對應的參考點排除。反之,將其保留,剩下的參考點數量就是K值。
為了進一步剔除離群點,保留對提高定位精度有效的點,對這K個參考點進行再一次排除。首先,計算馬氏距離最小的參考點對應的坐標(x1,y1)與剩下K-1個參考點坐標的歐式距離[16],標記為dist12,dist13,…,dist1k,其中dist1k可表示為

(7)
當dist1k>dmin時,將該參考點從K個參考點中移除。dmin的值根據環境不同可做相應調整,經測試,dmin=1時在本文實驗環境中取得較好的結果。
然后對剩下的k(k (8) 其中,(x,y)是機器人最終得到的定位結果,(xt,yt)是參考點的坐標。dt是參考點t位置指紋對應的馬氏距離。ε是一個很小的正整數,它的作用是防止分母為零。 實驗是在一間長10.5米,寬7.3米的實驗室進行的,實際室內環境如圖4所示。該實驗室中分別在室內的4個不同位置布置了4個WiFi設備,4個WiFi設備的型號都是MERCURY 310。圖中的機器人正在采集WiFi信號,機器人上采集信號的設備是樹莓派3B+,搭載的是OpenWrt系統。 圖4 室內環境圖 為了驗證改進的算法有效性,在室內隨機選取58個待定位點進行定位測試。分別采用傳統的WiFi指紋定位算法和改進后的WiFi指紋定位算法在這58個待定位點進行定位。定位結果如圖5所示。通過圖5可看出改進后的算法在定位精度上優于傳統的WiFi指紋定位算法。傳統的WiFi指紋定位算法平均定位精度是1.60米。而改進后的算法平均定位精度達到0.49米。 圖5 定位誤差對比圖 傳統WiFi指紋定位算法定位精度較低,難以滿足機器人室內定位精度要求。為了提高傳統算法的定位精度,對它進行如下改進:將傳統算法參考點間距1米縮小為0.3米,增加了參考點數量,從而減小算法的定位誤差;采用分時段采集方法對WiFi信號進行采集,使得采集到的WiFi信號強度值更加全面,有利于構建具有代表性的指紋數據;采用標準化處理方法處理WiFi信號數據,提高指紋數據的特殊性,有利于提高算法定位精度;在實時定位階段,基于馬氏距離大小作為匹配相似度的參考,并融合了改進的自適應K值WKNN算法,提高算法匹配的準確率。最后實驗結果顯示,改進后的算法定位精度達到0.49米,定位精度比傳統算法提高了1.11米。改進后的算法定位精度滿足機器人室內定位的要求。
4 實驗結果及分析


5 結論