張 拓,蔣 健,姚海峰,錢升港,毛科技,何文秀,趙永標(biāo)?
(1.浙江工業(yè)大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院,浙江 杭州 310023;2.浙江省信息安全標(biāo)準(zhǔn)化技術(shù)委員會,浙江 杭州 310000;3.紹興市越城區(qū)消防救援大隊,浙江 紹興 312000;4.浙江工業(yè)大學(xué)之江學(xué)院,浙江 紹興 312030)
無線傳感器網(wǎng)絡(luò)(Wireless Sensor Networks,WSN)中節(jié)點的部署通常隨機(jī)性較強且數(shù)量龐大,較難實現(xiàn)精準(zhǔn)的節(jié)點定位[1]。然而在現(xiàn)實應(yīng)用場景下,節(jié)點感知到的數(shù)據(jù)若缺失了位置信息,其利用價值會大幅降低。只有明確節(jié)點所在位置,才能將感知數(shù)據(jù)與位置信息關(guān)聯(lián),實現(xiàn)高效的感知[2]。因此,節(jié)點定位是無線傳感網(wǎng)絡(luò)的重要的支撐技術(shù)之一。由于節(jié)點所在位置的隨機(jī)性以及其位置信息的重要性,實現(xiàn)節(jié)點的精準(zhǔn)定位是無線傳感器網(wǎng)絡(luò)部署落地的關(guān)鍵。例如實際應(yīng)用中節(jié)點需要通過飛行設(shè)備直接拋散在特定區(qū)域,其位置分布隨機(jī)性較強且無法預(yù)先獲取[3-4]。又如當(dāng)節(jié)點部署的區(qū)域危險性較大,人類無法進(jìn)入,或是敵對區(qū)域[5-6]。此外,在許多應(yīng)用中,位置信息對傳感器的監(jiān)測工作非常重要,如火災(zāi)、地質(zhì)勘測等等。因此,在現(xiàn)實場景中獲取節(jié)點位置信息實現(xiàn)定位對WSN 具有重要意義[7-8]。
WSN 的定位方式可以分為有信標(biāo)節(jié)點的定位方式和無信標(biāo)節(jié)點的定位方式[9-10]。有信標(biāo)節(jié)點的定位方式,即在WSN 中必須存在有一些節(jié)點通過某種方式,已經(jīng)知道其具體坐標(biāo),例如利用全球定位系統(tǒng)。利用已知實際坐標(biāo)位置的節(jié)點,其他節(jié)點就可以根據(jù)這些已知信標(biāo)節(jié)點,進(jìn)而估算出其他節(jié)點的坐標(biāo)。無信標(biāo)節(jié)點的定位方式,所得到的坐標(biāo)系統(tǒng)可能僅為一相對于該WSN 之間的相對坐標(biāo)系的位置與方位,然而這樣的相對位置信息,足以吻合對象監(jiān)測、同步、乃至信號傳遞等無線傳感器的應(yīng)用項目上,進(jìn)一步,如果能夠在這樣的網(wǎng)絡(luò)環(huán)境中獲取到3組以上的真實坐標(biāo)系中的位置信息,可輕易將該網(wǎng)絡(luò)定位系統(tǒng)轉(zhuǎn)換為實體坐標(biāo)系統(tǒng)。
無信標(biāo)節(jié)點的定位方式,在近幾年逐漸受到重視,正如前所述,雖然由此算法所估測出的節(jié)點坐標(biāo)并非處于絕對坐標(biāo)系統(tǒng)之上,然而透過某些已知絕對位置的節(jié)點坐標(biāo),即可輕易將其轉(zhuǎn)換為絕對坐標(biāo)系統(tǒng),即可大幅度提升在應(yīng)用上的彈性。在以往所提出的有關(guān)于此類算法中,大多是以測量距離的方式,以進(jìn)行定位的動作。雖然量測距離的裝置成本較為低廉,然而由于量測裝置本身的先天性因素,距離量測一般具有較大的測量誤差,因此將影響到最后的定位結(jié)果。
因此,本文提出一種結(jié)合角度和距離測量的方法,在無需額外的信標(biāo)節(jié)點存在之下,利用分布式定位方式,以逐步逼近式的方式來實現(xiàn)節(jié)點定位,同時對于同步中的節(jié)點進(jìn)行比例式的調(diào)整,如此可縮小最后的定位誤差范圍,避免因少部分可能出現(xiàn)的較大測量誤差而影響到整體的定位結(jié)果。實驗結(jié)果表明,該方式在估算坐標(biāo)誤差上,可大幅優(yōu)于其他同類型之不使用信標(biāo)節(jié)點作為參考的定位方式。
近幾年以來陸續(xù)有人提出數(shù)種無信標(biāo)節(jié)點定位算法,例如文獻(xiàn)[11]提出的節(jié)點分布式定位算法,通過特定算法選取了5 個基準(zhǔn)節(jié)點作為信標(biāo)構(gòu)建了一個新的坐標(biāo)系,在新的坐標(biāo)系中定位其他未知節(jié)點,在較低成本情況下實現(xiàn)了大規(guī)模的節(jié)點定位。文獻(xiàn)[12]提出了一種虛擬信標(biāo)節(jié)點定位算法,在普通節(jié)點中選取5 個虛擬信標(biāo)構(gòu)建坐標(biāo)系,利用三邊測量法進(jìn)一步確定未知節(jié)點位置。文獻(xiàn)[13]在聚類基礎(chǔ)上提出一種無信標(biāo)節(jié)點定位算法,該方法通過創(chuàng)建聚類,將節(jié)點的能量、連接程度以及三角不等式的幾何極限定理這三個要素進(jìn)行融合,減小了無信標(biāo)定位中經(jīng)常出現(xiàn)的累計誤差,在能耗與定位精度上取得了較好的平衡。
文獻(xiàn)[14]的定位方式是將所有的節(jié)點都利用監(jiān)測其與周圍節(jié)點的位置關(guān)系,分別建立出屬于該節(jié)點的坐標(biāo)系統(tǒng)。之后再結(jié)合每一個節(jié)點之坐標(biāo)系統(tǒng),逐步將所有節(jié)點的坐標(biāo)系統(tǒng)合并,以建構(gòu)一個總體之坐標(biāo)系。還有很多相關(guān)的研究成果如文獻(xiàn)[15-18]等。總的來講,在以往所提出的有關(guān)于此類之算法中,大多是以測量距離的方式,以進(jìn)行定位的動作。雖然測量距離的裝置成本較為低廉,然而由于測量裝置本身的先天性因素,距離測量一般具有較大的誤差,因此影響到最后的定位精度。
本文提出一種結(jié)合角度以及距離量測的方式,在無信標(biāo)節(jié)點存在之環(huán)境下,對無線傳感器網(wǎng)絡(luò)進(jìn)行定位的算法。該定位方式可以將之區(qū)分為兩個階段:
第一個階段在所需定位的WSN 中,確定某一些節(jié)點作為信標(biāo)節(jié)點,并利用樹的生成方式,分別以這些信標(biāo)節(jié)點以作為樹的起點,各自向周邊延伸使節(jié)點之間以樹狀形態(tài)相互連結(jié)。
第二個階段樹的合并階段,將所生成的樹進(jìn)行合并,以生成一個統(tǒng)一的樹結(jié)構(gòu),在樹的合并過程中,以樹的高度為基礎(chǔ),當(dāng)節(jié)點監(jiān)測到其他非屬于和自身同一樹中的其他節(jié)點之時,則該兩個節(jié)點在取得溝通之后,會根據(jù)所設(shè)定的加權(quán)值,決定兩個節(jié)點之間的合并方向,直到所有的樹都合并。
在角度同步當(dāng)中,首先統(tǒng)一所有節(jié)點的坐標(biāo)軸方位,然后利用坐標(biāo)軸方位,以進(jìn)行距離同步作業(yè),最后決定節(jié)點之間的相對應(yīng)位置。由于同時利用方位與距離檢測,在節(jié)點定位時僅需檢測到一個已知坐標(biāo)節(jié)點,即可完成定位,有效增加可被定位節(jié)點比率,比聚類SPA 算法的定位精度要高。
在進(jìn)行算法同步作業(yè)前,首先將對節(jié)點進(jìn)行樹的形式建構(gòu),主要是增加同步的效率,使所有同步作業(yè)能夠確保同步的效率,避免有繞遠(yuǎn)路徑同步的情形產(chǎn)生。具體步驟如下:
2.2.1 信標(biāo)節(jié)點的選擇
待定位的WSN 系統(tǒng)中,為了要將節(jié)點之間以多個樹狀結(jié)構(gòu)進(jìn)行連結(jié),首先選定數(shù)個節(jié)點作為信標(biāo)節(jié)點,作為所生成樹的樹根節(jié)點。選擇方式為監(jiān)測網(wǎng)絡(luò)中所有的節(jié)點,若該節(jié)點相對于周圍的鄰居節(jié)點,擁有較高的連結(jié)度,即將該節(jié)點選定為信標(biāo)節(jié)點,如圖1 所示。
圖1 選定節(jié)點A 為信標(biāo)節(jié)點
2.2.2 樹的構(gòu)建
選定了信標(biāo)節(jié)點后,將以這些信標(biāo)節(jié)點作為樹的根節(jié)點,各自向外將其他的節(jié)點納入,連結(jié)形成一棵樹。樹的產(chǎn)生方式由每個信標(biāo)節(jié)點各自生成,當(dāng)一個節(jié)點被納入某一棵樹中并成為其中的一個節(jié)點時,即成為該樹的一部分,并以此節(jié)點繼續(xù)擴(kuò)展連結(jié)其他未被該樹合并的節(jié)點,此樹的擴(kuò)展動作一直持續(xù)到?jīng)]有其他的未被連結(jié)的節(jié)點存在于此樹任何節(jié)點的監(jiān)測范圍。由于每棵樹未必同時生成,因此最后所產(chǎn)生的每棵樹的大小、節(jié)點數(shù)量未必一致,每棵樹之間無需溝通協(xié)調(diào),可節(jié)省能耗。
2.2.3 樹的合并
若有一個節(jié)點中存在于多棵樹的通訊范圍以內(nèi),稱該節(jié)點為“邊界節(jié)點”,當(dāng)兩棵樹要進(jìn)行合并時,利用這些邊界節(jié)點進(jìn)行互相溝通。一棵樹的合并擴(kuò)展停止后,開始對其他樹進(jìn)行合并,每個邊界節(jié)點,都試圖去搜尋其他邊界節(jié)點,當(dāng)其搜尋到其他邊界節(jié)點且又不屬于同一樹時,這兩個節(jié)點會進(jìn)行同步的準(zhǔn)備動作,令此兩節(jié)點分別為A與B。此兩節(jié)點會根據(jù)其在該樹中的高度值,以及其被該樹合并至今所經(jīng)歷過的時間,演算出加權(quán)值,如式(1)所示:
式中:L(A)為節(jié)點A位于該樹中的高度值,tNow與tA分別為合并請求的發(fā)生時間以及節(jié)點A初始生成的時間,α為預(yù)先估測之系數(shù)。W(A)為A節(jié)點此時所計算出之權(quán)重,加權(quán)值可模擬該樹生成所經(jīng)過的時間。兩個節(jié)點之間會根據(jù)此加權(quán)值的大小以決定合并的方向,加權(quán)值較小的節(jié)點將會被加權(quán)值較大的節(jié)點合并后成為其子節(jié)點,同時也將脫離原先所隸屬之樹而加入較大加權(quán)值之樹中。
2.2.4 方位的同步
假設(shè)在WSN 開始部署時,每個節(jié)點預(yù)先載入一個坐標(biāo)軸系統(tǒng),這樣每個節(jié)點都擁有一個自識別的正北方向,該正北方向與實際之坐標(biāo)系統(tǒng)存在有一偏差夾角,稱之為“航位方向”。方位同步的目的,是采用漸進(jìn)式逐步調(diào)整的方式,逐漸逼近所有節(jié)點之間的坐標(biāo)軸方位,最終所有的節(jié)點都有一個統(tǒng)一的坐標(biāo)系統(tǒng)與方位。然后該網(wǎng)絡(luò)中任何節(jié)點取得了實際環(huán)境之坐標(biāo)軸方位,即可調(diào)整航位方向,輕易地將坐標(biāo)軸歸正為實際坐標(biāo)軸方位。
在方位同步的操作中,由每一個被推舉出來的信標(biāo)節(jié)點為起點,發(fā)起方位同步操作。若某一信標(biāo)節(jié)點A擁有一子節(jié)點B,則該信標(biāo)節(jié)點即可利用角度監(jiān)測的方式,檢測出子節(jié)點B其相對于該自身坐標(biāo)的角度。同時,子節(jié)點B也得同時測量其與父節(jié)點A之間的相對角度。
如圖2 所示,若存在有某一節(jié)點A為信標(biāo)節(jié)點,節(jié)點A有一子節(jié)點B。若節(jié)點A監(jiān)測到與節(jié)點B之相對方向角為θAB,而節(jié)點B監(jiān)測得節(jié)點A之相對方向角為θBA,則父節(jié)點A的調(diào)整方式為式(2):
圖2 節(jié)點A 與節(jié)點B 進(jìn)行位置同步
式中:NA為節(jié)點A在進(jìn)行方位調(diào)整前的方向角度,而-NA為同步時節(jié)點B調(diào)整的逆時針角度,θAB與θBA之范圍為0~2π,分別為節(jié)點A所監(jiān)測節(jié)點B相對于其所存在的方位角度以及節(jié)點B所監(jiān)測出之節(jié)點A相對它的方位角度,其分別有一個可能的角度量測誤差,分別為εAB與εBA,故經(jīng)由節(jié)點所實際測量出來的角度量分別為εABθAB以及εBAθBA。SAB為該父節(jié)點同步操作下的調(diào)整比例,其值之設(shè)定為:
為節(jié)點A所擁有的子節(jié)點數(shù)量。同理,子節(jié)點B的調(diào)整方式為式(3):
此處的SBA=1-SAB,其中,NB為方位調(diào)整前節(jié)點A的方向角度,而N′B-NB即為節(jié)點B在本次同步操作時所需調(diào)整的逆時針角度量,SBA為該子節(jié)點于此次同步操作下的調(diào)整比例,其值設(shè)定為:SBA=1/(k×mi),mi為父節(jié)點A所擁有的子節(jié)點數(shù)量,而k則為一常數(shù)值。
按這種方式,即可將節(jié)點A與B的方位角調(diào)整為圖3 所示,在節(jié)點A獲得定位結(jié)果之后,可繼續(xù)向其子節(jié)點(如節(jié)點B),進(jìn)行同步操作,方向同步的操作是連續(xù)的,即同步動作會一直持續(xù),直到定位完成為止。
圖3 節(jié)點A 與節(jié)點B 角同步
2.2.5 距離同步
在父節(jié)點A監(jiān)測其某一子節(jié)點B之相對之存在方位之后,則該兩個節(jié)點之間即可進(jìn)行距離同步的測量與定位工作。距離同步無需和角度同步測量同時進(jìn)行,即當(dāng)節(jié)點A得知節(jié)點B之相對存在角度后,可將該相對方位信息儲存于該節(jié)點內(nèi)的數(shù)據(jù)結(jié)構(gòu)中,然后可協(xié)助進(jìn)行距離同步時協(xié)助節(jié)點進(jìn)行定位。
距離調(diào)整比例設(shè)定:在距離的調(diào)整定位上,也采用同步的概念,漸進(jìn)式地調(diào)整所有節(jié)點的相對坐標(biāo)位置,假設(shè)有一父節(jié)點A以及其子節(jié)點B存在于某一樹狀結(jié)構(gòu)當(dāng)中,令A(yù):(xA,yA)、B:(xB,yB)為該兩節(jié)點在實際環(huán)境中坐標(biāo),而A′:(xA1,yA1)、B′:(xB1,yB1)則分別為該兩節(jié)點的坐標(biāo),則在父節(jié)點A當(dāng)中,定義:fA,B=vA,B(dA,B-rA,B),其中:vA,B為父節(jié)點A于先前處理方位同步時所測量出相對于節(jié)點B所形成的方向單位向量,為先前經(jīng)由角度測量暫存在節(jié)點A中,dA,B為節(jié)點A與節(jié)點B之間的距離,根據(jù)兩個節(jié)點個別的認(rèn)知坐標(biāo)所求出的距離值,故該值與實際該兩個節(jié)點之間存在測量誤差,即:dist(A,B)+ε,其中ε為節(jié)點A測量其與子節(jié)點B之間的測量距離誤差,rA,B為節(jié)點A所監(jiān)測到之兩點間之距離亦即為:dist(A,B)。
若節(jié)點A同時擁有數(shù)個子節(jié)點{B|B∈child nodes ofA},則父節(jié)點A利用上述方式,據(jù)以求出F=∑(fA,B)。此F值即為該父節(jié)點相對于其各子節(jié)點之測量位置與原先估測距離的差距,由于考慮到避免一次完全的移動可能造成節(jié)點位置調(diào)整過于劇烈,因此以漸進(jìn)式調(diào)整的方式,逐步調(diào)整節(jié)點的坐標(biāo)位置。調(diào)整系數(shù)值k,配合該節(jié)點所擁有的子節(jié)點數(shù)mA,且令x′、y′ 分別為節(jié)點A原來自己的X軸與Y軸坐標(biāo),即得:
則:fAB=(x″-x′,y″-y′)
則對于所有的子節(jié)點B:{B|B∈child nodes ofA},可以得到Total Force:F=∑(fA,B),根據(jù)此F向量值,可得出該次同步作業(yè)后節(jié)點A的坐標(biāo)位置:
其中角度?為F相對于WSN 由角度同步所形成坐標(biāo)系統(tǒng)的方向角,mA為節(jié)點A所連結(jié)的子節(jié)點個數(shù)。則最后更新后的節(jié)點A坐標(biāo)A′:(x?,y?)。而對于所有的子節(jié)點B,可以由其與父節(jié)點之同步過程當(dāng)中所得:
式中:ε為父節(jié)點A所監(jiān)測出節(jié)點A與節(jié)點B之間距離測量誤差值,此ε值可調(diào)整比例值k一并由父節(jié)點A傳給它。得到更新后的子節(jié)點坐標(biāo)B′:(x?,y?)。在某一子節(jié)點完成該節(jié)點坐標(biāo)位置更新后,該節(jié)點即可繼續(xù)向其子節(jié)點進(jìn)行坐標(biāo)更新。
本文實驗僅考慮在二維環(huán)境仿真,通過MATLAB實現(xiàn)仿真內(nèi)容。仿真實驗基于以下假設(shè):
①在每次仿真前,根據(jù)參數(shù)(節(jié)點密度、距離測量誤差、角度測量誤差、通信半徑)隨機(jī)生成一個網(wǎng)絡(luò)拓?fù)?,?jié)點的位置隨機(jī)生成,服從隨機(jī)分布;
②節(jié)點具備距離測量和角度測量能力,每次運行,所有的測試都隨機(jī)運行30 次取均值,以選取較為平均的結(jié)果;
③節(jié)點收發(fā)消息正常,但是存在由MAC 層引起的消息沖突和消息重傳,節(jié)點之間無障礙物,其通信模型采用自由空間電波傳播模型,即各節(jié)點具有同樣通信半徑R,且通信范呈理想圓形,在此有效距離內(nèi),兩個節(jié)點之間即可互相監(jiān)測和通信。使用均勻的隨機(jī)分布方式,所有的節(jié)點,隨機(jī)分布于某一固定區(qū)域內(nèi)。而每一個節(jié)點的有效監(jiān)測范圍為R,在此有效距離之內(nèi),兩個節(jié)點之間可互相監(jiān)測并通訊。
首先假設(shè)一個450×450 的二維環(huán)境當(dāng)中,以隨機(jī)的方式均勻放置250 個傳感器于其內(nèi),每一個節(jié)點的有效通信半徑均為50。圖4 為節(jié)點分布圖,角度測量誤差固定在正負(fù)五度的范圍之內(nèi),距離測量誤差則是以變動標(biāo)準(zhǔn)差的方式,其誤差范圍為0~8,分別皆以標(biāo)準(zhǔn)差的方式呈現(xiàn)。由于同步調(diào)整比例是以|Ft|/kmt的方式,動態(tài)調(diào)整父節(jié)點之同步比例,因此,在此實驗當(dāng)中,以不同的k值,有可能會分別找出其與測量誤差之間的關(guān)系,比較不同的k值和最后定位結(jié)果的關(guān)系。節(jié)點部署完畢,首先是進(jìn)入樹的形成階段。圖5 為樹形成階段完成后樹的分布仿真圖。
圖4 節(jié)點分布圖
圖5 節(jié)點樹形成階段分布圖
樹形成階段過后便真正開始節(jié)點定位,先局部后全局,直到所有節(jié)點都獲得一個全局坐標(biāo)系中的唯一坐標(biāo)值。首先分析不同的參數(shù)選擇對定位誤差率的影響,以便確定參數(shù)的選擇。
首先,比較不同的距離測量誤差與定位誤差的關(guān)系。假設(shè)角度測量誤差的標(biāo)準(zhǔn)差μ2固定在5%。距離測量誤差則以變動標(biāo)準(zhǔn)差的方式,其誤差范圍為0~10。從圖6 中可以得出:隨著距離測量誤差的增大,定位誤差率也逐漸增大。變化不算明顯,0~10 內(nèi)都可以滿足定位精度要求。
圖6 定位誤差率與測距誤差率的關(guān)聯(lián)
對本方法的定位誤差率進(jìn)行實驗,距離測量誤差、角度測量誤差以及算法計算誤差是造成定位誤差的主要因素。從圖7 可得:①算法定位誤差隨節(jié)點節(jié)點密度增大而增加;②本方法相較于聚類SPA[19]在定位精度上有一定的提升。聚類SPA 算法與本方法對比精度提升更明顯,坡度更陡。二者在節(jié)點密度為0.8 至1.0 之間曲線相交,之后本方法的定位誤差率小于聚類SPA 算法,差距也慢慢明顯。在節(jié)點密度較小的時候,聚類SPA 算法的定位誤差率要小于本方法,主要原因是聚類SPA 算法定位節(jié)點少,且大部分圍繞在中心樹周邊,產(chǎn)生的誤差較??;隨著節(jié)點密度的增加,本方法的定位誤差率大幅度小于聚類SPA。
圖7 不同節(jié)點密度時定位誤差率比較
定位誤差產(chǎn)生的主要原因包括距離測量和角度測量誤差、坐標(biāo)計算誤差、節(jié)點節(jié)點坐標(biāo)更新過程誤差。定位誤差率與節(jié)點密度呈正相關(guān),主要是由同步階段的誤差累加。若要減小此類誤差,通常需要減少更新迭代次數(shù),即減少坐標(biāo)節(jié)點數(shù)量計算的迭代次數(shù),這正是本方法比聚類SPA 算法更有優(yōu)勢的地方,從而有效地降低定位誤差率。
節(jié)點定位技術(shù)是無線傳感器網(wǎng)絡(luò)中的研究熱點之一,也是無線傳感器網(wǎng)絡(luò)實際應(yīng)用中重要的支撐技術(shù)之一。大多數(shù)的定位算法都是依賴少數(shù)信標(biāo)節(jié)點來確定其他多數(shù)一般節(jié)點的位置,而信標(biāo)節(jié)點的坐標(biāo)信息,基本上是由全球衛(wèi)星定位系統(tǒng)來提供。這種借助信標(biāo)節(jié)點來定位的方法至少存在以下問題:一是信標(biāo)節(jié)點不可能很多,支撐數(shù)量較大的節(jié)點部署情況下的定位較為困難;二是信標(biāo)節(jié)點由于人為或環(huán)境因素,常常出現(xiàn)位置漂移,造成其他節(jié)點難以精確定位;三是當(dāng)環(huán)境位于室內(nèi)或是具有某種干擾時,信標(biāo)節(jié)點本身運作就會發(fā)生困難,當(dāng)然其他節(jié)點也就難以定位。所以本文提出了一種角度和距離結(jié)合的無信標(biāo)節(jié)點WSN 定位算法。在無信標(biāo)結(jié)點存在的情況下,利用樹結(jié)構(gòu)分類及合并的思想,結(jié)合角度與距離的測量,進(jìn)一步更新節(jié)點方位與坐標(biāo),從而實現(xiàn)節(jié)點在坐標(biāo)系統(tǒng)中的精確定位。最后通過仿真實驗表明,在節(jié)點隨機(jī)分布并在一定的密度比例下,本文提出的算法在定位精度比聚類SPA 算法有明顯的提高。