馮志江,司亞超,馮 帆
(1. 河北建筑工程學(xué)院,河北 張家口 075000;2. 河北工業(yè)大學(xué),天津 300401)
物聯(lián)網(wǎng)是互聯(lián)網(wǎng)以及因特網(wǎng)的基礎(chǔ)上擴(kuò)展的,它是各種信息感知設(shè)備與互聯(lián)網(wǎng)相結(jié)合形成的龐大網(wǎng)絡(luò),可以實(shí)現(xiàn)任何時間、任何地點(diǎn)、任何人員、任何機(jī)器、任何事物的互相連通,是20世紀(jì)發(fā)展起來的新型。它作用于工業(yè)、醫(yī)療、農(nóng)業(yè)、交通、環(huán)保、消防等各個方面,與生活緊密相連,為人們帶來了各種便利[1]。
物聯(lián)網(wǎng)層次結(jié)構(gòu)分為三層,分別為應(yīng)用層、網(wǎng)絡(luò)層和感知層,作為核心的感知層是信息采集的關(guān)鍵部分[2-4]。WSN(Wireless Sensor Networks,無線傳感器網(wǎng)絡(luò))是物聯(lián)網(wǎng)感知層的關(guān)鍵技術(shù)[5-6],在監(jiān)測區(qū)域內(nèi)部署了大量的微型傳感器節(jié)點(diǎn),通過無線通信形成了一個多跳自組織網(wǎng)絡(luò)系統(tǒng),其中節(jié)點(diǎn)定位技術(shù)是該系統(tǒng)的重要技術(shù)之一,它是一種基于網(wǎng)絡(luò)中幾個位置已知的節(jié)點(diǎn),也稱為錨節(jié)點(diǎn),需要通過某種定位機(jī)制來確定其它位置未知的節(jié)點(diǎn)的過程[7-8]。
節(jié)點(diǎn)定位是當(dāng)前研究的熱點(diǎn)問題,目前許多相關(guān)領(lǐng)域都有涉及,如莫建麟,研究面向LoRa網(wǎng)絡(luò)的基于維納濾波的RSSI定位算法[9],該種算法測距存在噪聲,且定位精度不高;尹燁佳等,研究非視距環(huán)境中的無線網(wǎng)絡(luò)殘差加權(quán)定位算法[10],該種算法計算較為復(fù)雜,效率較低;施濤濤等,研究基于支持向量機(jī)的混合相似度室內(nèi)指紋定位算法[11],該種算法參考點(diǎn)匹配精度和數(shù)據(jù)利用率較低。
為解決目前研究算法存在的問題,本文提出基于跳數(shù)修正的DV-hop定位算法,實(shí)現(xiàn)移動無線物聯(lián)網(wǎng)感知層傳感控制定位,其在DV-hop定位算法的基礎(chǔ)上,通過對錨節(jié)點(diǎn)間跳數(shù),以及未知節(jié)點(diǎn)到錨節(jié)點(diǎn)間跳數(shù)進(jìn)行修正,從而提高了定位精度和效率,以便更好地應(yīng)用于實(shí)際中。
DV-hop算法主要通過跳計數(shù)和距離向量來估計未知節(jié)點(diǎn)到信標(biāo)節(jié)點(diǎn)的距離,未知節(jié)點(diǎn)的位置信息可以通過三邊或者多邊測量法得到,圖1描述了其方法過程[12]。
圖1 DV-hop算法過程
從圖1中可以看出,包含于未知節(jié)點(diǎn)通信區(qū)域中的信標(biāo)節(jié)點(diǎn)數(shù)量并不多,節(jié)點(diǎn)到其通信區(qū)域外的多個信標(biāo)節(jié)點(diǎn)的距離信息可通過上述方法得到
以下三個階段是DV-hop算法的主要組成部分:
第一階段:網(wǎng)絡(luò)中全部節(jié)點(diǎn)的信標(biāo)節(jié)點(diǎn)最小跳數(shù)值,可以根據(jù)典型的距離矢量路由協(xié)議得到。
第二階段:使用信標(biāo)節(jié)點(diǎn)對平均每跳距離值進(jìn)行計算的時,若一個信標(biāo)節(jié)點(diǎn)的坐標(biāo)為(xi,yi),其計算過程可以用式(1)描述
(1)
式中,信標(biāo)節(jié)點(diǎn)j的坐標(biāo)用(xj,yj)表示,信標(biāo)節(jié)點(diǎn)j與信標(biāo)節(jié)點(diǎn)i之間的最小跳數(shù)為hj;基于信標(biāo)節(jié)點(diǎn)i計算出的平均每跳距離用HopSize表示。作為一個校正值的HopSize,廣播可以使用可控泛洪法在傳感器網(wǎng)絡(luò)中進(jìn)行,為了確保由最近的一個信標(biāo)節(jié)點(diǎn)傳送過來的內(nèi)容為節(jié)點(diǎn)接收到的校正值,那么第一個校正值應(yīng)該被傳感器所保存,收到校正值后的未知節(jié)點(diǎn)到信標(biāo)節(jié)點(diǎn)的距離可用跳數(shù)和校正值進(jìn)行計算。
第三階段:未知節(jié)點(diǎn)的坐標(biāo)可采用最小二乘法進(jìn)行計算,且要滿足未知節(jié)點(diǎn)最少得到三個信標(biāo)節(jié)點(diǎn)的距離的條件。Ri=(xi,yi)T,i=1,2,……,M,為給出的信標(biāo)節(jié)點(diǎn)集,其中信標(biāo)節(jié)點(diǎn)的數(shù)目為M,Li表示未知節(jié)點(diǎn)X=(x,y)T到信標(biāo)節(jié)點(diǎn)i的最小跳數(shù),所以可以用di=Li×HopSize表示未知節(jié)點(diǎn)X=(x,y)T到信標(biāo)節(jié)點(diǎn)i的距離值,式(2)描述了未知節(jié)點(diǎn)X的坐標(biāo)的計算過程
(2)
式(4)表示未知節(jié)點(diǎn)X的坐標(biāo),其根據(jù)標(biāo)準(zhǔn)的最小均方差估算方法得到:
X=Ri×HopSize
(3)
根據(jù)上小結(jié)可得,傳統(tǒng)DV-Hop定位算法在用公式Cphopspi對節(jié)點(diǎn)間跳數(shù)進(jìn)行計算時,存在與實(shí)際距離偏離,從而導(dǎo)致節(jié)點(diǎn)定位有較大誤差的問題,這是由于每跳的距離不同,但不論其在通信區(qū)域之中相距多遠(yuǎn),都估算其跳數(shù)為一跳。以兩錨節(jié)點(diǎn)間的最短路徑為例驗(yàn)證上述問題,具體如圖2所示。
圖2 兩錨節(jié)點(diǎn)間的最短路徑
如圖2所示,L1和L2分別為兩個錨節(jié)點(diǎn),可以看出每跳的長度都不一樣,要將和實(shí)際值接近的最后一跳的長度作為節(jié)點(diǎn)的通信半徑,如果有較大的誤差被引入到最后的定位中,則是因?yàn)楦鶕?jù)傳統(tǒng)DV-Hop定位算法對錨節(jié)點(diǎn)間的最小跳數(shù)進(jìn)行計算時仍然記作4跳。
對于上述問題,為了減少由跳數(shù)引起的誤差,提出了一種新的跳數(shù)計算方法,定義一些參數(shù)來說明本文的改進(jìn)算法。
定義1:i和j分別表示兩錨節(jié)點(diǎn),R表示通信半徑,理想跳數(shù)Hij為兩錨節(jié)點(diǎn)間的實(shí)際距離和所有節(jié)點(diǎn)的通信半徑的比,式(4)是其表達(dá)式
(4)
定義2:偏離因子αij為理想跳數(shù)和節(jié)點(diǎn)間實(shí)際跳數(shù)的相對誤差,式(5)是其表達(dá)式
(5)
式內(nèi),兩錨節(jié)點(diǎn)i和j之間的實(shí)際跳數(shù)值用hopsij表示。偏離理想跳數(shù)的程度可以根據(jù)偏離因子對節(jié)點(diǎn)間平均每一跳進(jìn)行反映,當(dāng)實(shí)際跳數(shù)與理想跳數(shù)的偏離程度越大,則此實(shí)際跳數(shù)替代理想跳數(shù)所引起的誤差也越大。
定義3:如果用hopsij表示兩錨節(jié)點(diǎn)i和j之間的實(shí)際跳數(shù)值,αij表示偏離因子,跳數(shù)修正系數(shù)wij可用式(6)表示
(6)
式內(nèi),n的取值范圍為正整數(shù),要想定位效果最佳,是在n=2的條件下,以下描述了跳數(shù)修正算法的具體過程。
2.2.1 錨節(jié)點(diǎn)間跳數(shù)
根據(jù)式(7)修正錨節(jié)點(diǎn)間跳數(shù),可以盡量使實(shí)際跳數(shù)與理想值接近
(7)
式(8)是理想跳數(shù)和改進(jìn)后的跳數(shù)間的偏差表達(dá)式
(8)
2.2.2 未知節(jié)點(diǎn)到錨節(jié)點(diǎn)間跳數(shù)的改進(jìn)
傳統(tǒng)DV-Hop定位算法里使用距離矢量交換協(xié)議,在未知節(jié)點(diǎn)對到錨節(jié)點(diǎn)的距離進(jìn)行計算時,結(jié)果是一個整數(shù)跳數(shù),但實(shí)際的跳數(shù)并非全是整數(shù),因此,使用整數(shù)跳數(shù)來計算未知節(jié)點(diǎn)和各個錨點(diǎn)之間的距離肯定會有誤差。為改善這個缺陷,修正未知節(jié)點(diǎn)和錨節(jié)點(diǎn)間的跳數(shù)。
①一個未知節(jié)點(diǎn)計算出距離它最近的錨點(diǎn)的跳數(shù)。
若p為未知節(jié)點(diǎn),i為錨節(jié)點(diǎn),其間的實(shí)際跳數(shù)用hopspi表示,n為錨節(jié)點(diǎn)數(shù)目,式(9)可用于修正其跳數(shù),結(jié)果為
(9)
②未知節(jié)點(diǎn)對距其它錨節(jié)點(diǎn)的跳數(shù)進(jìn)行計算。
式(10)可用于修正未知節(jié)點(diǎn)p對距其它錨節(jié)點(diǎn)的跳數(shù)的計算
hpj=wijhopspj
(10)
式內(nèi),由式(6)可獲得wij,未知節(jié)點(diǎn)和其它錨節(jié)點(diǎn)之間的實(shí)際跳數(shù)用hopspj表示。為了更好地反映未知節(jié)點(diǎn)到其它錨節(jié)點(diǎn)的跳數(shù)偏離程度,可以使用兩錨節(jié)點(diǎn)間的偏離因子,原因是大部分未知節(jié)點(diǎn)距離任意兩錨節(jié)點(diǎn)的路徑會出現(xiàn)部分重疊。
2.2.3 改進(jìn)后的算法流程
以下是改進(jìn)后的DV-Hop算法流程:
第1階段:獲取全部節(jié)點(diǎn)到各個錨節(jié)點(diǎn)的距離和跳數(shù)信息,和傳統(tǒng)算法步驟一樣。
第2階段:首先錨節(jié)點(diǎn)間的跳數(shù)修正可以通過式(7)實(shí)現(xiàn),接下來基于式(1)用修正的跳數(shù)對每個錨節(jié)點(diǎn)的平均每跳距離進(jìn)行計算。
第3階段:分別采用式(9)和式(10)用未知節(jié)點(diǎn)對距其最近錨節(jié)點(diǎn)與其它錨節(jié)點(diǎn)的跳數(shù)進(jìn)行修正,接下來要計算距各個錨節(jié)點(diǎn)的距離,可以根據(jù)與其最近錨節(jié)點(diǎn)的平均每跳距離得到。最后未知節(jié)點(diǎn)的位置估算坐標(biāo),可在計算出的距離的基礎(chǔ)上,根據(jù)二維雙曲線定位算法獲得。
以采用MATLAB軟件仿真的移動無線物聯(lián)網(wǎng)感知層為實(shí)驗(yàn)對象,在100m×100m的正方形區(qū)域中隨機(jī)分布了傳感器節(jié)點(diǎn),研究不同跳數(shù)修正系數(shù)、不同總節(jié)點(diǎn)個數(shù)、不同通信半徑、不同錨節(jié)點(diǎn)比例以及不同偏離因子下,本文算法的控制定位效果。
為了實(shí)現(xiàn)本文算法的移動無線物聯(lián)網(wǎng)感知層最佳定位精度,統(tǒng)計不同跳數(shù)修正系數(shù)下,本文算法的定位誤差,當(dāng)跳數(shù)修正系數(shù)n分別為1、2、3、4時,本文算法定位誤差隨錨節(jié)點(diǎn)比例變化的結(jié)果如圖3所示。
圖3 不同跳數(shù)修正系數(shù)控制定位誤差對比
分析圖3可得,本文算法控制定位誤差隨著錨節(jié)點(diǎn)比例的增加而減小,并且逐漸趨向平穩(wěn),當(dāng)跳數(shù)修正系數(shù)為2時的控制定位誤差始終低于跳數(shù)修正系數(shù)為1、3和4的定位誤差,說明跳數(shù)修正系數(shù)為2時,本文算法控制定位精度最高,所以本文算法在進(jìn)行移動無線物聯(lián)網(wǎng)感知層傳感控制定位過程中,將2作為最佳跳數(shù)修正系數(shù)值。
為了測試本文算法控制定位移動無線物聯(lián)網(wǎng)感知層的精度,實(shí)驗(yàn)分析在不同總節(jié)點(diǎn)個數(shù)下本文算法的控制定位誤差,并設(shè)計對比實(shí)驗(yàn),選取文獻(xiàn)[9]的面向LoRa網(wǎng)絡(luò)的基于維納濾波的RSSI定位算法、文獻(xiàn)[10]的非視距環(huán)境中的無線網(wǎng)絡(luò)殘差加權(quán)定位算法以及文獻(xiàn)[11]的支持向量機(jī)的混合相似度室內(nèi)指紋定位算法,作為本文算法的對比算法,統(tǒng)計四種算法在不同總節(jié)點(diǎn)個數(shù)下的控制定位誤差,結(jié)果如圖4所示。
圖4 不同總節(jié)點(diǎn)個數(shù)控制定位誤差對比
分析圖4可得,四種算法的控制定位誤差都隨著總節(jié)點(diǎn)個數(shù)的增加而減小,而在節(jié)點(diǎn)所在區(qū)域不變的情況下,隨著節(jié)點(diǎn)總數(shù)的增加,則逐漸趨于穩(wěn)定,移動無線物聯(lián)網(wǎng)中節(jié)點(diǎn)密度增大,導(dǎo)致控制定位精度提高。相對于其它三種算法,本文算法在不同總節(jié)點(diǎn)個數(shù)下的控制定位誤差始終保持最低,而文獻(xiàn)[11]算法的控制定位誤差始終保持最高。對比這些數(shù)據(jù)可以看出,在不同總節(jié)點(diǎn)個數(shù)下,本文算法具有較高的控制定位準(zhǔn)確性和穩(wěn)定性,可大大提高移動無線物聯(lián)網(wǎng)感知層的控制定位效果。
實(shí)驗(yàn)分析在不同節(jié)點(diǎn)通信半徑下不同算法的控制定位誤差,結(jié)果如表1所示。
表1 不同節(jié)點(diǎn)通信半徑下的控制定位誤差對比(m)
通過對表1的分析,四種算法的控制定位誤差均隨節(jié)點(diǎn)通信半徑的增加而增加,這是由于節(jié)點(diǎn)間跳數(shù)的增加以及節(jié)點(diǎn)間跳數(shù)的誤差的增加所造成的。相對于其它三種算法,在同一通信半徑下,本文算法的控制定位誤差始終保持最低,說明本文算法控制定位移動無線物聯(lián)網(wǎng)感知層的效果最好。
實(shí)驗(yàn)分析在不同錨節(jié)點(diǎn)比例下不同算法的控制定位誤差,結(jié)果如圖5所示。
圖5 不同錨節(jié)點(diǎn)比例控制定位誤差對比
分析圖5可得,四種算法的控制定位誤差都隨著錨節(jié)點(diǎn)比例的增大而減小,并逐漸趨向穩(wěn)定。相對于其它三種算法,本文算法在不同錨節(jié)點(diǎn)比例下的控制定位誤差始終保持最低,且與其它算法的控制定位誤差值相距較大。對比這些數(shù)據(jù)可以看出,在不同錨節(jié)點(diǎn)比例下,本文算的控制定位準(zhǔn)確性和穩(wěn)定性最高,可通過選擇較大的錨節(jié)點(diǎn)比例進(jìn)一步提升移動物聯(lián)網(wǎng)感知層傳感控制定位效果。
實(shí)驗(yàn)分析在不同偏離因子下不同算法的控制定位誤差,結(jié)果如圖6所示。
圖6 不同偏離因子控制定位誤差對比
分析圖6可得,四種算法的控制定位誤差都隨著偏離因子的增大而增大。相對于其它三種算法,本文算法在不同偏離因子下的控制定位誤差始終保持最低,當(dāng)偏離因子為5時,本文算法控制定位誤差不超過0.5,三種對比算法的控制定位誤差均超過0.6。實(shí)驗(yàn)結(jié)果說明,不同偏離因子下本文算法具有較高的控制定位準(zhǔn)確性,可選擇較小的偏離因子,進(jìn)一步提升移動無線物聯(lián)網(wǎng)感知層控制定位精度。
為實(shí)現(xiàn)移動無線物聯(lián)網(wǎng)感知層傳感控制定位,本文在傳統(tǒng)DV-hop定位算法的基礎(chǔ)上,提出基于跳數(shù)修正的DV-hop定位算法,實(shí)現(xiàn)移動物聯(lián)網(wǎng)感知層傳感控制定位,提升移動無線物聯(lián)網(wǎng)感知層傳感控制定位的準(zhǔn)確性和穩(wěn)定性,為生產(chǎn)和生活提供更加精確和科學(xué)的數(shù)據(jù)支持。日后,還可以進(jìn)一步改善該研究算法,使其在各大領(lǐng)域中廣泛應(yīng)用普及,助我國邁入智慧時代的腳步更快更穩(wěn)。