任曉奎, 于百川, 李 巖
(遼寧工程技術(shù)大學(xué)葫蘆島校區(qū) 電子與信息學(xué)院, 遼寧 葫蘆島 125105)
到目前為止,無線傳感器網(wǎng)絡(luò)(wireless sensor networks,WSNs)的定位問題也越來越受人們的關(guān)注,由于環(huán)境的復(fù)雜性和不確定性,極大影響了無線定位的精度。目前的無線定位技術(shù)主要分為基于測(cè)距的定位算法和基于非測(cè)距的定位算法[1]。測(cè)距的算法包括接收信號(hào)強(qiáng)度指示(received signal strength indication,RSSI)算法、到達(dá)時(shí)間(time of arrival,TOA)算法、到達(dá)時(shí)間差(time difference of arrival,TDOA)算法、到達(dá)角(angle of arrival,AOA)算法;非測(cè)距包括DV-Hop算法[2]、近似三角形內(nèi)點(diǎn)測(cè)試(APIT)算法、質(zhì)心定位算法、凸規(guī)劃定位算法。其中,最常用的是RSSI算法來估計(jì)錨節(jié)點(diǎn)(又稱參考節(jié)點(diǎn))與未知節(jié)點(diǎn)(測(cè)量節(jié)點(diǎn)),RSSI測(cè)量靈活方便,成本低,但是基于RSSI的定位算法因?yàn)殄^節(jié)點(diǎn)與未知節(jié)點(diǎn)之間的通信信道復(fù)雜多變,使得測(cè)距誤差較大,所以不同的環(huán)境應(yīng)對(duì)應(yīng)不同的信號(hào)傳輸模型及參數(shù)。文獻(xiàn)[3]對(duì)加權(quán)質(zhì)心算法存在的不合理因素進(jìn)行改進(jìn),采用測(cè)試距離倒數(shù)之和代替距離和的倒數(shù)作為權(quán)重,提高了定位精度。劉運(yùn)杰等人[4]采用了加權(quán)質(zhì)心算法,在文獻(xiàn)[3]的基礎(chǔ)上,提出了修正系數(shù)的概念,但忽略了三圓不相交的情況。文獻(xiàn)[5]對(duì)文獻(xiàn)[3]進(jìn)行了改進(jìn),對(duì)權(quán)值的選擇上加入了指數(shù)進(jìn)行修正,但其指數(shù)劃分過于粗糙,在圓不相交的情況下,直接取下一組錨節(jié)點(diǎn)進(jìn)行補(bǔ)位,舍棄了較大的RSSI值,加大了精度誤差。文獻(xiàn)[6]使用了距離比例來解決圓不相交的問題,但仍然使用傳統(tǒng)的加權(quán)質(zhì)心算法。文獻(xiàn)[7]通過對(duì)三圓中的任意兩圓半徑進(jìn)行延長(zhǎng)修正,雖然使圓相交,但在延長(zhǎng)圓半徑過程中仍會(huì)造成較大誤差。文獻(xiàn)[8]采用四圓相交產(chǎn)生的四邊形公共區(qū)域,通過求取四個(gè)三角形的質(zhì)心作為初始值來求解待測(cè)點(diǎn)坐標(biāo)。但四圓相交會(huì)出現(xiàn)不同情況,需要對(duì)參與定位的圓進(jìn)行選擇,會(huì)丟失一些較大RSSI值的點(diǎn),造成誤差。
針對(duì)以上問題,提出了一種基于RSSI的測(cè)距質(zhì)心算法和加權(quán)質(zhì)心定位算法相結(jié)合(RSSI-based ranging centroid and weighted centroid,RSSI-RCWC)的定位算法,提高了定位精度。
在室內(nèi)定位中,通常采用更合理的對(duì)數(shù)常態(tài)分布模型[5]數(shù)學(xué)表達(dá)式,如式(1)
式中PL(d)為經(jīng)過距離d后的路徑損耗,dBm;PL(d0)為單位距離之后的路徑損耗;n為損耗因子;d為發(fā)射節(jié)點(diǎn)到接收節(jié)點(diǎn)的距離,m;d0為單位距離,通常取1 m;X0為均值為0的高斯分布隨機(jī)數(shù)。接收節(jié)點(diǎn)的RSSI值表達(dá)式為式(2)
RSSI=Pt-PL(d)
(2)
設(shè)d0處的信號(hào)強(qiáng)度為A,則式(2)為
PL(d0)=Pt-A
(3)
由于通常d0取1 m,X0為均值為0,所以,將式(3)代入式(1)中可以化簡(jiǎn)為下式
PL(d0)=Pt-A+10nlg(d)
(4)
將式(4)代入式(2)可得
RSSI=A-10nlg(d)
(5)
式中A為距離為1 m處的RSSI值,n為路徑損耗因子,隨著定位節(jié)點(diǎn)的移動(dòng),n為變化的,不同的環(huán)境對(duì)應(yīng)著的參數(shù)也是不同的,所以選擇合適的A和n值對(duì)定位精度的準(zhǔn)確有著關(guān)鍵的意義,本文n取3。
在實(shí)際應(yīng)用當(dāng)中,由于室內(nèi)環(huán)境的復(fù)雜性和隨機(jī)性,會(huì)導(dǎo)致所采集到的信號(hào)強(qiáng)度存在較大的誤差,所以要先對(duì)RSSI值進(jìn)行濾波,常用的濾波算法有均值濾波、高斯濾波和卡爾曼濾波。文獻(xiàn)[9]通過使用卡爾曼濾波對(duì)RSSI進(jìn)行循環(huán)濾波處理,實(shí)驗(yàn)表明算法明顯減少了測(cè)距誤差,但帶來了大量的通信開銷和計(jì)算數(shù)據(jù),且循環(huán)隨機(jī)性增加了算法的不確定性。均值濾波是對(duì)采集到的RSSI值求取平均值作為估計(jì)值,忽略了復(fù)雜的環(huán)境因素變化,在運(yùn)算過程中產(chǎn)生了奇異值,從而導(dǎo)致了較大的誤差。文獻(xiàn)[10]采用了多重濾波算法,對(duì)采集到的RSSI進(jìn)行數(shù)據(jù)濾波處理,提高了一定的定位精度。程遠(yuǎn)國(guó)和朱明輝等人[11,12]通過使用高斯模型對(duì)采集到的RSSI值進(jìn)行篩選,濾除了短暫的擾動(dòng)和突發(fā)干擾造成較大偏差的值,使得測(cè)距誤差下降。所以,本文采用一個(gè)高斯濾波器來平滑RSSI的值,假設(shè)在實(shí)驗(yàn)區(qū)的某個(gè)參考點(diǎn)采集到n個(gè)RSSI值,分別為Xn={x1,x2,…,xn-1,xn},其中每一個(gè)對(duì)應(yīng)的概率P為Pn={p1,p2,…,pn-1,pn},均值和方差為μ和δ2,則高斯濾波模型為
通過設(shè)定高概率最小值應(yīng)大于0.6的范圍,減少了小概率事件對(duì)于采集的RSSI值的影響,如式(9)所示
0.15δ+μ≤x≤3.09δ+μ
(9)
通過式(7)和式(8)得出μ和δ2,代入式(9)確定出RSSI的范圍。為了消除誤差,選取式(9)得出的值通過式(10)進(jìn)行均值優(yōu)化,得到RSSI信號(hào)的優(yōu)化值
加權(quán)質(zhì)心算法中假設(shè)已知三個(gè)錨節(jié)點(diǎn)的坐標(biāo)為A(x1,y1),B(x2,y2),C(x3,y3),未知節(jié)點(diǎn)為O(x,y),該點(diǎn)到各個(gè)錨節(jié)點(diǎn)的距離分別為d1,d2,d3,就可以通過方程組(11)計(jì)算出未知節(jié)點(diǎn)的坐標(biāo),式(11)如下所示
通過式(11)可得,未知節(jié)點(diǎn)O(x,y)為
(12)
但在實(shí)際應(yīng)用當(dāng)中,受到各種復(fù)雜環(huán)境變化的影響路徑損耗往往比理論數(shù)值大,通過RSSI距離轉(zhuǎn)化公式得到的半徑大于實(shí)際距離,會(huì)導(dǎo)致錨節(jié)點(diǎn)構(gòu)成的三個(gè)圓相交于一個(gè)區(qū)域,所求出的未知節(jié)點(diǎn)會(huì)有一定的偏差,如圖1所示。
圖1 三點(diǎn)定位算法
首先計(jì)算出三個(gè)圓的公共區(qū)域的頂點(diǎn)坐標(biāo),通過式(11)可以算出頂點(diǎn)坐標(biāo)D(xD,yD),E(xE,yE),F(xiàn)(xF,yF),通過式(13)的加權(quán)質(zhì)心算法可以得出未知節(jié)點(diǎn)(xi,yi)。
在質(zhì)心定位過程中,需要錨節(jié)點(diǎn)圓相交來推測(cè)未知節(jié)點(diǎn)的區(qū)域,在錨節(jié)點(diǎn)圓不相交的情況下,選擇取下一組錨節(jié)點(diǎn)進(jìn)行補(bǔ)位[4~6],直到出現(xiàn)三圓相交時(shí)再進(jìn)行定位,這樣會(huì)丟失一些數(shù)值比較大的RSSI的點(diǎn),不斷選用下一組錨節(jié)點(diǎn)進(jìn)行補(bǔ)位會(huì)造成累積誤差,最終使定位精度與原有精度相差較大。本文選用距離比例模型,解決了因圓不相交造成的式(13)的無解情況。
當(dāng)圓不相交時(shí),如圖2所示,連接三圓的圓心,就F點(diǎn)為例,當(dāng)圓的半徑越大時(shí),距離未知節(jié)點(diǎn)越遠(yuǎn),誤差越大, 所以應(yīng)使F點(diǎn)靠近半徑較小的A點(diǎn),使得圓A發(fā)揮更大的作用,則F點(diǎn)的位置應(yīng)為AF/CF=d1/d3,根據(jù)式(14)可求得F(xF,xF)
圖2 距離比例模型
同理可以求出E(xE,xE)和D(xD,xD),的坐標(biāo)。通過求得的D點(diǎn),E點(diǎn)和F點(diǎn),構(gòu)成一個(gè)新的三角形區(qū)域,對(duì)D,E,F(xiàn)點(diǎn)構(gòu)成的三角形求質(zhì)心,求得質(zhì)心O。
傳統(tǒng)的三角形質(zhì)心定位算法[13,14]并沒有考慮未知節(jié)點(diǎn)和錨節(jié)點(diǎn)距離的遠(yuǎn)近對(duì)于定位的影響,式(13)中的三角加權(quán)質(zhì)心定位算法雖然考慮到了距離的不同對(duì)定位精度造成的影響,但是在權(quán)值的選擇上仍有不足之處。本文提出了RSSI-RCWC定位算法,前期通過接收到的RSSI值進(jìn)行從大到小的排列,選出前4個(gè)點(diǎn)其中任意3個(gè)進(jìn)行排列組合,如圖2所示,通過距離比例模型得到D,E,F(xiàn)坐標(biāo)點(diǎn),以這三個(gè)點(diǎn)為頂點(diǎn)構(gòu)成一個(gè)三角形,求出這個(gè)三角形的質(zhì)心O1(xo1,yo1),其中,xo1=(xD+xE+xF)/3,Yo1=(yD+yE+yF)/3,質(zhì)心O1的權(quán)值為1/(d1+d2+d3)。同理可以求得其他三個(gè)排列組合,其質(zhì)心和權(quán)值分別為O2(xo2,yo2),O3(xo3,yo3),O4(xo4,yo4),1/(d1+d2+d4),1/(d1+d3+d4),1/(d2+d3+d4),則未知節(jié)點(diǎn)的坐標(biāo)為O(x,y)
對(duì)式(15)中的權(quán)值增加冪值,來進(jìn)一步提高定位精度,使權(quán)值由原來的1/(d1+d2+d3)變?yōu)?/(d1+d2+d3)n修正后的算法公式為式(16)
RSSI-DSW定位算法的具體步驟如下:1)錨節(jié)點(diǎn)周期性地向周圍發(fā)送自身信息,包括節(jié)點(diǎn)ID和自身位置信息。2)未知節(jié)點(diǎn)接收到一定的坐標(biāo)信息后,不再接收新的信息,對(duì)接收到的信息進(jìn)行高斯濾波,并將接收到的RSSI值根據(jù)式(1)~式(5)轉(zhuǎn)換成對(duì)應(yīng)的距離值。3)根據(jù)得到的距離值進(jìn)行從小到大排列,取前4個(gè)錨節(jié)點(diǎn)。4)使用距離比例模型,對(duì)4個(gè)錨節(jié)點(diǎn)中隨機(jī)3個(gè)進(jìn)行排列組合求出相對(duì)應(yīng)的三角形質(zhì)心O1,O2,O3和O4坐標(biāo)。5)根據(jù)RSSI-RCWC定位算法,根據(jù)得到的質(zhì)心坐標(biāo)計(jì)算出未知節(jié)點(diǎn)坐標(biāo)O(x,y)。6)計(jì)算未知節(jié)點(diǎn)誤差如式(17)所示
在空曠的室內(nèi)場(chǎng)地,選取10 m×10 m的矩形區(qū)域進(jìn)行實(shí)驗(yàn),在頂點(diǎn)位置以及該區(qū)域的中心,共設(shè)置9個(gè)錨節(jié)點(diǎn),無線信號(hào)載頻為2.4 GHz,使用相同型號(hào)的路由器斐訊FWR—706,未知節(jié)點(diǎn)通過隨機(jī)生成函數(shù)來生成,權(quán)值n取5,按照上述的步驟進(jìn)行仿真定位,得到接收到的信號(hào)強(qiáng)度再利用MATLAB R2018a對(duì)算法進(jìn)行仿真實(shí)驗(yàn)。
在實(shí)際測(cè)試中,選用普通質(zhì)心算法和加權(quán)質(zhì)心算法進(jìn)行比較,隨機(jī)選用15個(gè)點(diǎn)位,實(shí)驗(yàn)的定位精度誤差仿真結(jié)果如圖3(a)所示。從圖3(a)可以看出,普通質(zhì)心算法存在較大的誤差,效果較差,RSSI-RCWC算法誤差減小效果明顯,從整體效果看,RSSI-RCWC算法定位誤差也明顯要優(yōu)于其他兩種算法,存在較大的優(yōu)勢(shì)。
通過取不同的權(quán)值n進(jìn)行仿真實(shí)驗(yàn),實(shí)驗(yàn)進(jìn)行100次,取其平均值,畫出平均定位誤差曲線,如圖3(b)所示。根據(jù)圖3(b)的結(jié)果,選取權(quán)值n為6,對(duì)隨機(jī)抽取的15個(gè)點(diǎn)進(jìn)行定位,實(shí)驗(yàn)進(jìn)行100次,求取平均定位誤差,對(duì)以上三種方法的定位及其誤差仿真結(jié)果如圖3(c)所示。
圖3 仿真實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)結(jié)果表明,相對(duì)于傳統(tǒng)的質(zhì)心算法,改進(jìn)算法的最小誤差減少了0.40 m,最大誤差減少了0.47 m,平均誤差減少了0.37 m,提高了56.06 %;相對(duì)于加權(quán)質(zhì)心算法,改進(jìn)算法的最小誤差減少了0.12 m,最大誤差減少了0.05 m,平均誤差減少了0.088 m,精度提高了23.16 %。
表1 誤差計(jì)算
針對(duì)無線傳感器網(wǎng)絡(luò)中RSSI測(cè)距誤差的問題,對(duì)加權(quán)質(zhì)心算法存在的不合理因素進(jìn)行改進(jìn),提出了RSSI-RCWC定位算法。RSSI-RCWC定位算法解決了錨節(jié)點(diǎn)圓不相交狀態(tài)下,選取其他錨節(jié)點(diǎn)進(jìn)行補(bǔ)位造成RSSI獲取精度誤差增大的問題,提出的改進(jìn)的加權(quán)質(zhì)心算法,是一種更精確的距離倒數(shù)和權(quán)重的比例公式。實(shí)驗(yàn)結(jié)果表明:與傳統(tǒng)的算法相比,RSSI-RCWC定位算法的定位精度提高了56.06 %,比加權(quán)質(zhì)心算法提高了23.16 %,提高了定位精度,具有較高的實(shí)際應(yīng)用價(jià)值。