【正文】
ocation_t location。這里用了1個時鐘,發(fā)送廣播信息,用于生成DVHOP算法所需要的跳數(shù)信息。它是在TinyOS環(huán)境中,利用nesC語言實現(xiàn)的。整個系統(tǒng)的運行是基于事件驅(qū)動的,沒有事件發(fā)生時,微處理器進入睡眠狀態(tài),從而可以達到節(jié)能的目的。調(diào)度器具有兩層結(jié)構(gòu),第一層維護著令和事件,它主要是在硬件中斷發(fā)生時對組件的狀態(tài)進行處理。TinyOS最初使用匯編語言和C語言編的。一個組件(假定組件名為ComA)一般會提供一些接口(interfaces)。Mica2 節(jié)點是第三代 mote 模塊,用 于 低 功 耗 無 線 傳 感 器 網(wǎng) 絡 。由于無需測量節(jié)點間的絕對距離或方位,因而降低了對節(jié)點硬件的要求,使得節(jié)點成本更適合于大規(guī)模傳感器網(wǎng)絡?;诰嚯x的定位機制由于實際測量節(jié)點間的距離或角度,通常定位精度相對較高,但對節(jié)點的硬件也提出了很高的要求,定位過程中消耗的能量相對多。為了在靜態(tài)的環(huán)境中實現(xiàn)三角形內(nèi)點測試,提出了近似的三角形內(nèi)點測試法:假如在節(jié)點M的所有鄰居節(jié)點中,相對于節(jié)點M沒有同時遠離或靠近三個信標節(jié)點,那么節(jié)點M在內(nèi);否則,節(jié)點在外。利用三邊測量法或極大似然估計法計算自身位置未知節(jié)點利用第二階段中記錄的到各個信標節(jié)點的跳段距離,利用三邊測量法或極大似然估計法計算自身坐標。接收節(jié)點記錄具有到每個信標節(jié)點的最小跳數(shù),忽略來自同一個信標節(jié)點的較大跳數(shù)的分組。在質(zhì)心算法中,信標節(jié)點周期性地向鄰近節(jié)點廣播信標分組,信標分組中包含信標節(jié)點的標識號和位置信息。 距離無關(guān)的定位算法雖然基于距離的定位能夠?qū)崿F(xiàn)精確定位,但往往對無線傳感器節(jié)點的硬件要求高。2) 利用信號傳播的理論模型在一些系統(tǒng)中,主要考慮建筑物等障礙物對信號傳播的影響,建立了信號衰減和傳播距離間的關(guān)系式。這種方法需要特殊硬件測量接收信號的方向夾角。圖5 使用聲波進行測距基于TOA的定位精度高,但要求節(jié)點間保持精確的時間同步,因此對傳感器節(jié)點的硬件和功耗提出了較高的要求。具體過程通常分為三個階段:第一個階段是測距階段,未知節(jié)點首先測量到鄰居節(jié)點的距離或角度,然后進一步計算到鄰近信標節(jié)點的距離或方位,在計算到鄰近信標節(jié)點的距離時,可以計算未知節(jié)點到信標節(jié)點的直線距離,也可以用二者之間的跳段距離作為直線距離的近似;第二個階段是定位階段,未知節(jié)點在計算出到達三個或三個以上信標節(jié)點的距離或角度后,利用三邊測量法、三角測量法或極大似然估計法計算未知節(jié)點的坐標;第三個階段是修正階段,對求得的節(jié)點的坐標進行求精,提高定位精度,減少誤差。 定位算法分類在傳感器網(wǎng)絡中,定位算法通常有以下幾種分類:基于距離的定位算法和距離無關(guān)的定位算法根據(jù)定位過程中是否測量實際節(jié)點間的距離,把定位算法分為:基于距離的(rangebased)定位算法和距離無關(guān)的(rangefree)定位算法[3]。最后利用三邊測量法,由點,確定D點坐標。信標節(jié)點是未知節(jié)點定位的參考點。本論文在第二章對當前的定位技術(shù)進行了詳細的闡述。節(jié)點定位是確定在系統(tǒng)中的每個節(jié)點的地理位置的問題。這些節(jié)點被部署在一個特定的環(huán)境中后,它們通常通過自組織的形式,實現(xiàn)無線通信。雖然使用GPS來定位,比較常見成熟,但無線傳感網(wǎng)對成本、和電源有嚴格的限制,有些場合不適合用來定位。定位算法的具體實現(xiàn)可以為將來實際定位系統(tǒng)提供一些借鑒。 計算節(jié)點位置的基本方法 三角計算法 三角測量法(triangulation)原理如圖2所示,已知A,B,C三個節(jié)點的坐標圖2 三角測量法圖示分別為,節(jié)點D相對于節(jié)點A,B,C的角度分別為:∠ADB,∠ADC,∠BDC,假設節(jié)點D的坐標為。已知A,B,C三個節(jié)點的坐標分別為,以及它們到未知節(jié)點D的距離分別為,假設節(jié)點D的坐標為。基于信標節(jié)點的定位算法和無信標節(jié)點的定位算法根據(jù)定位過程中是否使用信標節(jié)點,把定位算法分為:基于信標節(jié)點的(beaconbased)定位算法和無信標節(jié)點的(beaconfree)定位算法。假設兩個節(jié)點間時間同步,發(fā)送節(jié)點的揚聲器模塊在發(fā)送偽噪聲序列信號的同時,無線電模塊通過無線電同步消息通知接收節(jié)點偽噪聲序列信號發(fā)送的時間,接收節(jié)點的麥克風模塊在檢測到偽噪聲序列信號后,根據(jù)聲波信號的傳播時間和速度計算發(fā)送節(jié)點和接收節(jié)點之間的距離。如果參考點和的方向沒有校正,需要在計算時補償方向偏差[5]。為了提高定位精度,在實際定位時,可以對多次測得的信號強度取平均值。根據(jù)三個基站實際測得的信號強度,實時計算出節(jié)點與三個基站間的距離,然后利用三邊測量法計算節(jié)點位置。距離無關(guān)的定位算法主要有質(zhì)心算法、DVHOP算法APIT算法等,下面分別介紹它們。在距離向量定位機制中,未知節(jié)點首先計算與信標節(jié)點的最小跳數(shù),然后估算平均每跳的距離,利用最小跳數(shù)乘以平均每跳距離,得到未知節(jié)點與信標節(jié)點之間的估計距離,再利用三邊測量法或極大似然估計法計算未知節(jié)點的坐標。然后,信標節(jié)點將計算的每跳平均距離用帶有生存期字段的分組廣播至網(wǎng)絡中,未知節(jié)點僅記錄接收到的第一個每跳平均距離,并轉(zhuǎn)發(fā)給鄰居節(jié)點。圖11 APIT定位原理圖示2) APIT定位的理論基礎APIT算法的理論基礎是最佳三角形內(nèi)點測試法 PIT(perfect pointintriangulation test)。相對于計算簡單的類似的質(zhì)心定位算法,APIT算法精度高,對信標節(jié)點的分布要求低。AOA定位不僅能確定節(jié)點的坐標,還能提供節(jié)點的方位信息。在無線信號傳播模式不規(guī)則和傳感器節(jié)點隨機部署的情況下,APIT算法的定位精度高,性能穩(wěn)定,但APIT對網(wǎng)絡的連通性提出了較高的要求。了解nesC語言的規(guī)范和組成,有助于了解TinyOS的內(nèi)部實現(xiàn)機制和應用程序的編寫方式,從而可加快傳感器網(wǎng)絡的應用開發(fā)。在nesC語言的定義中,存在兩種不同功能的組件:不同組件接口之間的關(guān)系是專門通過稱為配件(configuration)的組件文件來描述的;而組件提供的接口中的函數(shù)功能專門在稱為模塊(Module)的組件文件中描述其實現(xiàn)過程。Tiny0S的核心程序非常小(僅400Bytes左右),非常適合傳感器節(jié)點存儲資源有限的限制,能夠讓操作系統(tǒng)有效地運行在無線傳感器網(wǎng)絡上并執(zhí)行相應的管理工作[9]。微線程主要是針對節(jié)點并發(fā)操作比較頻繁,線程比較短,而傳統(tǒng)的進程/線程調(diào)度又無法滿足的前提下提出的(使用傳統(tǒng)調(diào)度算法在無效的進程切換過程中將會產(chǎn)生大量的能量消耗)。TinyOs的這種特征,大大增強了應用程序的模塊化,使得開發(fā)人員很容易將不同的組件結(jié)合在一起形成完整的應用程序。錨節(jié)點一個很重要的任務是計算自己的平均每跳距離,這依賴于接收到的其它錨節(jié)點跳數(shù)信息;為了確保產(chǎn)生合理的平均每跳距離值,還需要利用建立的當前環(huán)境下的RSSI模型,對平均每跳距離值進行約束,然后,再發(fā)送到網(wǎng)絡中。 Pair_uint16_t stdv。 mand uint16_t activity()。 interface ReceiveMsg as BuffersReportMsg。最后,未知節(jié)點開始進行定位計算,也就是根據(jù)完整的DVHOP算法開始計算。 // How many packets were received in the past second mand uint16_t activity()。 interface Leds。includes Routing。仿真軟件提供了系統(tǒng)設計的另外一種方法,特別是對難以通過在實際環(huán)境中構(gòu)建出來的系統(tǒng),它的作用就顯得尤為的重要。使用TinyViz,能比較方便地跟蹤TinyOS應用的執(zhí)行。從控制臺獲取8個未知節(jié)點的測試坐標和隨機產(chǎn)生坐標分別為如下表格18。分別從這兩方面對相應算法做了較仔細的分析。隨著傳感器網(wǎng)絡研究的深入開展,其特點和優(yōu)勢日益顯著,應用也越來越廣泛。同時這也是對自己的一次調(diào)戰(zhàn),做從未接觸過的東西。 // The interface are as parameterised by the active message id interface SendMsg[uint8_t id]。 sendDone = 。 。includes Neighborhood。 interface ReceiveMsg as Receive。}24 。 Control = 。includes Omnisound。 。 。 // How many packets were received in the past second mand uint16_t activity()。感謝寢室同學們分享他們的畢設經(jīng)歷,讓我找到面對問題的方法。傳感器網(wǎng)絡節(jié)點的能量有限,存儲能力和計算能力有限,這些約束要求定位算法必須是低復雜性的。根據(jù)測量節(jié)點間距離或方位時所采用的方法,基于距離的定位分為基于TOA的定位、基于TDOA的定位、基于AOA的定位、基于RSSI等,通常定位精度相對較高,但對節(jié)點的硬件也提出了很高的要求,定位過程中消耗的能量相對多。隨機產(chǎn)生的未知節(jié)點坐標,單位米x286088110129151198y87132189354012195計算出的節(jié)點坐標,單位米x27111150195y17742193表18 8個未知節(jié)點的真實值與理論值。模擬多個傳感器節(jié)點(mote)的執(zhí)行,并能夠根據(jù)一定的模型設置網(wǎng)絡屬性,如分布情況和無線通信環(huán)境參數(shù)等。TOSSIM是為WSN應用特定開發(fā)的模擬軟件,它充分考慮到了WSN的節(jié)點節(jié)能、節(jié)點處理能力等特點。includes Config。 interface Timer as