王佩琦, 李艷萍, 陳相南, 李 婧
(太原理工大學(xué) 信息工程學(xué)院,山西 太原 030024)
隨著物聯(lián)網(wǎng)技術(shù)的快速發(fā)展,無線傳感器網(wǎng)絡(luò)(wireless sensor networks,WSNs)技術(shù)得到了廣泛的應(yīng)用[1~3]。在WSNs中,節(jié)點(diǎn)位置信息的確定是WSNs技術(shù)的重要環(huán)節(jié),節(jié)點(diǎn)定位算法的設(shè)計(jì)已成為目前WSNs的研究熱點(diǎn)。
現(xiàn)有的定位方法從定位手段上分為基于測距(range-based)和無需測距[4](range-free)兩大類?;跍y距的方法需要節(jié)點(diǎn)有測距功能,利用節(jié)點(diǎn)間的實(shí)際距離或角度信息,使用三邊定位、三角定位或極大似然估計(jì)等定位算法計(jì)算節(jié)點(diǎn)位置。常用的測距技術(shù)有超聲波、紅外線、GPS和接收信號(hào)強(qiáng)度指示(received signal strength indicator,RSSI)等。其中,RSSI測距技術(shù)根據(jù)對接收信號(hào)強(qiáng)度的判斷,計(jì)算出收發(fā)節(jié)點(diǎn)間的距離,由于對硬件要求較少,所以,它成為無線定位技術(shù)的首選[5]。文獻(xiàn)[6,7]提出了采用修正RSSI權(quán)系數(shù)的方法優(yōu)化定位算法。
三邊定位技術(shù)[8,9]由于算法簡單,大量應(yīng)用于無線定位系統(tǒng)中,其基本原理是由未知節(jié)點(diǎn)測得與周圍3個(gè)坐標(biāo)已知的錨節(jié)點(diǎn)的距離,分別作為3個(gè)錨圓的半徑,在理想情況下,3個(gè)圓交于一點(diǎn),通過幾何計(jì)算可以得到未知節(jié)點(diǎn)坐標(biāo)。但在實(shí)際應(yīng)用中,由于存在噪聲干擾,致使3個(gè)圓不能相交于一點(diǎn),導(dǎo)致定位精度下降甚至定位失敗。文獻(xiàn)[10]通過分析錨節(jié)點(diǎn)之間的通信約束和幾何關(guān)系,提出一種錨圓交點(diǎn)的加權(quán)質(zhì)心定位算法,減小定位誤差。
本文提出了RSSI距離補(bǔ)償機(jī)制算法,在錨圓不相交的情況下能夠準(zhǔn)確進(jìn)行節(jié)點(diǎn)定位,提高在噪聲環(huán)境中的定位性能。
無線信號(hào)傳播模型主要有自由空間傳播模型、雙徑地面反射模型和Shadowing模型等,目前普遍采用的是Sha-dowing模型,該模型為[11]
(1)
其中,RSSId為接收到的信號(hào)強(qiáng)度;d為收發(fā)端的實(shí)際距離;d0為參考距離;RSSId0是距離為d0時(shí)的信號(hào)強(qiáng)度;n為信道衰減指數(shù),由傳輸環(huán)境決定;Xσ是方差為σ、均值為0的高斯隨機(jī)變量。在實(shí)際的測量中,不考慮Xσ,采用以下的模型
RSSI=-(10nlgd+A),
(2)
式中A為距發(fā)射節(jié)點(diǎn)1 m 處的接收信號(hào)強(qiáng)度,dBm。
在圖1中,3個(gè)錨節(jié)點(diǎn)A1,A2,A3是未知節(jié)點(diǎn)附近RSSI值最強(qiáng)的3個(gè)點(diǎn),具有最大的參考價(jià)值,但是它們的圓不相交,現(xiàn)將RSSI值最強(qiáng)的錨節(jié)點(diǎn)A1稱為靶節(jié)點(diǎn),RSSI距離修正的原理是:將圓A2,A3的半徑分別增加一定距離,使三個(gè)圓兩兩相交,形成一個(gè)重疊區(qū)域,如圖1陰影部分所示。再通過加權(quán)質(zhì)心算法求得未知節(jié)點(diǎn)坐標(biāo)。增加后的半徑r2和r3由式(3)求得
(3)
其中,r1為靶節(jié)點(diǎn)的半徑;d1,2為A1,A2間的距離;d1,3為A1,A3間的距離。
圖1 算法原理圖
兩圓交點(diǎn)Mi,Mk坐標(biāo),可以通過兩錨節(jié)點(diǎn)A2,A3間的距離d2,3和兩錨節(jié)點(diǎn)的坐標(biāo)(x2,y2)(x3,y3)計(jì)算得出,具體方法如下:
首先求得A2,A3之間的距離d2,3為
(4)
線段A2A3與線段A2Mi的夾角α為
(5)
(6)
(7)
最后,求Mi,Mk坐標(biāo)為
(8)
現(xiàn)在對采用RSSI距離修正定位的整個(gè)過程進(jìn)行分析:
1)首先,未知節(jié)點(diǎn)向周圍發(fā)送定位請求,錨節(jié)點(diǎn)收到定位請求信息后,向未知節(jié)點(diǎn)發(fā)送含有自己坐標(biāo)和RSSI值等信息的回傳數(shù)據(jù)包;然后,未知節(jié)點(diǎn)根據(jù)收到的回傳信息計(jì)算與各錨節(jié)點(diǎn)的距離r1,r2,r3,…;
2)用冒泡排序法將錨節(jié)點(diǎn)與未知節(jié)點(diǎn)的距離進(jìn)行排序,使r1 3)判斷A1,A2是否相交,如果不相交,則根據(jù)式(3)算出修正量來擴(kuò)大A2的半徑,使兩圓交于點(diǎn)M1,M2; 4)如果M1,M2有一點(diǎn)超出了實(shí)際定位區(qū)域的范圍,則舍去該點(diǎn),另一點(diǎn)設(shè)為p1,并將標(biāo)志位Flag置0;如果兩點(diǎn)都在范圍內(nèi),則暫時(shí)將M1,M2中點(diǎn)設(shè)為p1,標(biāo)志位Flag置1; 5)判斷A1,A3是否相交,如果不相交,則擴(kuò)大A3的半徑,與A1相交于M3,M4兩點(diǎn),并將其中靠近p1的點(diǎn)設(shè)為p2; 7)當(dāng)標(biāo)志位Flag為1時(shí),將M1,M2中靠近p2的點(diǎn)重新設(shè)為p1。 此時(shí)未知節(jié)點(diǎn)的位置就在p1,p2,p3構(gòu)成的區(qū)域內(nèi),如圖2陰影部分所示。根據(jù)p1,p2,p3三個(gè)點(diǎn)的坐標(biāo)(xp1,yp1),(xp2,yp2),(xp3,yp3)通過加權(quán)質(zhì)心算法[12]可求得未知節(jié)點(diǎn)的坐標(biāo) (9) 其中,權(quán)值為:w1=1/d1,w2=1/d2,w3=1/d3。 圖2 錨圓相交區(qū)域 為了得到RSSI和距離的關(guān)系,在6 m×10 m的教室進(jìn)行了2個(gè)節(jié)點(diǎn)的通信實(shí)驗(yàn),節(jié)點(diǎn)采用基于Zig Bee的CC2530模塊,一個(gè)用來接收信號(hào),一個(gè)用來發(fā)送信號(hào),節(jié)點(diǎn)高度定為1.5 m,節(jié)點(diǎn)發(fā)射功率為1 mW。每一個(gè)測量點(diǎn)距發(fā)射點(diǎn)的距離在0.1~5 m內(nèi)變化,每次增加0.1 m,記錄200個(gè)收到的數(shù)據(jù)包,RSSI距離關(guān)系如圖3所示,通過對數(shù)據(jù)擬合得到RSSI距離關(guān)系 RSSI=-18lgd-34. (10) 圖3 RSSI與距離的關(guān)系 實(shí)驗(yàn)在教室進(jìn)行,采用12個(gè)錨節(jié)點(diǎn)和1個(gè)未知節(jié)點(diǎn)以及1個(gè)網(wǎng)關(guān)節(jié)點(diǎn),未知節(jié)點(diǎn)將定位信息傳給網(wǎng)關(guān)節(jié)點(diǎn)。 圖4 現(xiàn)場實(shí)驗(yàn)布局 錨節(jié)點(diǎn)間相隔3 m呈網(wǎng)格狀分布,如圖4所示。未知節(jié)點(diǎn)依次經(jīng)過10個(gè)指定位置時(shí),記錄25次定位點(diǎn)的坐標(biāo),然后計(jì)算定位誤差,定義定位誤差為 (11) 其中,(x,y)為計(jì)算得到的未知節(jié)點(diǎn)的位置,(xe,ye)為其真實(shí)位置。誤差的最大值、最小值以及平均值如表1所示。 表1 實(shí)驗(yàn)結(jié)果 從表1的數(shù)據(jù)可以得出平均誤差為0.62 m,并且離錨節(jié)點(diǎn)近的位置誤差較小,表明RSSI距離修正算法在定位時(shí),RSSI值大的錨節(jié)點(diǎn)對定位的影響較大。 為了分析在錨節(jié)點(diǎn)隨機(jī)分布的情況下算法的性能,采用Matlab進(jìn)行仿真實(shí)驗(yàn),將20個(gè)錨節(jié)點(diǎn)和6個(gè)未知節(jié)點(diǎn)隨機(jī)分布在6 m×10 m的區(qū)域內(nèi),分布情況如圖5所示。仿真使用2種定位算法,另一種是極大似然法,并對定位誤差進(jìn)行分析比較,分析結(jié)果如圖6所示。仿真結(jié)果表明:RSSI距離修正算法的定位誤差小于極大似然算法,定位精度更加精確。 圖5 節(jié)點(diǎn)分布情況 圖6 仿真結(jié)果 本文提出一種RSSI距離修正算法,通過調(diào)整錨節(jié)點(diǎn)的定位圓半徑,再結(jié)合加權(quán)質(zhì)心法,彌補(bǔ)了錨圓不能相交時(shí)對未知節(jié)點(diǎn)定位造成的誤差?,F(xiàn)場實(shí)驗(yàn)和仿真分析表明:RSSI距離修正算法在節(jié)點(diǎn)指定分布和隨機(jī)分布的情況下都表現(xiàn)出較高的定位的精度,較好的定位性能,可以很好地應(yīng)用于室內(nèi)定位等領(lǐng)域。 參考文獻(xiàn): [1] 孫利民,李建中,陳 渝,等.無線傳感器網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,2005. [2] Lazarescu M T.Design of a WSNs platform for long-term environmental monitoring for IoT applications[J].IEEE Journal on Emerging and Selected Topics in Circuits and Systems,2013,3(1):45-54. [3] Blumrosen G,Hod B,Anker T,et al.Enhanced calibration technique for RSSI-based ranging in body area networks[J].Ad Hoc Networks,2013,11(1):555-569. [4] 丁恩杰,喬 欣,常 飛,等.基于RSSI的WSNs加權(quán)質(zhì)心定位算法的改進(jìn)[J].傳感器與微系統(tǒng),2013,32(7):53-56. [5] 譚 志,張 卉.無線傳感器網(wǎng)絡(luò)RSSI定位算法的研究與改進(jìn)[J].北京郵電大學(xué)學(xué)報(bào),2013,36(3):88-91. [6] 趙 昭,陳小惠.無線傳感器網(wǎng)絡(luò)中基于RSSI的改進(jìn)定位算法[J].傳感技術(shù)學(xué)報(bào),2009,22(3):391-394. [7] 張治斌,徐小玲,閻連龍.基于Zig Bee井下無線傳感器網(wǎng)絡(luò)的定位方法[J].煤炭學(xué)報(bào),2009,34(1):125-128. [8] Han Guangjie,Choi D,Lim W.Reference node placement and selection algorithm based on trilateration for indoor sensor network-s[J].Wireless Communications and Mobile Computing,2009,9(8):1017-1027. [9] Yang Zheng,Liu Yunhao.Quality of trilateration:Confidence-based iterative localization[J].IEEE Transactions on Parallel and Distributed Systems,2010,21(5):631-640. [10] 李 娟,王 珂,李 莉,等.基于錨圓交點(diǎn)加權(quán)質(zhì)心的無線傳感器網(wǎng)絡(luò)定位算法[J].吉林大學(xué)學(xué)報(bào):工學(xué)版,2009,39(6):1649-1653. [11] 朱明輝,張會(huì)清.基于 RSSI 的室內(nèi)測距模型的研究[J].傳感器與微系統(tǒng),2010,29(8):19-22. [12] 張嬋愛,馬艷艷,白鳳娥,等.基于RSSI的加權(quán)質(zhì)心定位算法的實(shí)現(xiàn)[J].太原理工大學(xué)學(xué)報(bào),2009,40(2):146-147.3 實(shí)驗(yàn)與結(jié)果分析
3.1 建立測距模型
3.2 現(xiàn)場試驗(yàn)
3.3 仿真分析
4 結(jié)束語