竇子錚,姚 錚,2,陸明泉,2
(1. 清華大學(xué)電子工程系,北京 100084;2. 北京國家信息科學(xué)技術(shù)研究中心,北京 100084)
隨著大數(shù)據(jù)和物聯(lián)網(wǎng)技術(shù)的發(fā)展,環(huán)境監(jiān)測、物流管控、智慧城市等基于位置服務(wù)的應(yīng)用被大量催生[1,2],而以無線傳感器網(wǎng)絡(luò)(Wireless Sensor Network,WSN)和偽衛(wèi)星定位系統(tǒng)(Pseudolite Positioning System,PPS)為代表的無線電區(qū)域定位系統(tǒng)(Radio Local Positioning System,RLPS)也受到了廣泛的關(guān)注[3]. 傳統(tǒng)的RLPS 在初始布設(shè)時,需要先利用一些坐標(biāo)已知的點(diǎn)作為錨點(diǎn)在區(qū)域內(nèi)建立空間基準(zhǔn),然后通過節(jié)點(diǎn)之間的信號收發(fā),測量節(jié)點(diǎn)與錨點(diǎn)之間的空間關(guān)系,比如距離或方位等,進(jìn)而算出節(jié)點(diǎn)的位置坐標(biāo)[4~6]. 一般來說,錨點(diǎn)的位置可以利用全球衛(wèi)星導(dǎo)航系統(tǒng)(Global Navigation Satellite Systems,GNSS)獲得[7],或者直接通過人工測繪將錨點(diǎn)放置在坐標(biāo)已知的位置. 但是在很多應(yīng)用場景下,節(jié)點(diǎn)的位置并不容易提前獲得. 比如在地震災(zāi)區(qū)、火災(zāi)現(xiàn)場、外星探索等應(yīng)用場景下,無法通過GNSS信號或提前測繪獲取參考點(diǎn)的坐標(biāo)[8];或者對于大范圍的RLPS,手動測繪節(jié)點(diǎn)的位置費(fèi)時費(fèi)力,極大地限制了RLPS 的應(yīng)用范圍. 因此,為了實(shí)現(xiàn)RLPS 的靈活、快速部署,迫切需要研究利用節(jié)點(diǎn)之間測距完成節(jié)點(diǎn)坐標(biāo)估計的空間基準(zhǔn)自主建立技術(shù)[9,10].
在復(fù)雜的應(yīng)用場景下,節(jié)點(diǎn)間的無線通信可能會受到較強(qiáng)的干擾,甚至?xí)霈F(xiàn)節(jié)點(diǎn)損壞的情況,這就對RLPS 空間基準(zhǔn)自主建立技術(shù)的魯棒性和可擴(kuò)展性提出了更高的要求. 相對于需要測距結(jié)果集中在中心處理器上進(jìn)行運(yùn)算的集中式算法[11~14],僅利用相鄰節(jié)點(diǎn)的測距和定位信息并將計算任務(wù)分?jǐn)傇诿總€節(jié)點(diǎn)的分布式算法在魯棒性、計算復(fù)雜度和通信能耗等方面具有更大的優(yōu)勢[15],更能滿足大范圍RLPS 的需要. 但是由于分析局部行為與全局行為關(guān)系的復(fù)雜性[16],高精度的分布式算法設(shè)計是基準(zhǔn)自主建立技術(shù)面臨的重要挑戰(zhàn). 除此之外,為了支持RLPS 的快速部署以及多定位體系系統(tǒng)的融合,基準(zhǔn)自主建立技術(shù)還需要滿足低耗時、低復(fù)雜度的要求,并能夠在部分錨點(diǎn)存在的情況下,支持分布式的節(jié)點(diǎn)絕對坐標(biāo)獲取.
近年來,分布式的基準(zhǔn)自主建立技術(shù)開始受到更多的關(guān)注. DV-Hop(Distance Vector-Hop)算法[17]從幾個位置已知的錨點(diǎn)出發(fā),將位置信息發(fā)送給系統(tǒng)中的其他節(jié)點(diǎn),每一個節(jié)點(diǎn)用一個表來記錄與各個錨點(diǎn)的最短距離,之后再用三邊定位的方法估計出每個節(jié)點(diǎn)的位置. Hop-Refinement 算法[18]將定位分成了兩個階段,在第一個階段中,采用類似于DV-Hop 的算法獲得各個點(diǎn)位置的初值,第二個階段中,通過迭代來更新優(yōu)化各個點(diǎn)的坐標(biāo),直到收斂得到系統(tǒng)中節(jié)點(diǎn)最終的坐標(biāo). VNDV-Hop(Volume Node Distance Vector-Hop)算法[19]使用更精確的連跳數(shù)值對算法進(jìn)行了改進(jìn)以提升定位的精度. Ji 等人[20]將一個大的區(qū)域分成幾個小的區(qū)域,在每個小區(qū)域內(nèi)分別計算出各個節(jié)點(diǎn)的相對坐標(biāo),再利用區(qū)域之間重疊部分的點(diǎn)將各個小區(qū)域拼起來形成一個完整的區(qū)域坐標(biāo)圖. 以上4 種分布式方法并沒有分析每個節(jié)點(diǎn)的局部優(yōu)化行為與系統(tǒng)的全局優(yōu)化行為之間的關(guān)系,最終得到的定位結(jié)果并不是全局最優(yōu)的,定位誤差較大. 相比于上述關(guān)注局部最優(yōu)化的算法,也有一些分布式算法是以全局最優(yōu)為目標(biāo)求解節(jié)點(diǎn)坐標(biāo). 非參數(shù)的置信傳播(Nonparametric Belief Propagation,NBP)算法[21]從概率圖的角度入手,將聯(lián)合后驗(yàn)分布邊緣化的計算分解至節(jié)點(diǎn)間的置信度傳播來進(jìn)行,利用蒙特卡洛思想,將粒子化的坐標(biāo)概率分布在節(jié)點(diǎn)之間傳遞,最終能夠得到與集中式算法接近的定位精度. 但算法的計算復(fù)雜度高,定位精度受粒子數(shù)影響大,對節(jié)點(diǎn)的計算能力要求高. 交替坐標(biāo)下降法(Alternating Coordinate Descent,ACD)[22]以處處可微的sstress[23]為代價函數(shù),將全局優(yōu)化函數(shù)分解到各個節(jié)點(diǎn)的各個坐標(biāo)來進(jìn)行迭代優(yōu)化,每次更新特定點(diǎn)的單個坐標(biāo),收斂后即可得到全局最優(yōu)的高精度定位結(jié)果. 該算法已經(jīng)在麥克風(fēng)陣列定位[24]等領(lǐng)域得到了應(yīng)用. 但是該算法需要節(jié)點(diǎn)依次在坐標(biāo)更新后將結(jié)果廣播給相鄰節(jié)點(diǎn),并沒有發(fā)揮分布式算法在各節(jié)點(diǎn)的算力優(yōu)勢并且定位耗時長;同時算法未考慮部分節(jié)點(diǎn)坐標(biāo)已知的情況,無法直接得到各節(jié)點(diǎn)的絕對坐標(biāo).
針對上述分布式算法定位存在的精度低、定位耗時長以及絕對坐標(biāo)獲取復(fù)雜的問題,本文在ACD 算法的基礎(chǔ)上進(jìn)行了改進(jìn),提出了并行坐標(biāo)下降法(Paralleled Coordinate Descent,PCD). 所提算法在對并行優(yōu)化收斂性分析的基礎(chǔ)上,通過尋找節(jié)點(diǎn)拓?fù)渲械莫?dú)立集,提出了節(jié)點(diǎn)分組算法與并行優(yōu)化策略,提高了可同時更新坐標(biāo)的節(jié)點(diǎn)數(shù)量,縮短了定位耗時;同時通過深度融合距離測量信息和錨點(diǎn)位置信息,支持對錨點(diǎn)信息的分布式利用,可以得到各節(jié)點(diǎn)的絕對坐標(biāo)并進(jìn)一步提升了定位精度. 仿真和實(shí)測實(shí)驗(yàn)表明,本文提出的PCD 算法可以支持高效率、高精度的節(jié)點(diǎn)絕對坐標(biāo)獲取,能夠快速、分布式地完成RLPS 的空間基準(zhǔn)自主建立任務(wù).
考慮在RLPS 覆蓋的P維空間內(nèi)(P一般取2 或者3),有N個無線電節(jié)點(diǎn),第i個節(jié)點(diǎn)的坐標(biāo)為xi=(xi,1,xi,2,…,xi,P),則 系 統(tǒng) 中 節(jié) 點(diǎn) 的 坐 標(biāo) 集 合 為X=[x1,x2,…,xN] ∈RN×P. 第i個節(jié)點(diǎn)和第j個節(jié)點(diǎn)之間的歐氏距離dij可以表示為
但是在實(shí)際的測量中,噪聲、功率和遮擋等問題會使得觀測到的距離是帶噪聲的,并可能存在缺失的情況. 因此可以將測距結(jié)果表示為
其中,εij表示測距的噪聲;eij表示第i個節(jié)點(diǎn)與第j個節(jié)點(diǎn)間距離是否可以測得,1表示可以測得,0表示無法測得. 以s-stress準(zhǔn)則[23]定義代價函數(shù)f(X)為
RLPS 的空間基準(zhǔn)自主建立過程可以建模為求解式(4)所示的優(yōu)化問題:
ACD 算法將代價函數(shù)f(X)在每一個節(jié)點(diǎn)上進(jìn)行了分解,得到
其中,fi(X)表示第i個節(jié)點(diǎn)與其相鄰節(jié)點(diǎn)的坐標(biāo)估計誤差,即
在此基礎(chǔ)上,式(4)所示的全局優(yōu)化行為與單個節(jié)點(diǎn)的局部優(yōu)化行為存在著簡單的對應(yīng)關(guān)系,即
式(7)意味著當(dāng)每一個局部代價函數(shù)fi(X)對每一個坐標(biāo)xi都導(dǎo)數(shù)為零達(dá)到最小值時,全局代價函數(shù)f(X)也就達(dá)到了最小值. 因此只需依次在每個節(jié)點(diǎn)上對每個坐標(biāo)進(jìn)行獨(dú)立優(yōu)化更新求出當(dāng)前條件下的最小值,并將更新后的結(jié)果發(fā)送給相鄰節(jié)點(diǎn),通過迭代即可完成對整個優(yōu)化問題的求解.
根據(jù)第2.2 節(jié)對ACD 算法原理的介紹可以看出,該算法需要所有節(jié)點(diǎn)依次完成坐標(biāo)更新并廣播更新結(jié)果. 也就是說,當(dāng)一個節(jié)點(diǎn)進(jìn)行計算和廣播時,其他節(jié)點(diǎn)都不進(jìn)行計算. 這樣的串行處理對于節(jié)點(diǎn)的計算資源是非常浪費(fèi)的,尤其是在大范圍定位系統(tǒng)中,該算法需要經(jīng)過較長的時間來依次遍歷每一個節(jié)點(diǎn)來完成一次迭代,大大延長了系統(tǒng)完成基準(zhǔn)建立的時間.
除此之外,ACD 算法由于僅利用了節(jié)點(diǎn)間的測距結(jié)果,只能得到節(jié)點(diǎn)的相對坐標(biāo). 但是當(dāng)其中一些錨點(diǎn)的絕對坐標(biāo)已知,希望獲得所有節(jié)點(diǎn)的絕對坐標(biāo)時,普遍的方法是使用坐標(biāo)匹配技術(shù)[25],將算法得到的相對坐標(biāo)變換為絕對坐標(biāo). 但是這個過程并不能很好地利用錨點(diǎn)的位置信息,因?yàn)楫?dāng)相對坐標(biāo)求出之后,系統(tǒng)的拓?fù)浣Y(jié)構(gòu)已經(jīng)被決定了,之后的匹配工作只是將系統(tǒng)整體移動到某一固定的位置,但是定位精度并不會再次提升. 除此之外,坐標(biāo)匹配需要將錨點(diǎn)的信息匯聚到一個處理器上計算,計算出結(jié)果之后再分發(fā)給各個節(jié)點(diǎn). 這個過程非常明顯是屬于集中式的方法,而與我們希望建立的分布式系統(tǒng)存在直接的矛盾.
本文在提出改進(jìn)后的PCD 算法時,分析了算法并行更新的條件,提出了并行更新的策略,另外,針對可能存在的錨點(diǎn)位置信息,提出了適合于分布式系統(tǒng)的絕對坐標(biāo)獲取方式.
PCD 算法采用坐標(biāo)下降法來完成每個節(jié)點(diǎn)的坐標(biāo)迭代更新. 假設(shè)經(jīng)過了k次更新迭代,在第k+1 次迭代中,坐標(biāo)被更新,則有
多項(xiàng)式各階次的系數(shù)分別是
其中,Ni是第i個節(jié)點(diǎn)相鄰的節(jié)點(diǎn)個數(shù).
當(dāng)fi(X(k+1))取得最小值時導(dǎo)數(shù)應(yīng)該為0,于是就得到了一個三次方程,相應(yīng)的,最多只有3 個解. 由于其他量的數(shù)值在之前的更新或者已知條件中已經(jīng)給出,可以直接解出所有的解. 然后將各個解帶入
fi(X()
k+1)中找到使其最小的解,即為本次對坐標(biāo)xi,p的更新增量,則可以得到經(jīng)過k+1 次更新的坐標(biāo)為
在更新完坐標(biāo)xi,p之后,繼續(xù)更新第i個節(jié)點(diǎn)其余的坐標(biāo)以及其他節(jié)點(diǎn)的坐標(biāo). 所有節(jié)點(diǎn)均完成更新,視為完成一次迭代. 經(jīng)過多次迭代收斂后,即可得到式(4)所示優(yōu)化問題的解
通過上述流程可以看出,在使用坐標(biāo)下降法求解節(jié)點(diǎn)坐標(biāo)的過程中,所需要的只是各個節(jié)點(diǎn)與其相鄰節(jié)點(diǎn)測距和坐標(biāo)更新結(jié)果,因此可以僅僅通過相鄰節(jié)點(diǎn)的單跳通信來完成,能夠適應(yīng)于分布式的系統(tǒng)布設(shè).
如2.2 節(jié)中所述,在ACD 算法中,節(jié)點(diǎn)需要串行地依次完成坐標(biāo)的更新與廣播,因?yàn)樵撍惴ǖ乃悸肥菍⒋鷥r函數(shù)f(X)分解到各個節(jié)點(diǎn)上計算,即轉(zhuǎn)變?yōu)閒(x1,x2,…,xN),對每一個節(jié)點(diǎn)的坐標(biāo)進(jìn)行迭代. 假設(shè)第k次迭代后,函數(shù)結(jié)果為在串行的計算過程中,第k+1 次迭代開始,首先計算得到,使得
在發(fā)送新的坐標(biāo)后,計算,使得
以此類推,完成第k+1 次迭代之后,得到了代價函數(shù)的結(jié)果f(X()
k+1),同時保證如下結(jié)果:
因此串行的計算過程能夠保證算法在各個節(jié)點(diǎn)有足夠的鄰接節(jié)點(diǎn)的情況下收斂到一個穩(wěn)定的結(jié)果. 在并行更新策略的設(shè)計中,這樣迭代收斂的一致性也是需要得到保證的.
由式(9)可知,當(dāng)eij=0,即第i個節(jié)點(diǎn)和第j個不相鄰時,更新坐標(biāo)xi的過程不會受到坐標(biāo)xj的影響,因此當(dāng)兩個節(jié)點(diǎn)同時更新坐標(biāo)時,計算結(jié)果將與它們依次更新的結(jié)果相同,從而能夠保證式(13)所示的迭代收斂的一致性. 由此便得到了坐標(biāo)下降法并行更新的條件:當(dāng)一組節(jié)點(diǎn)互不相鄰時,可以同時使用坐標(biāo)下降法更新它們的坐標(biāo),而不會影響優(yōu)化函數(shù)整體的收斂結(jié)果.
值得注意的是,在并行更新條件的約束下,越稀疏的節(jié)點(diǎn)連接,能夠支持越多的節(jié)點(diǎn)同時完成坐標(biāo)更新結(jié)算而不影響算法的最終收斂,也就能夠比串行的ACD算法節(jié)約更多的通信和計算時間.
根據(jù)第3.2節(jié)提出的并行更新條件,為了使多個節(jié)點(diǎn)能夠并行完成坐標(biāo)下降更新,需要根據(jù)節(jié)點(diǎn)的相鄰情況將節(jié)點(diǎn)集合劃分成互不相連的子集. 這一問題類似于組合優(yōu)化問題中的最大獨(dú)立集問題,是一個NP 難問題[26]. 因此本文結(jié)合系統(tǒng)的分布式設(shè)計和計算復(fù)雜度,提出了一種啟發(fā)式的節(jié)點(diǎn)分組算法.
節(jié)點(diǎn)的分組利用節(jié)點(diǎn)之間的通信來完成. 各個節(jié)點(diǎn)按照編號依次進(jìn)行如下兩步操作:
(1)選擇除了已收到的相鄰節(jié)點(diǎn)組號之外的最小正整數(shù)作為自己的組號;
(2)將自己的組號廣播發(fā)送給所有相鄰節(jié)點(diǎn).
經(jīng)過一次遍歷操作,所有節(jié)點(diǎn)即可獲得自己的組號,完成分組. 該算法操作簡單,易于分布式實(shí)現(xiàn). 在各節(jié)點(diǎn)得到自己組號之后,相同組號的節(jié)點(diǎn)即可在收到僅次于自己組號的節(jié)點(diǎn)更新結(jié)果后,同時開始計算和廣播,完成同組節(jié)點(diǎn)的并行坐標(biāo)更新.
當(dāng)RLPS 中存在部分絕對坐標(biāo)已知的錨點(diǎn)時,需要為式(4)所示的優(yōu)化問題添加相應(yīng)的約束條件. 假設(shè)錨點(diǎn)的集合為A,對于錨點(diǎn)i∈A,已知其絕對坐標(biāo)為ai=(ai,1,ai,2,…,ai,P),則各節(jié)點(diǎn)獲取絕對坐標(biāo)的空間基準(zhǔn)建立可以建模為
在添加的約束條件下,優(yōu)化問題解得的系統(tǒng)拓?fù)浣Y(jié)構(gòu)與無約束優(yōu)化情況的解是基本相同的,但是由于錨點(diǎn)已經(jīng)約束固定在了絕對坐標(biāo)的位置,其余各節(jié)點(diǎn)也就收斂到了各自的絕對坐標(biāo)位置上.
當(dāng)使用坐標(biāo)下降法求解式(14)所示的優(yōu)化問題時,因?yàn)槊恳徊降牡际菍⑾噜徆?jié)點(diǎn)的當(dāng)前更新值作為已知約束來計算,所以只需要將各個錨點(diǎn)的坐標(biāo)作為其相鄰節(jié)點(diǎn)更新值即可,即將式(8)改為
在此基礎(chǔ)上,通過坐標(biāo)下降完成節(jié)點(diǎn)坐標(biāo)的更新,經(jīng)過迭代即可完成對式(14)所示問題的求解,以分布式的方式獲得各個節(jié)點(diǎn)的絕對坐標(biāo).
PCD 算法的流程如圖1 所示. 在系統(tǒng)節(jié)點(diǎn)布設(shè)完成后,先經(jīng)過節(jié)點(diǎn)之間的通信和測距,得到測距結(jié)果和節(jié)點(diǎn)拓?fù)?,并利用本文提出的分組算法完成節(jié)點(diǎn)分組,接著使用算法1 所示的坐標(biāo)更新算法,輸入測距結(jié)果、節(jié)點(diǎn)分組和錨點(diǎn)坐標(biāo)等信息,計算得到各個節(jié)點(diǎn)的絕對坐標(biāo),完成空間基準(zhǔn)的自主建立.
圖1 PCD算法流程示意圖
算法1 坐標(biāo)更新算法輸入:距離測量結(jié)果、節(jié)點(diǎn)分組結(jié)果、錨點(diǎn)坐標(biāo)信息輸出:節(jié)點(diǎn)的絕對坐標(biāo)算法步驟:1. 將錨點(diǎn)坐標(biāo)信息賦值給對應(yīng)節(jié)點(diǎn);3. DO 4. 按照節(jié)點(diǎn)分組結(jié)果遍歷各組互不相連的點(diǎn)集;5. 基于式(15)使用坐標(biāo)下降法同時完成組內(nèi)所有節(jié)點(diǎn)的坐標(biāo)更新;6. 將更新后的坐標(biāo)廣播發(fā)送給相鄰節(jié)點(diǎn);7. 完成一次迭代;8. UNTIL 結(jié)果收斂或達(dá)到最大迭代次數(shù)
為了驗(yàn)證本文提出的PCD 算法的性能,使用MATLAB 平臺對三維空間中的定位情況進(jìn)行了仿真.隨機(jī)布設(shè)N個節(jié)點(diǎn),其中有A個坐標(biāo)已知的錨點(diǎn). 假設(shè)每個節(jié)點(diǎn)只能在半徑為R的圓形范圍內(nèi)進(jìn)行通信,距離大于R則認(rèn)為兩個節(jié)點(diǎn)不是鄰接節(jié)點(diǎn),無法相互測距.得到的測距結(jié)果帶有服從標(biāo)準(zhǔn)差為σ的高斯噪聲. 定位誤差為
為了展現(xiàn)PCD 算法的定位精度,在10×10×10 的立方體區(qū)域內(nèi),進(jìn)行了100 次蒙特卡洛實(shí)驗(yàn). 每次實(shí)驗(yàn)中,隨機(jī)布設(shè)N=100 個節(jié)點(diǎn),并選擇R=15 作為最大測量半徑. 圖2 繪制了ACD 算法和PCD 算法在取10 個和30 個錨點(diǎn)時,在不同噪聲標(biāo)準(zhǔn)差σ下,100 次實(shí)驗(yàn)的平均定位誤差,并與集中式的SDR(Semidefinite Programming Relaxation)算法[12]進(jìn)行了對比. 從圖2 可以看出,在錨點(diǎn)數(shù)目相同時,本文提出的分布式的PCD 算法具有比集中式的SDR 算法更優(yōu)的定位精度;而與ACD 算法相比,PCD 算法中錨點(diǎn)的位置信息得到了更好的利用,能夠利用自身攜帶的位置信息減小整個系統(tǒng)的定位誤差,因此隨著錨點(diǎn)數(shù)目的增多,定位精度得到了顯著的提升.
圖2 不同算法定位誤差對比圖
為了比較大范圍RLPS 中算法的運(yùn)行時間,假設(shè)系統(tǒng)覆蓋的區(qū)域隨節(jié)點(diǎn)數(shù)目的增大而增大,并保持一定的節(jié)點(diǎn)布設(shè)密度. 該設(shè)置在實(shí)際的大規(guī)模RLPS布設(shè)中也是非常合理的. 假設(shè)節(jié)點(diǎn)完成一次更新計算與廣播的耗時為1,圖3 繪制了在選取布設(shè)密度為1,最大測量半徑R=7 的條件下,ACD 算法和PCD 算法在不同節(jié)點(diǎn)數(shù)下的總耗時的變化. 可以看出,兩種算法的總耗時存在明顯的差異,并且差異隨著節(jié)點(diǎn)數(shù)目的增多,耗時差異愈發(fā)顯著. 當(dāng)節(jié)點(diǎn)總數(shù)N=1600 時,ACD 算法的耗時是PCD 算法的25 倍左右. 可以預(yù)見,隨著節(jié)點(diǎn)數(shù)目的增加,PCD算法對時間的節(jié)約效果將會更加明顯.
圖3 兩種算法定位耗時對比圖
為了證明論文所提技術(shù)在實(shí)際使用場景下的有效性,在樓道場景和泳池場景中,分別對PCD 算法在二維和三維空間中的表現(xiàn)進(jìn)行了實(shí)測實(shí)驗(yàn). 本實(shí)驗(yàn)使用Decawave TREK1000完成節(jié)點(diǎn)之間的相互測量,這是一個基于超寬帶技術(shù)[27]使用雙向傳播時間進(jìn)行測距的開發(fā)板. 超寬帶技術(shù)具有較高的測距精度和較好的抗多徑效果,也是現(xiàn)在常用的無線通信測距技術(shù).
樓道場景的實(shí)驗(yàn)如圖4所示,在有拐角的樓道中布設(shè)Decawave TREK1000 開發(fā)板作為RLPS 節(jié)點(diǎn),并利用無線通信完成測距. 在此場景下,受樓道墻體遮擋的影響,直線連接經(jīng)過墻體的兩節(jié)點(diǎn)無法相互測距. 假設(shè)樓道兩段的節(jié)點(diǎn)是位置已知的錨點(diǎn),利用得到的距離信息,分別使用PCD 算法、ACD 算法和SDR 算法進(jìn)行分析、定位.PCD 算法的定位結(jié)果與實(shí)際布設(shè)位置的對比如圖5 所示. 可以看出二維定位的效果非常接近于節(jié)點(diǎn)的實(shí)際位置.
圖4 樓道布設(shè)示意圖
圖5 樓道定位效果示意圖
圖6為3種算法各節(jié)點(diǎn)定位誤差的累積分布圖. 可以看出,在樓道場景下,PCD 算法對各節(jié)點(diǎn)的定位誤差不超過0.3 m,其精度優(yōu)于ACD 算法和SDR 算法. 經(jīng)過計算,PCD 算法的平均定位誤差為0.14 m,明顯優(yōu)于ACD算法的0.22 m和SDR算法的0.58 m.
圖6 樓道節(jié)點(diǎn)定位誤差累積分布圖
泳池場景的實(shí)驗(yàn)如圖7所示,在一個空曠泳池的周圍和中心布設(shè)開發(fā)板作為RLPS節(jié)點(diǎn)完成測距. 其中各節(jié)點(diǎn)坐標(biāo)真值利用全站儀測量得到,用以錨點(diǎn)賦值和對比定位誤差. 假設(shè)在泳池四周和中心選取部分節(jié)點(diǎn)作為位置已知的錨點(diǎn),利用得到的距離信息,分別使用PCD 算法、ACD 算法和SDR 算法進(jìn)行分析和定位.PCD算法的定位結(jié)果與實(shí)際布設(shè)位置的對比如圖8 所示.可以看出,三維定位的效果非常接近于節(jié)點(diǎn)的實(shí)際位置.
圖7 泳池布設(shè)示意圖
圖8 泳池定位效果示意圖
圖9為3種算法各節(jié)點(diǎn)定位誤差的累積分布圖. 可以看出,在泳池場景下,PCD 算法對各節(jié)點(diǎn)的定位誤差不超過0.6 m,其精度優(yōu)于ACD 算法和SDR 算法. 經(jīng)過計算,PCD 算法的平均定位誤差為0.29 m,明顯優(yōu)于ACD算法的0.34 m和SDR算法的0.63 m.
圖9 泳池節(jié)點(diǎn)定位誤差累積分布圖
通過上述兩組實(shí)測實(shí)驗(yàn)可以看出,不論是在二維還是三維的實(shí)際定位應(yīng)用中,本文提出的PCD 算法都能夠得到高精度的節(jié)點(diǎn)絕對坐標(biāo)估計結(jié)果,從而支持RLPS的空間基準(zhǔn)自主建立.
為了解決RLPS 的分布式空間基準(zhǔn)自主建立問題,本文在ACD 算法的基礎(chǔ)上提出了PCD 算法. 在對收斂約束下節(jié)點(diǎn)并行更新條件分析的基礎(chǔ)上,提出了啟發(fā)式的節(jié)點(diǎn)拓?fù)洫?dú)立集分組算法,設(shè)計了節(jié)點(diǎn)坐標(biāo)的并行更新策略,使得算法能夠有效縮短系統(tǒng)定位耗時. 同時,為了在錨點(diǎn)的輔助下獲得各節(jié)點(diǎn)的絕對坐標(biāo),該算法將錨點(diǎn)信息與測距信息進(jìn)行了深度融合,完善了優(yōu)化模型,實(shí)現(xiàn)了分布式的絕對坐標(biāo)獲取. 仿真和實(shí)測實(shí)驗(yàn)表明,與傳統(tǒng)ACD算法相比,分布式的PCD算法可以得到高精度的節(jié)點(diǎn)絕對坐標(biāo)估計,完成空間基準(zhǔn)自主建立任務(wù),并且大幅縮短RLPS 的空間基準(zhǔn)自主建立任務(wù)的定位耗時.