竺超明,華子雯,陳立建,徐 慧,毛科技*
(1.浙江廣播電視大學(xué)蕭山學(xué)院,杭州 310000;2.浙江工業(yè)大學(xué)計算機科學(xué)與技術(shù)學(xué)院,杭州 310032)
無線傳感器網(wǎng)絡(luò)WSN(Wireless Sensor Networks)主要用來監(jiān)測網(wǎng)絡(luò)部署區(qū)域中各種環(huán)境特性,比如溫濕度、光照強度、磁場強度、受力強度、速度或加速度、化學(xué)物質(zhì)濃度等等,但是只有在知道節(jié)點位置信息的情況下很多監(jiān)測的數(shù)據(jù)才有意義。換句話說,傳感器節(jié)點的定位在無線傳感器網(wǎng)絡(luò)的諸多應(yīng)用中有著十分重要的意義。目前室外定位方法主要是通過全球定位系統(tǒng)GPS(Global Positioning System),GPS衛(wèi)星通過發(fā)射電磁波信號計算距離,從而實現(xiàn)定位功能,然而GPS信號在室內(nèi)環(huán)境或信號穿透比較差的場景中,不能實現(xiàn)高精度定位,因此很難滿足室內(nèi)定位的需求。室內(nèi)定位方法與成熟的室外定位方法存在較大差異,主要包括:一、室內(nèi)定位方法需要解決復(fù)雜的定位環(huán)境對定位精度帶來的影響,目前在室內(nèi)定位中常見的Wi-Fi、藍牙、Zigbee等定位技術(shù)存在多徑效應(yīng)、成本昂貴等問題。二、室內(nèi)定位方法對環(huán)境的依賴性較大,當(dāng)環(huán)境發(fā)生變化時很可能導(dǎo)致之前部署的定位系統(tǒng)失效。三、對定位的精度要求不同,室外定位的精度沒有嚴(yán)格的要求,而室內(nèi)環(huán)境本身比較小,所以室內(nèi)定位需要較高的精度,一般為米級甚至厘米級[1-5]。
目前室內(nèi)定位最常見的是測距定位方法,包括利用藍牙、Wifi、Zigbee等技術(shù)進行測距定位,該定位技術(shù)通過信號的衰減從而實現(xiàn)距離的測量,信號衰減越多,認為傳輸?shù)木嚯x越遠。然而在復(fù)雜環(huán)境下,利用信號強度RSSI進行測距存在諸多問題,測距誤差較大[6]。文獻[7]提出了無線傳感器節(jié)點在空間環(huán)境上的RSSI相似度概念,采用RSSI相似度作為權(quán)重因子,改進了加權(quán)質(zhì)心算法;文獻[8]針對基于RSSI的無線傳感器網(wǎng)絡(luò)室內(nèi)移動目標(biāo)定位算法易受干擾、波動較大等問題,提出一種改進的RSSI多維標(biāo)度室內(nèi)定位算法;文獻[9]提出了一種基于RSSI和輔助節(jié)點協(xié)作的Wi-Fi室內(nèi)定位方法,適用于基于Wi-Fi的室內(nèi)定位系統(tǒng);文獻[10]提出一種用于室內(nèi)定位的基于接收信號強度的二次定位方法;還有很多文獻[11-15]都是關(guān)于室內(nèi)定位的,但是在室內(nèi)場景中需要部署大量的基站節(jié)點才能進行定位,成本昂貴,因此很難在實際場景中應(yīng)用?;谥讣y的室內(nèi)定位方法是通過采集室內(nèi)定位場景中的固有特征或部署特征,構(gòu)建定位指紋數(shù)據(jù)庫,然后通過匹配指紋數(shù)據(jù)庫從而實現(xiàn)精度較高的室內(nèi)定位。
基于信號強度測距的定位方法能夠?qū)崿F(xiàn)較高精度的定位,定位精度一般在毫米到米之間,但是由于測距定位本身存在的缺點,很難應(yīng)用于實際場景中,而指紋定位方法雖然平均定位精度略低于測距定位,但是指紋定位方法成本低,可靠度高,抗干擾能力強,因此是較好的選擇[16-18]。
基于上述分析,本文研究了一種基于信號強度特征的指紋定位方法,該方法通過構(gòu)建定位區(qū)域RSSI特征,構(gòu)建多維向量指紋實現(xiàn)較高精度定位,且指紋構(gòu)建方法能夠當(dāng)定位環(huán)境發(fā)生變化是快速重建指紋,因此能夠較好的應(yīng)用于實際場景中。
傳感器節(jié)點采集的原始數(shù)據(jù)如圖1所示,在發(fā)送節(jié)點和接收節(jié)點固定的情況下,采集的RSSI值波動比較大,這對定位精度存在巨大的影響,因此本文Kalman濾波算法對原始數(shù)據(jù)進行濾波處理,去除噪聲,經(jīng)過處理后的RSSI值如圖2所示。
圖1 RSSI原始數(shù)據(jù)圖
圖2 RSSI濾波后結(jié)果圖
Kriging插值算法主要是對樣本的待估計位置相互間的空間位置關(guān)系進行了考慮,通過加權(quán)平均來估計預(yù)測未知區(qū)域的情況,從而使插值結(jié)果呈現(xiàn)出線性、無偏和最小方差估計的特點[19-20]。由于這種算法是一種光滑內(nèi)插方法,因此結(jié)果隨著樣本點的增多而更加精確。由于復(fù)雜環(huán)境的干擾導(dǎo)致RSSI強度不總是呈現(xiàn)出理想情況下以節(jié)點為同心圓分布,本文需要一種能在有限的樣本點構(gòu)建出比較符合實際情況的RSSI分布,采用Kriging算法對RSSI進行預(yù)測,能根據(jù)樣本點的數(shù)據(jù)構(gòu)建出最能符合實際情況的RSSI分布。本文對傳統(tǒng)Kriging算法進行改進,使算法在預(yù)測模型選擇階段能夠根據(jù)數(shù)據(jù)樣本自動選擇匹配度最高的經(jīng)典模型作為最終的預(yù)測模型,因此算法具有較強的自適應(yīng)性。
經(jīng)過處理后的RSSI值構(gòu)建定位區(qū)域D的指紋數(shù)據(jù)庫,如圖3所示。定位區(qū)域中總共部署了25個Micaz普通節(jié)點,其中包括5個信標(biāo)節(jié)點和20個輔助節(jié)點,這些傳感器節(jié)點都能發(fā)射和接收信號。首先錨節(jié)點A向外廣播信號,其他24個節(jié)點能夠接收到廣播的信號,并從信號中獲取RSSI值,由于每個傳感器節(jié)點的位置是已知的,因此可獲得節(jié)點的RSSI與節(jié)點間距離d的關(guān)系對Pair,然后利用Kriging插值算法可構(gòu)建錨節(jié)點A對應(yīng)的定位區(qū)域指紋。然后用同樣的方法分別為錨節(jié)點B、C、D、E構(gòu)建定位區(qū)域指紋,最終將構(gòu)建個5個單維指紋做并集,形成一個5維的定位區(qū)域向量指紋。利用Kriging插值算法構(gòu)建一個信標(biāo)節(jié)點(信標(biāo)節(jié)點A)的單維定位指紋具體過程如圖4所示,具體步驟如下:
圖4 定位指紋構(gòu)建圖
第1步:將長為L,寬為W的定位區(qū)域D均勻劃分為m行n列,定位區(qū)域D被劃分為m×n個方格,每個方格的長度為cl=L/m,寬度為cw=W/n。
第2步:利用信標(biāo)節(jié)點和輔助節(jié)點采集的RSSI值訓(xùn)練Kriging插值算法,然后對步驟一劃分的小格子進行插值,這樣就建立了錨節(jié)點A對應(yīng)的單維RSSI指紋VA,其中VA表示定位區(qū)域中每個方格子(子區(qū)域)對應(yīng)的RSSI值和坐標(biāo)。
第3步:對錨節(jié)點B、C、D、E重復(fù)步驟二,此時能構(gòu)建單維RSSI定位指紋VB、VC、VD、VE,最后將構(gòu)建的5個單維指紋做并集,得到一個5維的RSSI指紋FingerP,如式(1)所示。
FingerP[m×n][5]=VA[m×n]∪VB[m×n]∪
VC[m×n]∪VD[m×n]∪VE[m×n]
(1)
圖3 定位區(qū)域節(jié)點部署圖
當(dāng)目標(biāo)節(jié)點進入定位區(qū)域后會固定時間向傳感器網(wǎng)絡(luò)的5個信標(biāo)節(jié)點發(fā)送數(shù)據(jù)包,表示開始定位,錨節(jié)點收到數(shù)據(jù)包后立刻向目標(biāo)節(jié)點發(fā)送空的數(shù)據(jù)包,目標(biāo)節(jié)點收到5個錨節(jié)點的數(shù)據(jù)包后,從數(shù)據(jù)包中獲得RSSI值,然后對RSSI值進行異常處理,形成一個可靠的5維向量,如式(2)所示,這個5維向量和定位指紋地圖中的m×n個方格對應(yīng)的5維RSSI向量進行余弦相似度匹配,匹配結(jié)束后選擇相似度最高的前num個方格作為目標(biāo)節(jié)點所在位置的范圍,實現(xiàn)初步的定位。
圖5 障礙物影響圖
(2)
表1 向量組合匹配方法
圖6 匹配結(jié)果圖
如圖6所示。虛陰影部分表示誤差較大的格子,實陰影部分表示誤差較小的方格子,圓表示目標(biāo)節(jié)點的實際位置。為了排除定位誤差較大的方格子,本文采用文獻[21]的K-means聚類算法提高定位精度。首先利用K-means聚類算法將num個方格子聚為Nc類,最后選擇元素最多的一類作為目標(biāo)節(jié)點的真實位置范圍,而其他元素較少的類認為是定位誤差,需要排除。最后將元素最多的一類的重心作為最終的定位結(jié)果,如圖7所示。
圖7 定位結(jié)果圖
定位區(qū)域為一個3 m×3 m的室內(nèi)環(huán)境,在定位區(qū)域中部署25個傳感器節(jié)點(Micaz節(jié)點的主頻為4 MHz,功率:3 mW),其中5個錨節(jié)點、20個位輔助節(jié)點,驗證定位算法的抗干擾能力,定位場景如圖8所示。系統(tǒng)中的定位目標(biāo)為一輛搭載目標(biāo)傳感器節(jié)點的小車,如圖9所示,目標(biāo)小車通過藍牙與手機連接,目標(biāo)小車在定位區(qū)域內(nèi)行走,定位系統(tǒng)的界面中存在一個虛擬的定位區(qū)域,實時畫出目標(biāo)小車的位置,如圖10所示。
圖8 定位場景圖
圖9 定位目標(biāo)圖
圖10 系統(tǒng)界面圖
3.2.1 Kriging插值精度
為構(gòu)建精確的定位指紋地圖,本實驗在定位區(qū)域中均勻部署不同數(shù)量的傳感器節(jié)點,實驗中選擇定位區(qū)域內(nèi)4個不同位置作為插值準(zhǔn)確性的驗證點,這4個點的坐標(biāo)分別為a(0.75,0.75)、b(2.25,0.75)、c(0.75,2.25)、d(2.25,2.25),實驗中在定位區(qū)域中心部署一個傳感器節(jié)點,該節(jié)點向外廣播信號,而定位區(qū)域中其他節(jié)點接收信號并獲得RSSI值。分別實際采集4個實驗點的RSSI值和Kriging插值得到的RSSI值,最后將4個實驗點的平均RSSI值作為實驗結(jié)果進行對比。實驗結(jié)果如圖11所示,橫坐標(biāo)表示定位區(qū)域中部署節(jié)點的數(shù)量,這些節(jié)點用于采集Kriging算法的樣本點,縱坐標(biāo)表示4個實驗點的平均RSSI值。
圖11 插值結(jié)果對比圖
實驗結(jié)果表明在前期定位區(qū)域中部署的傳感器節(jié)點增加,利用Kriging算法插值得到的RSSI值逐漸靠近真實采集的RSSI值,當(dāng)傳感器節(jié)點數(shù)量大于18個以后,插值得到的RSSI值與實際采集的RSSI值基本相同,但是任存在微小差別,因為傳感器節(jié)點的信號受自身的影響,接收節(jié)點采集的RSSI值任存在跳動的情況,另一方便插值算法計算得到的RSSI值也收到樣本RSSI的影響,但是誤差是在可接受的范圍內(nèi)。實驗結(jié)果表明在長為3 m,寬為3 m的定位區(qū)域中部署傳感器節(jié)點的數(shù)量不少于18個時,利用Kriging算法構(gòu)建定位區(qū)域指紋是可靠的。
3.2.2 區(qū)域劃分對定位精度的影響
本文的指紋定位方法將定位區(qū)域劃分為m×n個格子,每個格子的大小相同,利用Kriging插值算法為每個格子預(yù)測其對應(yīng)的RSSI值。實驗中傳感器節(jié)點的部署方式如圖8所示,均勻的部署25個傳感器節(jié)點,其中5個錨節(jié)點,20個輔助節(jié)點,將定位結(jié)果均勻的劃分為若干方格子,實驗結(jié)果如圖12所示,橫坐標(biāo)為將定位區(qū)域劃分的精細程度,縱坐標(biāo)為定位系統(tǒng)的定位誤差,實驗結(jié)果是20次隨機定位的平均結(jié)果。
圖12 定位區(qū)域劃分效果圖
實驗結(jié)果顯示初始時刻隨著定位區(qū)域劃分越來越精細,定位系統(tǒng)的定位誤差逐漸減小,當(dāng)定位誤差減小到10 cm左右后隨著定位區(qū)域劃分的越來越精細,定位誤差降低的幅度逐漸減小,最后趨于穩(wěn)定。當(dāng)定位區(qū)域被劃分為50×50的精細度時,定位誤差逐漸穩(wěn)定下來,因為此時每個方格的長度為6 cm,寬度為4 cm,這和傳感器節(jié)點的表面積大小接近,因此即使對定位區(qū)域劃分的更精細,定位的精度也不會有大幅度提高。通過本次實驗得出結(jié)論:定位區(qū)域劃分的精細程度和算法的定位精度有很大的關(guān)系,在一定程度上,劃分的越精細,定位精度越高,但是當(dāng)每個小格子面積與傳感器節(jié)點面積接近時,定位精度也就趨于穩(wěn)定。
3.2.3 定位算法抗干擾性
為了使室內(nèi)定位算法具有較強的抗障礙物干擾性,設(shè)計了基于組合匹配的定位方法。假設(shè)多個錨節(jié)點與目標(biāo)節(jié)點的視距通訊鏈路被障礙物干擾的數(shù)量有Onum條,則只需要滿足Bnum-Onum≥3即可對目標(biāo)節(jié)點進行正常定位,其中Bnum為錨節(jié)點的數(shù)量。定位系統(tǒng)的節(jié)點部署方式如圖8所示。錨節(jié)點節(jié)點與目標(biāo)節(jié)點被障礙物遮擋的情況如圖9所示。本次實驗驗證目標(biāo)節(jié)點ob(1.6,1.4)的定位精度與5個錨節(jié)點被遮擋視距鏈路數(shù)量的關(guān)系,實驗結(jié)果如圖13所示,橫坐標(biāo)表示被遮擋的鏈路數(shù)量,縱坐標(biāo)表示對目標(biāo)節(jié)點的定位誤差,實驗結(jié)果是系統(tǒng)重復(fù)定位的20次平均結(jié)果。
圖13 組合匹配結(jié)果圖
實驗結(jié)果表明當(dāng)被遮擋的鏈路數(shù)量分別為0、1、2時(總共有5個錨節(jié)點),系統(tǒng)的定位誤差約為6 cm~8 cm,定位誤差比較小,當(dāng)被障礙物干擾的鏈路數(shù)量分別為3、4、5時,能夠與目標(biāo)節(jié)點視距通訊的鏈路數(shù)量分別為2、1、0,此時的定位誤差較大,基本為1.5 m、1.8 m、2.2 m,而定位的范圍僅僅是一個邊長為3m的正方形區(qū)域,因此這么大的誤差并不能被接受。實驗結(jié)果表明本文提出的基于組合匹配的方法有較好的抗障礙物干擾能力。
3.2.4 定位優(yōu)化結(jié)果
僅采用與定位指紋匹配度最高的一個位置作為定位結(jié)果存在較大的偶然性,因此本文選擇匹配度最高的前n個位置作為初步的定位結(jié)果范圍,然后采用K-means聚類算法對定位結(jié)果范圍進行聚類。通過實際的定位系統(tǒng)實驗驗證在沒有采用K-means聚類方法(直接計算n個定位結(jié)果的重心作為定位結(jié)果)和采用了K-means聚類方法對系統(tǒng)整體定位精度的影響,實驗結(jié)果如圖14所示,橫坐標(biāo)為實驗次數(shù),縱坐標(biāo)為系統(tǒng)的平均定位誤差。每次實驗都是隨機定位10次的平均結(jié)果。
圖14 定位結(jié)果優(yōu)化圖
實驗結(jié)果表明采用K-means聚類算法的定位誤差約為7 cm左右,而沒有采用K-means聚類算法排除誤差項的平均定位誤差約為10 cm左右,因此采用K-means聚類算法排除誤差能夠提高定位精度。
更直觀的來看,目標(biāo)小車在定位區(qū)域中行走,系統(tǒng)界面每隔0.5 s對小車進行一次定位,小車的定位軌跡如圖15所示,圖中黑色圓形表示定位點,連續(xù)定位形成小車的運動軌跡,圖中白色圓圈表示輔助節(jié)點。
圖15 定位系統(tǒng)界面圖
定位結(jié)果表明小車的軌跡不存在較大幅度的跳動現(xiàn)象,且定位結(jié)果連續(xù),因此表明系統(tǒng)對目標(biāo)小車的定位精度較高,穩(wěn)定性好。
本文實現(xiàn)的基于Zigbee的位置指紋定位方法,該方法在定位區(qū)域指紋構(gòu)建方面與傳統(tǒng)的方法有較大的差異,能夠基于少量傳感器節(jié)點快速的構(gòu)建定位區(qū)域的指紋,即使在定位環(huán)境發(fā)生變化后本文的指紋構(gòu)建方法也能夠快速的重建指紋,從而降低了人工采集的成本,提高了效率。在定位階段,本文設(shè)計了合理的組合匹配方法,該方法能夠一定程度的降低室內(nèi)環(huán)境中障礙物對定位精度的影響,具有較好的抗干擾性。最后通過實物實驗驗證了定位算法在指紋構(gòu)建方面的快速和準(zhǔn)確性,且具有較強的抗障礙物干擾能力,最重要的是定位精度較高。
通過實物實驗對算法的各方面進行驗證,證明了本文提出的定位算法能夠滿足實際環(huán)境的應(yīng)用要求,并且在實際應(yīng)用場景中能夠方面快捷的進行定位指紋構(gòu)建和重建工作,節(jié)約了大量的人力物力。