葉和敏,彭建盛,2
(1.廣西師范大學(xué)電子工程學(xué)院,廣西桂林541004;2.河池學(xué)院人工智能與制造學(xué)院,廣西宜州546300)
隨著室外GPS定位[1]的不斷發(fā)展,GPS定位技術(shù)為人們帶來了巨大的便利[2]。近年來,人們對室內(nèi)定位的需求越來越大[5]。但目前問題是,GPS信號會受到室內(nèi)建筑物的遮擋和吸收[3]導(dǎo)致定位精度難以滿足人們在室內(nèi)定位的需求[4]。針對室外定位技術(shù)無法適用于室內(nèi)定位的問題,越來越多的研究者投入到室內(nèi)定位技術(shù)的研究中來。文獻[6-7]的作者提出了采用紅外線來進行室內(nèi)定位。采用紅外線技術(shù)進行定位最大的問題就是紅外線無法穿透室內(nèi)障礙物,使得它只能視距傳播且易受其它光源干擾。針對該問題,文獻[8]提出了基于藍牙指紋的室內(nèi)定位,采用融合聚類的方式對K-means算法進行優(yōu)化,最后通過肘方法和輪廓系數(shù)法確定最佳聚類數(shù)及K-means算法的初始聚類中心。文獻[9]提出一種基于區(qū)域優(yōu)選的自適應(yīng)藍牙指紋定位算法,通過離線階段建立RSSI位置映射指紋庫,在線階段,采用加權(quán)歐式距離和區(qū)域優(yōu)選算法,最終實現(xiàn)90%的點定位精度優(yōu)于1.5米。不過藍牙定位技術(shù)存在信號覆蓋范圍小的問題。在較大的室內(nèi)空間需要布置大量的藍牙基站,這顯然是不現(xiàn)實的。隨著無線WLAN技術(shù)的發(fā)展,無線WiFi設(shè)備成為人們在室內(nèi)的無線網(wǎng)絡(luò)接入點,而且越來越多室內(nèi)環(huán)境隨處可見。因此采用WiFi信號進行室內(nèi)定位最大的優(yōu)點是不需要額外布置定位所需的設(shè)備[13]。文獻[14]基于WiFi定位,提出了一種奇異譜分析與高斯過程回歸算法相結(jié)合的室內(nèi)WiFi定位方案。文獻[15]提出一種基于WiFi指紋數(shù)據(jù)空間位置關(guān)系對指紋數(shù)據(jù)分級的方法,實驗結(jié)果表明,該方法實現(xiàn)了1.5米的平均定位精度。文獻[14-15]均采用傳統(tǒng)的WiFi指紋算法進行室內(nèi)定位的。但是平均定位精度在1.5米~3米。
顯然這樣的精度難以滿足機器人在室內(nèi)定位精度的要求。導(dǎo)致傳統(tǒng)算法定位精度不高的問題在于:傳統(tǒng)算法參考點間距通常為1米,參考點間距較大會導(dǎo)致算法定位誤差增大;傳統(tǒng)算法通常在一個時段進行WiFi信號采集,所采集的WiFi信號不夠全面,用于定位時將產(chǎn)生較大誤差;傳統(tǒng)算法的位置指紋數(shù)據(jù)特殊性不高,容易出現(xiàn)匹配錯誤;傳統(tǒng)算法采用歐式距離大小作為相似度參考,指紋匹配準(zhǔn)確率不高。因此,提出一種應(yīng)用于機器人室內(nèi)定位的WiFi指紋定位算法,所提算法實際上是在傳統(tǒng)算法基礎(chǔ)上進行相應(yīng)的改進和優(yōu)化。在改進的算法中,將原來參考點間距1米縮小為0.3米,增加參考點的數(shù)量[10]。然后采用分時段采集方法在一天不同時段采集不同次數(shù)的WiFi信號強度數(shù)據(jù),使得采集到的信號強度值足夠全面。針對傳統(tǒng)算法的位置指紋數(shù)據(jù)特殊性不高的問題,采用標(biāo)準(zhǔn)化處理方法[11]對采集到的WiFi信號進行標(biāo)準(zhǔn)化處理,從而提高指紋數(shù)據(jù)的特殊性。由于傳統(tǒng)算法指紋匹配準(zhǔn)確率不高,在實時定位階段,以馬氏距離大小作為相似度參考并融合改進的自適應(yīng)K值WKNN算法,從而提高指紋匹配的準(zhǔn)確率。
該系統(tǒng)是對機器人進行室內(nèi)定位。圖1所示是機器人室內(nèi)定位系統(tǒng)圖。為了獲得機器人在室內(nèi)中的位置。在離線階段,用戶通過移動終端或PC端連接機器人上的WiFi熱點信號,訪問機器人的控制頁面。通過控制頁面,可以控制機器人進行WiFi信號采集和存儲。機器人在室內(nèi)分布均勻的N個參考點采集位于室內(nèi)不同位置的q個路由器的WiFi信號。在每個參考點處采集到q個WiFi信號強度值并組成信號強度向量(rssi1,rssi2,…,rssiq)。經(jīng)過機器人對數(shù)據(jù)的處理并將該參考點的所有信息存入的機器人的指紋數(shù)據(jù)庫中。機器人在此系統(tǒng)中起到關(guān)鍵性作用,數(shù)據(jù)的處理和定位算法的執(zhí)行均在機器人上進行。在實時定位階段,用戶通過控制頁面發(fā)出定位請求。機器人在接收到定位請求指令后,機器人立刻采集當(dāng)前位置的WiFi信號,經(jīng)過機器人CPU對數(shù)據(jù)的處理和計算,最終把定位結(jié)果返回到控制頁面上。用戶此時可知道機器人在室內(nèi)的位置。
圖2是機器人室內(nèi)定位系統(tǒng)運行模型圖,該模型主要分為兩個階段:離線操作階段和實時定位階段。在離線操作階段,首先將室內(nèi)劃分為等間距的網(wǎng)格圖,每個網(wǎng)格的頂點作為機器人采集信號的參考點。機器人在室內(nèi)每個參考點進行信號采集,在每個參考點采集到q(室內(nèi)WiFi接入點個數(shù))個WiFi信號強度值。然后繼續(xù)從其它參考點采集WiFi信號強度值,直到將室內(nèi)所有參考點的信號強度值都采集完。最后經(jīng)過標(biāo)準(zhǔn)化處理WiFi信號建立位置指紋標(biāo)準(zhǔn)化數(shù)據(jù)庫。該數(shù)據(jù)庫包含參考點位置坐標(biāo)、參考點采集到WiFi信號強度值的期望向量以及WiFi信號強度值的協(xié)方差矩陣。
圖2 機器人室內(nèi)定位系統(tǒng)運行模型
在實時定位階段,機器人在室內(nèi)某個待定位點采集q個實時的WiFi信號。然后采用馬氏距離公式計算待定位點采集到的數(shù)據(jù)與指紋數(shù)據(jù)庫的各個指紋數(shù)據(jù)之間的馬氏距離。以馬氏距離大小作為相似度的參考。然后采用改進的自適應(yīng)K值WKNN算法計算出待定位點的坐標(biāo)。最后機器人將待定位點的坐標(biāo)發(fā)送到手機端或PC端。用戶可在控制頁面上查看到機器人在室內(nèi)的位置,由一個紅點表示出來。
目前傳統(tǒng)的WiFi指紋的定位算法,每個參考點間距通常為1米。為了獲取室內(nèi)更多有效信息,從而提高算法定位精度,將傳統(tǒng)算法參考點間距從1米改為0.3米。如圖3所示是長10.5米寬7.3米的室內(nèi)俯視圖,其中每個小圓點代表一個參考點,每個參考點間距是0.3米。在這個室內(nèi)不同位置布置了4個WiFi接入點,分別是AP1、AP2、AP3、AP4。
圖3 室內(nèi)俯視及參考點位置
WiFi信號強度值在室內(nèi)傳播會受到多徑、散射、衍射、反射以及室內(nèi)物體吸收等影響。WiFi信號強度值每時每刻都存在波動,而且一天中每個時段波動的程度也存在差異。針對該問題,改進的算法在室內(nèi)每個參考點進行了n=100次的WiFi信號采集,而且這100次采集是在不同時段的室內(nèi)環(huán)境下進行的,分別是早上8:00-11:30采集30次,中午12:00-1:30采集10次,下午2:30-5:30采集30次,晚上7:30-10:30采集30次。這樣分時段的采集將有效解決WiFi信號噪聲對定位精度影響較大的問題。
改進的算法所構(gòu)建的指紋數(shù)據(jù)庫與傳統(tǒng)算法構(gòu)建的指紋數(shù)據(jù)庫不同,稱之為標(biāo)準(zhǔn)化指紋數(shù)據(jù)庫。傳統(tǒng)算法的指紋數(shù)據(jù)通常表示((xt,yt),RSSI1,RSSI2,RSSI3,RSSI4),其中(xt,yt)表示參考點t的坐標(biāo),RSSI1~RSSI4表示在參考點t處采集到的4個WiFi設(shè)備的平均信號強度值。傳統(tǒng)算法的指紋數(shù)據(jù)特殊性很低導(dǎo)致定位精度不高。為此,采用標(biāo)準(zhǔn)化處理方法對WiFi信號進行標(biāo)準(zhǔn)化處理。標(biāo)準(zhǔn)化處理后的指紋數(shù)據(jù)標(biāo)記為((xt,yt),m(t),∑t),t表示當(dāng)前參考點(t=1,2,…,N)。對于這樣的指紋數(shù)據(jù),指紋數(shù)據(jù)庫中有N個(N表示參考點的總數(shù))。其中,(xt,yt)表示參考點t的坐標(biāo)。m(t)是參考點t處采集到4個WiFi設(shè)備信號強度的期望向量,m(t)可以由式(1)估計得出
(1)
其中,向量中的第一項表示為參考點t處采集接入點AP1信號強度的均值,X表示信號強度值,k表示第k次采集,n為采集總次數(shù)。第二、三、四項分別表示AP2、AP3、AP4的信號強度均值?!苩是一個協(xié)方差矩陣,它可以表示為
(2)
(3)
實時定位過程中,機器人在待定位點采集實時WiFi信號強度值,將當(dāng)前采集到的信號強度值與指紋數(shù)據(jù)庫中所有指紋數(shù)據(jù)進行匹配計算來獲取機器人當(dāng)前位置的坐標(biāo)。
1)獲取實時WiFi信號來確定位置坐標(biāo):機器人在室內(nèi)的一個待定位點處采集分布在四個不同位置的WiFi接入點的信號強度值,構(gòu)成信號強度向量x=(rssiAP1,rssiAP2,rssiAP3,rssiAP4)。得到該數(shù)據(jù)后機器人將啟動定位程序,直到獲得定位結(jié)果。
2)馬氏距離作為相似度的評判標(biāo)準(zhǔn):由(1)中機器人已獲取了待定位點的實時信號強度向量x=(rssiAP1,rssiAP2,rssiAP3,rssiAP4),將向量x與指紋數(shù)據(jù)庫中所有指紋數(shù)據(jù)進行相似度計算?;隈R氏距離大小作為x與指紋數(shù)據(jù)相似度的衡量標(biāo)準(zhǔn),馬氏距離越小,相似度越大。馬氏距離可表示為式(4):
(4)
3)改進的自適應(yīng)K值WKNN算法:文獻[11]是通過計算出x與指紋數(shù)據(jù)中的m(t)和∑t的最小馬氏距離即可估計出待定位點坐標(biāo)。這樣做可能會忽略其它參考點對定位精度帶來的積極作用。所以,對此作出改變。首先由機器人獲取的實時信號強度向量x=(rssiAP1,rssiAP2,rssiAP3,rssiAP4),然后由式(4)來計算x與所有參考點指紋數(shù)據(jù)的馬氏距離d。對計算出的馬氏距離進行升序排序。排序后馬氏距離最小的是d1,最大的是dN,N是參考點的數(shù)量。d1N是d1與dN的距離差。由式(5)計算出距離差的平均值
(5)
(6)
如果d1t>S,則將對應(yīng)的參考點排除。反之,將其保留,剩下的參考點數(shù)量就是K值。
為了進一步剔除離群點,保留對提高定位精度有效的點,對這K個參考點進行再一次排除。首先,計算馬氏距離最小的參考點對應(yīng)的坐標(biāo)(x1,y1)與剩下K-1個參考點坐標(biāo)的歐式距離[16],標(biāo)記為dist12,dist13,…,dist1k,其中dist1k可表示為
(7)
當(dāng)dist1k>dmin時,將該參考點從K個參考點中移除。dmin的值根據(jù)環(huán)境不同可做相應(yīng)調(diào)整,經(jīng)測試,dmin=1時在本文實驗環(huán)境中取得較好的結(jié)果。
然后對剩下的k(k (8) 其中,(x,y)是機器人最終得到的定位結(jié)果,(xt,yt)是參考點的坐標(biāo)。dt是參考點t位置指紋對應(yīng)的馬氏距離。ε是一個很小的正整數(shù),它的作用是防止分母為零。 實驗是在一間長10.5米,寬7.3米的實驗室進行的,實際室內(nèi)環(huán)境如圖4所示。該實驗室中分別在室內(nèi)的4個不同位置布置了4個WiFi設(shè)備,4個WiFi設(shè)備的型號都是MERCURY 310。圖中的機器人正在采集WiFi信號,機器人上采集信號的設(shè)備是樹莓派3B+,搭載的是OpenWrt系統(tǒng)。 圖4 室內(nèi)環(huán)境圖 為了驗證改進的算法有效性,在室內(nèi)隨機選取58個待定位點進行定位測試。分別采用傳統(tǒng)的WiFi指紋定位算法和改進后的WiFi指紋定位算法在這58個待定位點進行定位。定位結(jié)果如圖5所示。通過圖5可看出改進后的算法在定位精度上優(yōu)于傳統(tǒng)的WiFi指紋定位算法。傳統(tǒng)的WiFi指紋定位算法平均定位精度是1.60米。而改進后的算法平均定位精度達到0.49米。 圖5 定位誤差對比圖 傳統(tǒng)WiFi指紋定位算法定位精度較低,難以滿足機器人室內(nèi)定位精度要求。為了提高傳統(tǒng)算法的定位精度,對它進行如下改進:將傳統(tǒng)算法參考點間距1米縮小為0.3米,增加了參考點數(shù)量,從而減小算法的定位誤差;采用分時段采集方法對WiFi信號進行采集,使得采集到的WiFi信號強度值更加全面,有利于構(gòu)建具有代表性的指紋數(shù)據(jù);采用標(biāo)準(zhǔn)化處理方法處理WiFi信號數(shù)據(jù),提高指紋數(shù)據(jù)的特殊性,有利于提高算法定位精度;在實時定位階段,基于馬氏距離大小作為匹配相似度的參考,并融合了改進的自適應(yīng)K值WKNN算法,提高算法匹配的準(zhǔn)確率。最后實驗結(jié)果顯示,改進后的算法定位精度達到0.49米,定位精度比傳統(tǒng)算法提高了1.11米。改進后的算法定位精度滿足機器人室內(nèi)定位的要求。4 實驗結(jié)果及分析
5 結(jié)論