由于傳感器網絡通常要在無人干預的情況下大規模地隨機部署在環境惡劣、人類無法或不宜接近的區域,如戰場、火山口附近,故節點受制造成本、 體積、重量等條件的限制,單個節點所能承載的能量是非常有限的,且不易得到補充,所以在人工部署時確定節點位置是不現實的。如果在每個節點上裝備GPS定位系統,盡管目前已經開發出了單芯片的GPS解決方案,并可集成到MICAl6J系列節點上,但因其造價昂貴,與傳感器網絡節點廉價且需大量部署的特點相矛盾。因此,針對無線傳感器網絡的特點,人們必須設計出獨特的測距算法,而RSSI測距就是其中之一。
一、RSSI測距原理
無線信號傳輸普遍采用的理論模型是漸變模型(Shadowing Model)。
[p(d)]dbm=[p(d0)]dbm-10nlog10( )+xdbm (1)
式子中,p(d)表示距離發射機為d時,接收端接收到的信號強度,即RSSI值;p(d0)表示距離發射機為d0時接收端接收到的信號功率;d0為參考距離;n是路徑損耗(Pass Loss)指數,通常由實際測量得到,障礙物越多,n值越大,從而接收到的平均能量下降速度會隨著距離的增加而變得越來越快:X是一個以dbm為單位,平均值為0的高斯隨機變量,反映了當距離一定時,接收到的能量的變化。
實際應用中,一般采用簡化的漸變模型:
[p(d)]dbm=[p(d0)]dbm-10nlog10( ) (2)
為便于表達和計算,通常取d0為1 m,于是可得:
[p(d)]dbm=A-10nlog10d (3)
把[p(d)]dbm寫成RSSI的形式得到:
RSSI=A-10nlog10d (4)
其中,A為無線收發節點相距1m時,接收節點接收到的無線信號強度RSSI值。式(4)就是RSSI測距的經典模型,給出了RSSI和d的函數關系,所以已知接收機接收到的RSSI值就可以算出它和發射機之間的距離。A和n都是經驗值,和具體使用的硬件節點以及無線信號傳播的環境密切相關,因此在不同的實際環境下A和n因參數不同,其測距模型也不同。
二、RSSI測距定位算法
基于RSSI測距的定位算法流程如圖1所示:節點定位采用極大似然估汁算法。已知n個信標節點的坐標分別為(x1,y1),(x2,y2),…,(xn,yn),未知節點坐標為(x,y),算法的具體步驟如下:
第一,信標節點周期性向未知節點發送包含自身ID和自身位置信息的數據包;
第二,未知節點在收到同一ID信標節點發來的數據包后,從中提取出收到陔幀數據的信號強度值RSSI。當收到某個ID信標節點發來的數據包超過一定閾值(實驗設置為100)后,對這100個RSSI值求平均值,得到最終的該ID信標節點的RSSI值,然后使用RSSI測距公式RSSI=A-10nlg(d)導出距離d,這樣就得到了未知節點和某ID信標節點的距離。對所有信標節點都采用這種方法進行處理,得到n個距離d1,d2,…dn。最后未知節點記錄下所有信標節點的坐標和對應的距離數據;
第三,建立信標節點與未知節點距離方程組
(作者單位:同濟大學軟件學院)