




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
本科畢業設計論文第一章緒論1.1選題目的與意義從21世紀初開始,物聯網(InternetofThings)的概念和技術在全球得到高度重視。物聯網是互聯網的應用拓展,它通過智能感知、識別技術與普適計算等通信感知技術,把傳感器、控制器、機器、人和物等通過新的方式聯系在一起,形成物與物、人與物聯系,實現信息化、遠程管理控制和智能化網絡,也因此被稱為繼計算機、互聯網之后世界信息產業發展的第三次浪潮[1]。國內外各大企業和高效開始將目光由傳統的通信行業轉向了物聯網行業[2],而與物聯網密切關聯,基于大量具有通信功能的微型傳感器構成的無線傳感器網絡也成為了國內外關注的熱點。WSN是由部署在監測區域內大量的廉價微型傳感器節點組成,通過無線通信方式形成的一個多跳的自組織的網絡系統,其目的是協作地感知、采集和處理網絡覆蓋區域被感知對象的信息,并發送給觀察者。隨著微電子和微系統(Micro-Electro-MechanismSystem,MEMS)、片上系統(SystemonChip,SOC)、無線通信以及低功耗嵌入式技術的快速發展,無線傳感器網絡(WSN)在軍事應用、目標追蹤、環境監測、醫療保健、空間探索等領域都得到廣泛的應用,為信息感知帶來了一場新變革,使得物與物、人與物、人與人之間,甚至人身的交互感知更方便[2]。傳感器節點是無線傳感器網絡(WSN)的基本單位,節點的位置信息是WSN應用的基礎,不能確定位置信息的節點所得到的監測數據是沒有任何意義的,因而節點定位技術在WSN中具有舉足輕重的地位。由美國國防部領導下的衛星導航聯合計劃局(JPO)主導研究的全球定位系統(GlobalPositioningSystem,GPS)是目前應用最廣泛和成功的定位技術。GPS在許多嵌入式系統中被用于定位服務,如手機、導航系統或筆記本電腦等。雖然GPS能提供高精度的位置信息,但對于大多數的WSN應用并不適用。首先,現有的GPS部件非常昂貴。其次,GPS耗能高,將有可能對WSN生存期產生額外的約束。另外,WSN通常是靜止的,定位協議可能只需要在網絡初始化周期執行。因此,GPS可能不能實現有效的成本效益[3]。GPS主要應用于船舶、汽車、飛機等運動物體進行定位導航,只適合于在戶外使用。在室內場合,由于建筑布局復雜、場景特定、再加上人員活動等不確定隨機因素,存在著多徑效應和非視距傳輸的影響,使得室內信道環境復雜,微波信號衰減厲害、測量誤差大,GPS并不適用。而基于IEEE802.11協議的無線局域網(WirelessLocalAreaNetwork,WLAN)的定位技術已經取得了巨大的研究成果,尤其是近年來基于多種簡單定位機制和算法,技術相對簡單,低成本、低功耗、自組織的WSN定位技術得到了科研人員的重視和大量研究,具有很好的應用前景。圖1-1列舉了WSN的主要應用[3]。無線傳感器的網絡應無線傳感器的網絡應用軍事智能微粒螺旋偵察狙擊手偵測系統環境洪水、火山、森林火災等監控自然棲息地監控醫療人工視網膜病人監護應急響應人體檢查藥品管理家庭用水監控火災監控安防智能家居工業定期檢修結構健康偵測圖1-1WSN的應用類別和舉例現代社會人們對生產生活中的安防和智能化的需求越來越高,精確的定位技術在許多室內場景的實用性和必要性已經日趨顯著[4]。在一些公共場所,例如購物超市、展覽廳、辦公室、圖書館、地下停車場、監獄等,人們都需要精確的定位信息[2]。精確的室內定位信息能夠實現高效的空間利用,為人們的生活帶來了諸多便利。例如在醫院進行醫護人員與患者監控管理,藥品和醫療設備管理。如果有病人發生意外,定位系統就可以確定患者位置并通知最近的醫護人員,進行緊急處理;在圖書館布置帶有溫度和煙霧濃度的感知系統,如果發生火災系統能夠及時向監控中心報告火災的具體位置;在超市,可以通過對消費情況的監控來對商品優化擺放,減少消費者尋找時間以及減輕擁堵情況[4]等等。因此,室內定位技術應用前景廣闊,具有極大的研究價值和市場需求。1.2研究背景1.2.1國內外研究狀況無線傳感器網絡的研究最初起源于美國軍方,其研究的項目包括CEC、REMBASS、TRSS、SensorIT、WINS、SmartDust、SeaWeb、μAMPS、NEST等[5]。美國國防部遠景計劃研究局已經投資幾千萬美元,幫助無線傳感器網絡技術的研發。美國國家自然基金委員會(NSF)也開設了大量與其相關的項目,如:2003年制定了無線傳感器網絡研究計劃,每年撥款3400萬美元支持相關研究項目,并在加州大學洛杉磯分校成立了傳感器網絡研究中心;2005年對網絡技術和系統的研究計劃中,主要研究下一代高可靠、安全的可擴展的網絡、可編程的無線及傳感器系統的網絡特性,資助金額達4000萬美元。此外,美國交通部、能源部、美國國家航空航天局也相繼啟動了相關的研究項目。美國所有著名的院校幾乎都從事傳感器網絡相關技術的研究,如加州大學洛杉磯分校、康奈爾大學、麻省理工學院和加州伯克利分校等都先后開展了傳感器網絡方面的研究工作。加拿大、英國、德國、芬蘭、日本和意大利等國家的研究機構都先后開始了無線傳感器網絡的研究。歐盟第6個框架計劃將“信息社會技術”作為優先發展的領域之一,其中多處涉及對無線傳感器網絡的研究。日本總務省在2004年3月成立了“泛在傳感器網絡”調查研究會。韓國信息通信部制定了信息科技839戰略,其中“3”是指IT產業的3大基礎設施,即寬帶融合網絡、泛在傳感器網絡、下一代互聯網協議。企業界中歐盟的Philips、Siemens、Ericsson、ZMD、France、Chipcon等公司,日本的NEC、OKI、Skyleynetworks、世康、歐姆龍等公司都開展了無線傳感器網絡的研究。我國對無線傳感器網絡的研究起步較晚[6],首次正式啟動出現于1999年中國科學院《知識創新工程點領域方向研究》的“信息與自動化領域研究報告”中,無線傳感器網絡是該領域的五大重點項目之一。2001年,中國科學院依托上海微系統與信息技術研究所成立微系統研究與發展中心,旨在引領中國科學院無線傳感器網絡的相關工作。在一份我國未來20年預見技術的調查報告中,信息領域157項技術課題中有7項與傳感器網絡直接相關[6]。2006年初發布的《國家中長期科學與技術發展規劃綱要》為信息技術定義了三個前沿方向,其中兩個與無線傳感器網絡的研究直接相關,即智能感知技術和自組織網絡技術。我國2010年遠景規劃和“十五”計劃中,就已經將無線傳感器網絡列為重點發展產業之一[2,7]。2012年教育部也將無線傳感器網絡納入科研重點項目[7]。近年來,國家自然科學基金委員會對無線傳感器網絡相關的研究課題給予了大力資助,大量關于無線傳感器網絡的國家自然科學基金研究項目赫然在列。國家863高技術發展也設立了專項基金,以資助無線傳感器網絡技術的研究工作。從20世紀90年代起,國內外許多高校和研究機構開始了室內定位技術的研究,也出現了一些成熟的室內定位系統。例如ActiveBadges[11]、ActiveBats、Cricket[12]、RADAR[13]等。ActiveBadges與ActiveBats定位系統都是由AT&T研發的。ActiveBadges定位系統采用紅外通信技術來定位,但紅外信號存在直線視距和傳輸距離較短等缺點,另外系統需要布置多個基站,這提高了系統的復雜度和維護成本,降低了系統的可擴展性。而ActiveBats定位系統使用超聲波(timeofflight,TOF)技術來實現定位,相對于ActiveBadges定位系統其精度更高,可擴展性較好,且易于部署,但成本較高。由MIT提出的Cricket系統采用了超聲波技術并根據TDOA(TimeDifferenceOfArrival)原理來實現定位,其定位精度高,但需要昂貴的硬件設備來支持,并且系統功耗大。RADAR系統是由Microsoft公司開發的,它是基于IEEE802.11WLAN的室內無線射頻定位系統,采用經驗測試和信號傳播模型相結合的定位系統。RADAR系統易于安裝,基站少,但定位系統必須處于無線局域網中,這樣,在網絡的規模和電源功能方面將是一大限制[2]。1.2.2室內定位技術ScaleUWBScaleUWBProprietarymicrowavesolutionsAOATDOARTOFRF&IRRF&UltrasonichybridmethodsWLANBluetoothDECTZigbeeHomeRFpositioningRSSTDOATOAAOAGPSDGPSWirelessAssistedGPSAutomation/controletcguiding,trackingrouting,etc.GSMCDMA/3GMobilecellularnetworkCell-IDTOATDOAE-OTDRSSWidesignal-strengthfingerprintResolution0.1meter10meter1meterRural&RemoteOutdoorLocally&UrbanIndoors紅外線室內定位技術定位的原理是,紅外線標識發射調制的易被熒光燈或者房間內的燈光干擾,在精確定位上有局限性。(二)是一種新興的短距離、低速率無線網絡技術,它介于無線射頻識別技術和無線藍ZigBee最顯著的技術特點是它的低功耗和低成本。(五)以及人的定位跟蹤與導航,且能提供十分精確的定位精度。(六)支持IPv6,可以很方便地和已有網絡互聯,并且支持的架構廣泛,功能強大,可以滿足復雜應用的需求[19]。2.1無線傳感器網絡結構2.1.1無線傳感器網絡體系結構一個典型的無線傳感器網絡結構如圖2-1所示,其中包括傳感器節點、匯聚節點、互聯網或通信衛星和管理節點等[5,9]。匯聚節點匯聚節點衛星、Internet、移動通信網絡任務管理節點監測區域傳感器節點圖2-1典型的無線傳感器網絡結構在圖2-1中,大量傳感器節點隨機部署在被監測區域中,通過自組織方式構成網絡。傳感器節點通過多跳中繼方式將所探測到的數據傳到匯聚節點,然后經衛星、互聯網或是移動通信網絡等途徑到達最終用戶所在的任務管理節點。2.1.2無線傳感器節點結構傳感器節點是無線傳感器網絡的基本單位,典型的傳感器節點由傳感單元、處理單元、無線通信單元和電源單元組成,結構如圖2-2所示[2,4,5]。傳感器傳感器ADC存儲器處理器網絡收發器MAC傳感單元處理單元無線通信單元電源單元圖2-2無線傳感器網絡節點結構各個單元的基本功能:傳感單元:由傳感器和模數轉換器組成,用于感知、獲取監測區域內的信息;處理單元:由嵌入式系統構成,包括處理器、存儲器等。負責控制和協調節點各部分工作,存儲和處理自身采集的數據以及其他節點發來的數據;無線通信單元:由支持相應無線通信協議的無線數據收發器組成,負責傳感器節點之間的通信,交換控制信息和收發采集數據;電源單元:通常采用微型電池,負責為傳感器節點提供正常所必需的能源。本論文研究中采用的是移動電源。2.1.3無線傳感器網絡的協議棧隨著人們對傳感器網絡研究的不斷深入,研究人員提出了多個傳感器節點上的協議棧[9,14]。圖2-3所示的是研究人員早期提出的一個協議棧,該協議棧包括物理層、數據鏈路層、網絡層、傳輸層和應用層。另外,該協議棧還包括能量管理平臺、移動管理平臺和任務管理平臺。這些管理平臺使得傳感器節點能夠按照能源高效的方式協同工作,在節點移動的無線傳感器網絡中轉發數據,并支持多任務和資源共享。應用層應用層傳輸層網絡層數據鏈路層物理層能量管理平臺移動管理平臺任務管理平臺圖2-3無線傳感器網絡協議棧各層的功能如下[9]:物理層:實現信道選擇、無線信號監測、信號發送與接收等功能,設計目標是以盡可能少的能量損耗獲得較的鏈路容量;數據鏈路層:負責數據成幀、幀檢測、媒體訪問和差錯控制。該層又可以細分為媒體訪問控制(mediumaccesscontrol,MAC)子層和邏輯鏈路控制(logicallinkcontrol,LLC)子層,其中媒體訪問控制子層規定了不同的用戶如何共享可用的信道資源,邏輯鏈路控制子層負責向網絡提供統一的服務接口;網絡層:主要負責路由生成與路由選擇,主要功能包括分組路由、網絡互聯、擁塞控制等。路由協議的功能是在傳感器節點和匯聚節點之間建立路由,可靠地傳遞數據;傳輸層:負責數據流的傳輸控制,現階段對傳輸控制的研究主要集中于錯誤恢復機制,但是目前還沒有專門適合無線傳感器網絡的協議提出;應用層:主要負責獲取數據并進行初步處理,包括一系列基于檢測任務的應用軟件。2.2無線傳感器網絡的定位機制在無線傳感器網絡中確定傳感器節點自身位置是確定事件發生位置的前提,只有在傳感器節點自身位置得到正確的估計后,才能確定事件發生的具體位置[4]。無線傳感器網絡中節點分為兩種類型,已知自身位置的信標節點和待定位的未知節點。節點定位就是根據網絡中少數的信標節點,按照某種方法來推算出未知節點的位置。信標節點的位置可以通過攜帶GPS等定位裝備來確定或者是人工布設在已知位置。信標節點在很多的書中又被稱為參考節點,一般在網絡中數量很少,下文統一稱為參考節點。一般來說,無線傳感器網絡節點定位算法應具備以下特點[6]:自組織能力不依靠外部的基礎設施;魯棒性,即能容忍一定的物理測量誤差及單個節點的實效,能快速適應網絡的拓撲變化;資源節省要求較少的通信開銷、計算處理和存儲能力。目前對無線傳感器網絡節點定位技術的研究主要集中在以下兩個方面[6]:一是算法精度,設計具有足夠精度的定位算法,需要多大的精度依賴于不同的應用需求;二是誤差分析,分析無線傳感器網絡定位的誤差特征。無線傳感器網絡的節點定位算法大致分為兩大類:基于測距(range-based)的定位機制和與距離無關(range-free)的定位機制。前者需要測量節點間距離或方位角度信息。而后者不需要。2.2.1基于測距的定位技術基于測距的定位技術要求待定位節點與參考節點間具有直接或者間接測量相互距離或者角度的能力。一般來說,基于測距的定位技術實現主要有以下步驟[5,6]:測距/測角:測量估計兩節點間的距離或者角度信息;定位估計:采用定位方法來獲取節點的相對位置或絕對位置;位置校正:利用與相鄰節點間的連通信息及其位置信息來校正待定位節點的位置。記錄記錄測距度量值測距度量值轉化為d或者方位定位算法顯示系統無線信號位置坐標(x,y)測距度量值:TOAAOATDOARSSI圖2-4基于測距的定位原理框圖基于測距的定位原理如圖2-4所示[4],先由未知節點硬件接收外部參考節點發射的無線信號并記錄測距度量值,如TOA(timeofarrival)、TDOA(timeofdifferentofarrival)、AOA(angleofarrival)、RSSI(receivedsignalstrengthindicator)等,接著將測距度量值轉化為未知節點到參考節點的距離d或者方位,然后在采用相關算法來計算未知節點的位置,并最后顯示出來。常用的基于測距的定位算法有三邊測量法、三角測量法、極大似然估計法等,將在2.3節中詳述。(1)TOA測量法一般是根據已知信號的傳輸速率及信號在兩節點間的傳播時間來計算兩節點間的距離,然后利用已知的定位算法計算出節點的位置。基于TOA的定位能夠獲得很高的精確度,但一般需要昂貴的硬件,并且接受器耗能高。(2)TDOA測量法與TOA測量法都是基于時間的測距技術,兩者很相似。但TDOA是通過記錄發射信號在兩節點間的到達時間差信息,并根據已知的信號傳播速率來計算兩個節點間的距離差,再通過已有的定位算法計算出未知節點的位置。Cricket系統就是基于TDOA原理的[4]。(3)基于AOA的定位是接收點通過天線陣列或多個接收機來估算發射節點信號到達方向(DOA),從而計算出接收節點和發射節點之間的相對方位或者角度信息。未知節點的位置可以通過一組測量裝置之間的方向線的交點來確定,其定位原理如圖2-5所示。NNAB圖2-5基于AOA的定位原理基于AOA的定位原理簡單,但在室內環境,容易受到噪聲、多徑效應和非視距等問題的影響,定位精度較差。并且角度測量需要較高的硬件設備支持。(4)基于RSSI的測距技術是已知發射節點的發射信號強度,接收節點根據接收到的信號強度來計算出信號的傳播損耗,然后利用理論或經驗的信號傳播模型將傳播損耗轉化為距離信息。因傳感器節點本身具有無線通信能力,故其是一種低功耗、廉價的測距技術,在RADAR系統中就是使用了該技術。射頻信號在傳播的過程中會隨著傳播的距離增加而衰減,在自由空間中,RSS(ReceivedSignalStrength)值與發射距離的平方成反比關系。(2-1)上式就是經典的Friis傳輸方程,其中,分別為發射功率和接收功率;,分別為發射天線和接收天線的天線增益;為信號載波波長;為信號傳輸距離。在基于RSSI的定位中關鍵是室內無線信號傳播衰減模型的建立[5]。該算法的實現簡單,便于計算,但它的定位準確性在很大程度上依賴于建立準確的無線信號傳播衰減模型。公式(2-1)是在理想情況下的傳播衰減模型,在室內環境,要得到更為確切的傳播衰減模型需要通過物理模型和實驗方法獲得,本文將在第三章詳細敘述。2.2.2與距離無關的定位技術基于測距的定位技術一般定位精度較高,但是對于無線傳感器網絡節點的硬件要求也比較高。針對無線傳感器網絡的特點,研究者們提出了免于測距的定位技術,這類定位方法中僅僅需要得到待定位節點與相鄰節點間的連通信息,接著利用各種優化方法估計待定位節點位置[6]。簡而言之,與距離無關的定位技術是通過對節點間的距離進行估計或者確定包含未知節點的可能區域,來確定未知節點的位置。因為與距離無關的定位技術不需要測量節點間的距離或者方位,硬件要求低,成本低,使得該技術更適合于大規模無線傳感器網絡,并且定位性能受環境因素的影響小。但是相應的定位誤差會有所增加,定位精度也有所降低。常用的定位算法主要有DV-HOP算法、加權質心算法和APIT算法等,詳述見于2.3節。2.3常用的室內節點定位算法2.3.1三邊測量法三邊測量法是已知若干個參考節點的位置坐標和他們到未知節點的距離,然后聯立方程組求出位置及節點的位置坐標[2,4,16,25,29]。由于測距有一定的誤差,并且聯立方程組也可能存在無解的情況,這時一般采用最小二乘法來確定未知節點的位置。AABCD圖2-6三邊測量法如圖2-6所示,三個坐標已知的參考節點、、,一個未知節點的坐標待定,其中參考節點到未知節點的距離(可通過RSSI法來測量)分別為、、,聯立建立參考節點與位置節點的距離方程組:(2-2)用前兩個方程分別減第三個方程,將方程組線性化為:(2-3)其中:用最小二乘法求解方程組(2-3),便可以得到待求節點的位置估計值。根據矩陣理論,是方程組(2-3)的最小二乘解的充要條件是,為方程組(2-4)的解.對于實矩陣,則將(2-4)轉化為(2-5)只要所有參考節點不共線,則的兩個列向量線性無關,,由于,因此2階矩陣可逆。從而得出未知節點的位置坐標估計為(2-6)2.3.2三角測量法與三邊測量法的距離測定不同,三角測量法主要是利用參考節點與未知節點之間的角度信息來進行定位[2,4,16,28]。三角測量法的示意圖如2-7所示。AABCDO1O3O2圖2-7三角測量法已知節點、、,設未知節點的坐標為,則未知節點相對于、、的角度分別為:,和。根據三角形原理,已知過、、三點可以確定唯一圓,設其圓心為,其半徑為,可知,求解圓形的半徑可以得到以下方程組:(2-7)求解公式(2-7)能夠得到圓心的具體坐標及其半徑。同理可以求得另外兩個圓的圓心坐標和半徑。當確定了半徑,和后,可以將三角法轉換為三邊法,通過公式(2-2)來計算未知節點的位置坐標。2.3.3極大似然估計算法極大似然估計算法基本思想是通過未知節點和多個位置坐標已知的參考節點的距離關系來建立方程組,并通過最小二乘法來解方程從而得到未知節點的位置坐標估計[4]。已知個參考節點的坐標分別為,…,他們到未知節點的距離分別為,…,則有:(2-8)用方程組中前個方程減去第個方程,將方程組線性化為:(2-9)其中:用最小二乘法求解方程組(2-9)得:(2-10)2.3.4DV-Hop定位算法DV-Hop(DistanceVector-Hop)算法的基本思想是將未知節點到參考節點之間的距離用網絡中節點的平均每跳距離和兩節點之間的跳數乘積來表示,然后再使用三邊測量法或者極大似然估計算法來獲取未知節點的位置信息[2,4]。其定位過程大致為:首先,網絡中所有的參考節點使用距離矢量交換協議,將其位置信息和跳數信息廣播到整個網絡中,使網絡中的所有的未知節點獲取與參考節點的跳數;其次,參考節點根據正確接收的跳數信息,計算未知節點與該參考節點的平均每跳距離,并將其廣播到整個網絡中,未知節點利用接收到的跳數信息和平均每跳距離值計算與參考節點的距離。最后,未知節點利用三邊測量法或者極大似然估計算法來實現定位。2.3.5APIT定位算法APIT的全稱是ApproximatePointinTriangle,三角形內點近似估計算法。APIT定位中,已知多個參考節點的坐標位置,其中隨機每三個參考節點形成一個三角區域,根據節點在區域內部還是外部就可以縮小節點位置的可能范圍[2,16]。AAECDBO圖2-8APIT定位算法如圖2-8所示,A,B,C,D,E表示的是APIT定位算法中的參考節點,陰影部分表示的是未知節點的所在范圍。通過不斷地計算,這個區域可能越來越小,最后將這個所確定的區域的重心O作為未知節點的位置坐標。APIT定位算法在定位中對硬件的要求低,耗能小。但它會受到參考節點數目的影響很大,參考節點一旦數量增多,對于定位計算將會產生相當大的負擔。另外,對于參考節點的距離,分布方式等要求較高,并存在不可避免的誤差。2.3.6加權質心算法如同2.3.5所介紹的APIT定位算法中最后利用三角形的重心作為未知節點的估計值。質心定位算法也是圖形定位中非常常見的一種算法[2,16]。質心定位算法是由美國南加州大學NirupamaBulusu等學者提出來的。該算法的核心思想是假設未知節點以所有在其通信范圍內的參考節點的幾何質心作為估計位置坐標。具體過程:參考節點每隔一段時間向鄰近節點廣播數據包,其中包含了自身的信號標志以及具體位置等信息。當未知節點在一段時間后收到來自不同的參考節點信號的數量達到了預定的標準后,則默認此未知節點的位置在于與那些參考節點所構成的多邊形的質心上。未知節點的位置估算公式為:(2-11)(2-12)質心定位算法較為簡單,計算量小。但如若需要較高的定位精度,則需要部署大量的參考節點。在日常生活中一般精度較低,誤差大。2.4定位系統和算法的性能評價標準定位系統和算法的性能評價標準[2,4,16]大致有定位精度、網絡規模、節點密度、功耗、容錯性與自適應性和代價等。定位精度定位精度是無線傳感器網絡定位技術最重要的性能評價標準。定位精度一般指的是定位誤差,在與距離無關的定位算法中常用誤差值和節點通信半徑的比例來表示;在基于測距的定位算法中常用定位坐標與實際距離來比較。網絡規模對定位系統的性能評價應考慮可實現定位的范圍,不同的定位算法所能定位的范圍和規模也不同。在實現定位的過程中要因地制宜,選擇適合的定位算法。節點密度在無線傳感器網絡中,網絡成本與節點密度是成正比關系的。在節點密度增加導致網絡成本上升的同時還會增加網絡節點間的通信沖突。節點密度還會影響一些定位算法的定位精度,如極大似然估計算法的定位精度會隨著節點密度的增大而提高。功耗功耗是對無線傳感器網絡設計與實現影響最大的因素之一。在無線傳感器網絡中,節點的微型電源能量是有限的,為了延長整個網絡的正常工作時間,就要盡量降低定位算法的計算復雜性,減少節點之間的通信開銷、存儲開銷。容錯性與自適應性在理想的實驗環境中,大部分的定位算法誤差較小。但在復雜多變的實際應用環境中,無線信號的傳播受到多徑效應和非視距傳輸問題的影響,導致定位誤差容易發生突發性增大。因此,定位系統和算法必須具備良好的容錯性和自適應性。代價定位系統和定位算法需要很多代價,包括時間代價(一個系統的安裝時間、配置時間和定位時間)、成本代價(實現定位系統的基礎設施和節點設備的成本)和硬件代價(一個定位系統或者算法所需要的基礎設施和網絡節點的數量。硬件尺寸等)。第三章基于RSSI的室內定位模型分析及算法設計3.1RSSI測距原理基于RSSI的測距原理在第二章已經進行了簡要的介紹。無線射頻信號強度在春播的過程中會隨著距離的增加而衰減,在接收端接收到的信號強度(RSS值)與傳播距離存在著一定的數學關系。在基于RSSI定位中,我們首先需要確定RSS值與距離d之間的準確的數學關系,即建立RSSI測距模型。RSSI測距模型,就是在已知發射功率的情況下,通過測量接收點接收的信號強度,使用信號傳播模型將信號傳播損耗轉換為距離的數學模型。3.1.1無線信號傳播損耗模型無線信號傳播損耗模型是通過不同的算法模擬、仿真電磁波的傳播過程,并計算其在傳播過程中產生的衰減,即路徑損耗值,然后依據信源發射功率預測無線電磁波在區域內的場強分布情況。下面介紹兩種經驗傳播模型,自由空間傳播路徑損耗模型(free-spacepropagationmodeling)和對數-常態陰影模型(Log-normalshadowmodel)。(1)自由空間傳播路徑損耗模型在上一章中,對于自由空間傳播模型做過簡單的介紹。在自由空間中,無任何干擾的情況下,即理想介質,無電磁能量吸收,也不存在多徑衰落[2,17,18]。自由空間的傳播損耗模型是指天線輻射的電磁波在傳播過程中隨著傳播距離的增大能量的自然擴散而引起的損耗,它反映了球面波的擴散損耗[2,17]。設信號源發射功率為,均勻輻射,則以發射源為中心,為半徑的球面上單位面積接收到的功率為[2,18]:(3-1)設發射天線增益為,則:(3-2)設接收天線增益為,則接收天線有效面積為:(3-3)接收天線所截獲的功率為:(3-4)其中,為自由空間波長。將(2-3)代入(2-4)得:(3-5)令:(3-6)其中,定義為自由空間的傳播損耗,即:(3-7)以分貝表示自由空間傳播路徑損耗模型為:(3-8)在實際短距離的應用中,由于信號傳播并非自由空間,上式可改寫為:(3-9)其中,為距信號源距離,單位;為信號發射頻率,單位;為信號衰減因子,范圍一般為2~4。(2)對數-常態陰影模型[2,18]在室內環境,由于存在多徑、非視距、繞射等問題的影響,公式(3-9)并不適用,一般常用對數-常態陰影模型。此模型中的一些參數可以根據不同環境來測定:(3-10)其中,為經過距離后的路徑損耗,單位;為經過單位距離后的路徑損耗,單位;為近地參考點,取決于實驗值,一般取;為信號衰減因子,與傳播環境有關,隨環境中障礙物的增多而增大,范圍一般為2~4;是均值為0的高斯隨機變量,其標準差范圍為4~10。對于不同參數、、的路徑損耗模型,有著不同的接收和發送距離。3.1.2RSSI測距模型[18]在基于RSSI的定位中,基于以上理論,接收端接收到的信號強度(RSS)為:(3-11)式中,為接收信號強度指示RSSI();(),分別為發射信號功率和發射天線增益。IEEE802.15.4標準給出簡化的信號衰減模型為:(3-12)在室內定位中,考慮到環境、成本、定位精度要求等因素,所使用的RSSI測距信號衰減模型由公式(2-12)進一步簡化為:(3-13)令:(3-14)上式中,為信號衰減因子;為射頻參數;為非反射、多徑效應等其他環境造成的信號衰減量;為定位節點與參考節點之間距離為1m時RSS值。根據公式(2-13)和(2-14)可知,RSSI值與距離d的關系取決于和。在一個特定的室內環境,和是兩個確定的參數值,并且需要實驗來測定。3.2RSSI測距實驗根據以上理論,我們得知在建立RSSI測距模型時需要通過一定的方法來測定影響RSSI值與傳播距離d之間數學關系的關鍵參數值和。主要方法是,在設定的室內環境里,通過布置一定梯度距離d的參考節點和未知節點來獲得RSSI值,得到多組RSSI值與距離d的對應關系,再利用最小二乘法擬合出RSSI值與距離d的的數學模型的參數值,確定RSSI與d的數學關系式。根據公式(2-13)與(2-14)知:(3-15)上式中有四個未知變量,參數和是需要此實驗測定優化的;距離d則只需要設定合適的值;而對于RSSI,由于一些環境固有的特性或者隨機干擾的影響,同一參考節點和未知節點,相同距離,在不同的時間RSSI顯示值有所波動,所以利用多次測量取平均值來進行優化處理。(3-16)實驗所選的監測環境區域是星天苑E座單號區501宿舍,這里人員活動少,環境簡單,對于二維定位系統(所有節點放在同一平面)來說相對容易。宿舍長約4.8m,寬約4.3m,兩側各有兩張床位(上面床鋪下面課桌)和上床的樓梯,樓梯在床位中間。每張床位長約2.05m,寬約1.0m,樓梯長約1.0m,寬約0.5m。模擬圖如下所示:22413走廊樓梯樓梯陽臺圖3-1星天苑E座單號區501宿舍根據定義,為未知節點與參考節點之間距離為1m時RSSI值。在測量時,考慮到芯片朝向不同會導致測量結果有所變化,在測量時采用全向測量,設置未知節點與參考節點之間芯片所處角度分別為0°,45°,90°,135°和180°。22413走廊樓梯樓梯陽臺圖3-2測量值時的節點部署如圖3-2所示,未知節點位于距離一側床位1m中間處,在以未知節點為圓心,1m為半徑的半圓上用同一參考節點分別在0°,45°,90°,135°和180°,5個不同的角度廣播數據包,每個方向獲取50個數據,按公式(3-16)計算均值,作為值。其結果如表3-1所示。表3-1未知節點在走廊中間時測得的值角度0°45°90°135°180°/dBm-82-82-82-82-82從上述結果可以得出,參考節點與未知節點夾角不同不會影響未知節點接收信號強度RSSI值。所以實驗測得的值為-82dBm。接下來就是要測量信號傳播因子。具體方法如下:將未知節點固定在一個位置,用同一參考節點在每隔0.1m的位置廣播數據包,未知節點接收到50個RSSI值后按公式(3-16)計算均值,并將該均值作為相應距離下的接收信號強度。考慮到宿舍物品較多,對信號的吸附作用大,實驗測量距離間隔較短。測量信號衰減因子時的節點部署如圖3-3所示:22413走廊樓梯樓梯陽臺圖3-3測量信號衰減因子時的節點部署測量結果如下:表3-2不同距離d的接收信號強度RSSI距離d/m0.10.20.30.40.50.60.7RSSI/dBm-64-67-70-73-74-76-77.5距離d/m0.80.91.01.11.21.31.4RSSI/dBm-79-81-82-83-85-88-85距離d/m1.51.61.71.81.92.02.1RSSI/dBm-88-89-90-90-88-91-91從表3-2可以看出,雖然參考節點與未知節點之間的距離變化間隔很小,為0.1m,但RSSI的變化卻較明顯,一般在-3dBm左右,這說明iDuino節點的靈敏度很高,很適合于短距離的定位。另外,當參考節點與未知節點之間的距離達到2.0m后,接收信號強度基本保持不變,因此只需取2.1m之前的數據進行參數擬合。令:(3-17)將公式(3-15)變形為:(3-18)依據表3-2建立如下的新數據表:表3-3t與RSSI關系t106.9905.2293.9793.0102.2181.549RSSI/dBm-64-67-70-73-74-76-77.5t0.9690.4580-0.414-0.792-1.139-1.461RSSI/dBm-79-81-82-83-85-88-85t-1.761-2.041-2.304-2.553-2.788-3.010-3.222RSSI/dBm-88-89-90-90-88-91-91根據線性方程的最小二乘法原理[33]得方程組:(3-19)將數據代入公式(3-19),得:(3-20)即:(3-21)求解該二元一次方程組得:(3-22)將公式(3-22)代入(3-15),即得到實驗環境下的接收信號強度RSSI與距離d之間的數學模型。如下所示:(3-23)由上式可知,參數的值為-83.617dBm,這與實驗測得的數據-82dBm相差僅1.617dBm,而相對在間隔為0.1m測定的接收信號強度(其接受功率變化為3dBm)而言,這樣的誤差已經足夠小了。因此該擬合結果在2.1m內的擬合精度很高。3.3基于RSSI的三邊定位簡化算法通過以上實驗可以證明信號的衰減與距離成對數關系。接收節點與發射節點的距離越近,由RSSI值的偏差產生的絕對距離誤差越小。當距離大于某一值時,由RSSI值波動造成的絕對距離誤差將會很大。所以,一個未知節點能夠收到N個參考節點的信號,應當采用RSSI值大的前幾個參考節點進行定位計算,這樣可以減小定位誤差。一般采用三個參考節點實現定位,所以對RSSI值進行從大到小排序處理,并選取前三個RSSI值,將RSSI值轉化為距離d,根據三邊定位算法原理簡化定位算法,即采用雙邊定位原理得到兩個可能的定位點,再利用RSSI測距原理對兩個定位點進行擇優選擇確定定位點。下面將介紹基于RSSI的三邊定位的簡化算法。如圖3-4所示,三個坐標已知的參考節點、、,一個未知節點的坐標待定,其中參考節點到未知節點的距離分別為、、。其中、、是通過公式(3-18),由未知節點計算而得:(3-24)以參考節點A為圓心,為半徑的圓與以參考節點B為圓心,為半徑的圓相交于兩點D和E,由圓的相交原理易知未知節點肯定是其中一個交點。AABCDE圖3-4雙邊測量法聯立兩圓得二元二次方程組:(3-25)由(2)-(1),將(3-17)轉化為二元一次方程:(3-26)(一)當,即A,B連線與橫軸平行時,易知兩個交點的橫坐標相同。由(3-18)得:(3-27)設兩個交點D,E的橫坐標為:(3-28)將(3-20)代入(3-17)的(1)式,得兩個交點D,E的縱坐標為:或者(3-29)同理可以求得當,即A,B連線與縱軸平行時,兩圓交點的坐標。(二)當且時,即A,B連線既不與橫軸平行也不與橫軸平行。將(3-18)變形為:(3-30)令:(3-31)則:(3-32)將(3-24)代入(3-17)的(1)式,得到標準形式的一元二次方程:(3-33)由于兩個圓相交,所以有:(3-34)則:(3-35)將(3-26)代入(3-27)并化簡的兩個交點的坐標:或(3-36)通過以上的計算,得到兩個可能的未知節點坐標D和E。在無任何錯誤和誤差的情況下,未知節點就是其中的一點。但在實際環境中是不可能的,誤差是不可避免的,所以D或E只是未知節點的估計位置點。為了確定兩個交點中哪個點作為未知節點的估計位置點更為精確,只需計算兩個交點分別到第三個參考節點C的距離和,并與未知節點到參考節點C之間的距離進行比較,若與大小更為接近,則選擇D作為未知節點的估計位置點;同理,若與大小更為接近,則選擇E作為未知節點的估計位置點。下面是具體的絕對差比較方法:(3-37)若:(3-38)則選擇D作為未知節點的估計位置點;若:(3-39)則選擇E作為未知節點的估計位置點。通常情況下,由于復雜的環境因素,接收信號強度RSSI與距離d的映射關系會受到很大的影響。所以將RSSI等效距離d后,還可能會出現兩圓相切和相離的情況。下面是這兩種情況下的定位算法。(三)當兩圓相切時,如圖3-5所示。三個坐標已知的參考節點、、,一個未知節點的坐標待定,其中參考節點到未知節點的距離(可通過RSS法來測量)分別為、、。以參考節點A為圓心,為半徑的圓與以參考節點B為圓心,為半徑的圓相切于兩點D。AABCD圖3-5兩圓相切根據以上理論,可以直接將D作為未知節點的估計位置點。(3-40)則D的坐標如下:(3-41)(四)若兩圓相離時,如圖3-6所示。三個坐標已知的參考節點、、,一個未知節點的坐標待定,其中參考節點到未知節點的距離(可通過RSSI法來測量)分別為、、。以參考節點A為圓心,為半徑的圓與以參考節點B為圓心,為半徑的圓相離。連接A,B兩點的線段中點為D。AABCD圖3-6兩圓相離在這種情況下,可以直接將線段AB的中點D作為未知節點的估計位置點。其中D的坐標如下:(3-42)第四章基于iDuino節點的室內定位系統的實現4.1iDuino節點簡介[19]iDuino是一塊無線傳感器網絡節點的開發板,即課題研究中使用的傳感器節點,采用Atmega128RFA1SOC微處理器。其中Atmega128RFA1SOC微處理器的主要芯片選型參數指標如表4-1所示:iDuino開發板具有以下優點:研發和應用并重。iDuino功能強大,原理開放和代碼開源,能夠滿足用戶快速開發利用;多操作系統支持。基于Atmega128RFA1芯片的開發板iDuino可以支持Arduino、Contiki、TinyOS、Nano-RK、BitCloudZigBee等多個操作系統。并且網上資源豐富,方便學習;Arduino硬件接口兼容。iDuino的硬件接口設計為Arduino硬件接口樣式,便于自由擴展。Arduino開發板的單排插針改為雙排插針后在物理和邏輯上仍然與官方的Arduino開發板保持兼容。iDuino是基于AVR架構開發的,由電源管理模塊、微處理器及射頻模塊、系統復位及USB轉UART模、以太網模塊、外部存儲模塊、擴展接口部分組成。除了具備標準的802.15.4無線收發功能外,還具備以下功能:滿足中國802.15.4C頻段標準的無線射頻收發模塊;滿足無線網絡與以太網互聯要求的以太網收發模塊;滿足大容量數據存儲需求的SD功能模塊;滿足唯一地址編碼要求的MAC地址模塊;滿足以太網供電要求的POE電源管理模塊(選配)。表4-1Atmega128RFA1SOC微處理器參數指標芯片項目參數Atmega128RFA1SOC微處理器主頻16MFLASH128KBRAM16KBEEPOM4KB運行時功耗(16M)4.1ma深度休眠是功耗<250na最大發射功率3.5dB接收靈敏度(250kbps)-100dB支持速度250kbps,500kbps,1Mbps,2Mbps發射時功耗(3.5dB)14.5ma接收時功率12.5ma支持頻率2.4GISMiDuino中還加入了DS2411ROM芯片,提供48bit數據用于生成全球唯一MAC地址,它與MCU之間采用單總線(OneWireNetwork)協議。另外還配有有RESET復位鍵,支持用戶手動復位,便于輸出。在iDuino單片機上,UART通過Silabs的CP2104串口轉換成USB接口實現與電腦的通訊。并且通過AVRDUDE上機軟件和CP2104的配合,在實現燒錄的Bootloader幫助下,iDuino可以實現USB上載編程。圖4-1為本論文使用的iDuino傳感器節點實物圖,并配備有小型移動電源通過USB為其供電。圖4-1配備電源的iDuino開發板實物圖在第一次使用iDuino開發板時,需要在上位機上安裝CP2104驅動程序,將USB接口虛擬出一個COM口,每臺上機位安裝后都將虛擬成不同的COM口。這對于iDuino軟件開發和程序上傳很重要。在上位機上只需要將開發平臺上的程序通過COM口上傳,就可以對iDuino單片機進行編程。如圖4-2所示。圖4-2iDuino節點USBtoUART虛擬串口任何基于SMeshStudio的Arduino項目的代碼都由三部分組成,具體列表如下:Arduino核心庫,即ProjectExplorer視圖中的Arduino目錄,該目錄下有兩個文件夾,一個是core,里面放的是Arduino統一的核心庫;另外一個是variant,里面放的是Arduino特定板卡的管腳定義文件pins_arduino.h。Libraries擴展庫,即ProjectExplorer視圖中的Libraries目錄,里面存放著用戶導入的和特定應用相關的擴展庫,該目錄只有在用戶導入擴展庫后才會存在,ArduinoTest沒有導入任何擴展庫,所以不存在該目錄。用戶項目代碼,向導默認會生成兩個文件,一個是和項目同名的CPP文件,另外一個則是和項目同名的.h頭文件。圖4-3SMeshStudio初始Arduino項目4.2節點部署模型設計本論文實驗所選的監測環境區域是星天苑E座單號區501宿舍,宿舍長約4.8m,寬約4.3m;兩側各有兩張床位(上面床鋪下面課桌)和上床的樓梯,樓梯在床位中間;每張床位長約2.05m,寬約1.0m,樓梯長約1.0m,寬約0.5m。根據第三章實地測量結果得知,當節點間距大于2.1m時,信號強度不再隨距離的增加而變化,所以在部署節點時應當考慮2.1m這個臨界值。另外宿舍環境基本上是對稱的,則采用均勻部署參考節點。22413走廊樓梯樓梯陽臺2.3m4.8mxy0ABCDE圖4-4監測區域參考節點部署如圖4-4所示,監測的環境區域比較狹小,能部署節點的區域長約4.8m,寬約2.3m。在x軸方向上,靠近床位兩邊各按間距1.0m均勻部署5個參考節點,如節點A與B之間相距1.0m。中間也按1.0m間距部署4個參考節點,如節點D與E之間相距1.0m。在y軸方向,節點A,C之間的距離約為1.3m。節點D在以節點A,B和C組成的直角三角形的斜邊中點上,節點A,D之間的距離約為1.64m。其他的節點均按以上方案部署。當參考節點與未知節點之間的距離較大時,接收信號強度會受到各種因素的干擾而使衰減增大,如墻體及各種物體的吸附和發射,導致誤差增大,降低定位精度。按照以上方案在監測環境部署的參考節點較為密集,相鄰節點之間的距離也基本上在1.0m~1.64m之間,這個距離均在2.0m之內,接收信號強度受環境因素的影響較小,測量數據誤差小,定位精度較高。4.3程序設計4.3.1節點邏輯設計[2,19]根據以上的雙邊定位算法原理,要在室內環境實現無線傳感器網絡的定位,需要布置至少三個參考節點,未知節點則隨機擺放,并通過USB接口連接終端電腦。簡單的節點定位邏輯圖4-5所示。節點后面的編號表示節點的IEEE802.15.4短地址,每個節點有唯一的地址標示。在定位中,獲取多個節點RSSI的具體方法是:參考節點定時發送廣播數據包,未知節點收到周期內多個不同參考節點的RSSI數據后開始計算,并結合參考節點的原始位置信息實現定位,隨后將計算結果通發送給終端電腦。參考節點1參考節點3參考節點2未知節點0終端電腦顯示圖4-5節點定位邏輯圖由于不同類型的節點所實現的功能不一樣,所以需要編寫兩種程序。其中三個參考節點的程序除了節點序號不同外,其他的部分完全相同。參考節點與未知節點程序要實現的功能具體要求如下:參考節點:發出的數據包里面必須包含有自身的位置信息,并指明自身ID(也即是自身的節點序號);未知節點:首先需要接收不同參考節點的ID信息和位置信息,并在接收不同參考節點數據包的同時,獲取不同參考節點對未知節點的RSSI值;接著,將接收到的RSSI值進行預處理,并映射成不同參考節點與未知節點之間的距離d;然后利用基于RSSI三邊定位算法的簡化算法(雙邊定位算法)對自身進行定位計算;最后將計算結果通過USB接口傳送到終端電腦上,并利用串口進行監控觀察。在整個定位過程中,參考節點只負責發送數據包,未知節點則需要完成較大難度的任務。未知節點除了要接收數據包外,同時還要進行關鍵的定位計算。在節點供能有限的情況下,這樣較大規模程序在只有16KB存儲中編寫還是有些難度的。為了保證節點定位精度,就更要求定位算法簡單易運行,且占用內存小,使得節點在短時間內計算出結果,以免節點移動造成實時性定位精度誤差。4.3.2Arduino程序體系結構及程序語言基礎[2,20]Arduino程序工作原理:所有的Arduino程序都是從Arduino核心庫函數自帶的main函數啟動,它首先會執行一些系統的初始化工作,然后再調用用戶的setup函數完成用戶特定的初始化工作,接著使用一個死循環不斷調用用戶的loop函數完成用戶的持續性工作,在循環的過程中如果發生串口事件則還會調用用戶的串口處理函數。所以,對于用戶而言,如果是一次性的初始化工作,就把它放在setup函數中完成,而對于那些重復性工作,則把它放在loop函數中完成,這兩個函數的名稱是固定的,不能更改。main程序如下:#include<Arduino.h>intmain(void){init();#ifdefined(USBCON)USBDevice.attach();#endifsetup();for(;;){loop();if(serialEventRun)serialEventRun();}return0;}Arduino程序采用C++進行編寫,并在此基礎上添加了一些自定義的函數和常量。只要沒有超過內存限制,Arduino可以按照C++語法自由定義變量,它還繼承了C++的運算符,包括數學運算法、邏輯運算符和二進制運算符三部分內容。Arduino程序可以使用所有的標準數學函數。對于本論文采用的iDuino節點,因為它沒有任何顯示設備,需要通過單片機的串口來實現。Arduino提供了大量的串口函數,它使用靜態對象SerialX來代表串口,但AVR很多單片機都有多于一個以上的串口,在本文中使用的Serial代表UART0。本文主要用到以下幾個串口函數:voidbegin(unsignedlongbaud):初始化串口,并工作在數值為baud的波特率下,如本文使用的代碼Serial.begin(38400);則是啟動了UART0,并工作在38400的波特率下;voidend():關閉串口,如本文使用的代碼Serial.end();關閉了UART0,一旦串口被關閉,串口的其它函數將不會發生作用;print(data):往串口寫入數據,可以是數字型的也可以是字符串;println(data):和print(data)基本相同,不過在最后加上了回車換行;write(date):往串口寫入一個字節。iDuino自帶了一個名為MxRadio的無線通信庫,它是Smeshlink公司基于uracoli和zigduinoRadio這兩個開源射頻庫改造的,能同時支持2.4G的802.15.4標準和780M的802.15.4C標準,并具備跨平臺能力,用戶只需少許改動就可以很方便地應用到其它使用AT86RF2XX射頻芯片的平臺上。如圖4-6所示,即為Smeshlink公司集成Eclipse的SmeshStudio開發平臺上的MxRadio無線通信庫。在程序編寫中必須勾選SmeshStudioArduino擴展庫中的Arduino-MxRadio這一項,這樣經燒入程序的iDuino節點才能實現無線收發數據。這是在基于iDuino節點的室內定位的軟件開發和程序編寫的關鍵步驟圖4-6Arduino-MxRadio無線通信庫在節點程序中,調用MxRadio庫中的函數來實現對Atmega128RFA1射頻芯片的控制。本文中主要調用的庫函數如下:初始化MxRadio庫voidbegin(channel_tchan,uint16_tpanid,uint16_tlocaladdress,boolneedack,boolautotxval,boolautorxval);chan表示通訊頻段,iDuinoRf212取值范圍是0-3,iDuinoRfa1取值范圍是11-26;panid表示個人區域網編號,如果是廣播發送,可以設定為0xFFFF;localaddress表示本地地址編號;needack表示是否要求接收方應答,如果要求應答但卻沒有受到應答包,則發送方會再次發送4次;autorxval表示是否為自動發送模式,如果是,則會自動進行沖突檢測并重發;autorxval表示是否為自動接收模式,如果是,則會自動過濾掉不屬于自己得數據包。設置回調函數voidattachReceiveFrame(uint8_t*(*funct)(uint8_t,uint8_t*,uint8_t,int8_t,uint8_t));attachReceiveFrame用于設定接收數據的處理,其參數分別是數據包程度,數據包內容,數據鏈路質量指示LQI值,接收時的能量值ED,RSSI,CRC判錯。發送數據包發送數據有一般模式和精簡模式兩種,本文采用一般模式。不管在何種模式下,都是以數據包為最小傳輸單位。在一般模式下,發送數據需要三步:(1)開始發送voidbeginTransmission(uint16_tdestaddress);寫入數據前,用戶必須調用beginTransmission方法,傳入參數表示目標地址,如果沒有參數,則表示發送廣播數據。(2)寫入要發送的數據voidwrite(uint8_t*arr,uint8_tlen);在一個數據包內,用戶可以寫入多種數據,但802.15.4/c標準規定一個數據包的最大長度為128,再加上包頭9個字節和包尾2個字節的數據,實際的有效數據最大為116個字節。(3)結束發送voidendTransmission();用戶可以調用endTransmission真正結束發送數據。接收數據包iDuino采用非緩沖方式數據接收,關鍵步驟如下:(1)定義數據接收處理函數:onReceiveFrame(uint8_tlen,uint8_t*frm,uint8_tlqi,int8_ted,uint_tcrc_fail)(2)設置數據接收處理函數指針到自己定位的函數:MxRadio.attachReceiveFrame(receivehandler)獲取接收狀態用戶在某些情況下還需要了解收發器在接收數據時的某些狀態信息,如信號強度(RSSI),鏈路質量指示(LQI),能量檢測(ED)等信息,MxRadio提供的函數如下:int8_tgetRssiNow();獲取當前信號強度。int8_tgetLastRssi();獲取接收最近一個數據包時的信號強度。uint8_tgetLqi();獲取接收最近一個數據包時的鏈路質量信息。int8_tgetLastEd();獲取接收最近一個數據包時的能量檢測信息。int8_tgetEdNow();獲取當前的能量檢測信息。4.3.3節點程序設計下面將分別簡要介紹參考節點和未知節點上的應用程序。參考節點參考節點只需以廣播方式發送數據包,數據包里包含自身的位置信息,并在程序中顯示數據包來源地址。不同的參考節點的程序設計只需設置不同的地址,其他的部分完全相同。關鍵代碼如下:#include"MxRadio.h"uint16_tlocaladdress=1;//設定節點地址uint16_tdestaddress=0xffff;//節點以廣播方式發送數據包channel_tcurchannel=11;//節點通信頻段voidsetup(){MxRadio.begin(curchannel,0xffff,localaddress,false,false,true);//初始化MxRadio庫}voidloop(){MxRadio.beginTransmission(destaddress);//開始廣播發送數據包MxRadio.write("helloworldfrom");//在節點上顯示數據包來源MxRadio.write(localaddress+'0');MxRadio.write("!");MxRadio.endTransmission();//結束數據包發送delay(2000);}未知節點未知節點接收不同參考節點數據包及RSSI,接著進行濾波、排序、距離映射處理,然后利用基于RSSI三邊定位算法的簡化算法(雙邊定位算法)對自身進行定位計算,最后將計算結果轉化為字符串通過USB接口傳送到終端電腦上,并利用串口進行監控觀察。程序流程圖如下:接收參考節點的數據包及RSSI接收參考節點的數據包及RSSI基于RSSI三邊定位算法的簡化算法(雙邊定位算法)RSSI從大到小排序RSSI到距離d映射RSSI均值濾波處理發送到終端電腦數值到字符串轉換開始結束圖4-7未知節點程序流程圖由于未知節點的程序較為復雜,下面分別從接收不同參考節點數據包及RSSI、RSSI到距離d映射和基于RSSI三邊定位算法的簡化算法(雙邊定位算法)這三部分關鍵程序進行說明。接收不同參考節點數據包及RSSI#include"MxRadio.h"uint16_tlocaladdress=0;channel_tcurchannel=11;voidsetup(){MxRadio.begin(curchannel,0xffff,localaddress,false,false,true);Serial.begin(38400);}voidloop(){if(MxRadio.available()){Serial.println();Serial.print("Rx:");//顯示發送數據包的源地址while(MxRadio.available())Serial.write(MxRadio.read());Serial.println();Serial.print("LQI:");//顯示接收數據包內容Serial.print(MxRadio.getLqi(),10);Serial.print(",RSSI:");//顯示該接收節點的源地址節點的接收信號強度RSSISerial.print(MxRadio.getLastRssi(),10);Serial.print("dBm,ED:");//顯示能量EDSerial.print(MxRadio.getLastEd(),10);Serial.println("dBm");}}未知節點接收來自不同參考節點的數據包及RSSI的監控結果如圖4-8所示:圖4-8未知節點串口監控結果——接收不同節點數據包及RSSI上圖中,“Rx:helloworldfrom1!”表示接收到地址為1的參考節點發送的數據包;“LQI:255,RSSI:-82dBm,ED:-76dBm”表示參考節點發送的數據包內容,包括數據鏈路指數LQI,接收信號強度RSSI和能量ED。RSSI到距離d的映射關鍵代碼如下所示:#include"MxRadio.h"uint16_tlocaladdress=0;channel_tcurchannel=11;beaconrssival[10];beaconrssival3[TRI_BEACON];inti;intsflag=0;intrssivalindex=0;uint8_t*receivehandler(uint8_tlen,uint8_t*frm,uint8_tlqi,int8_ted,uint8_tcrc_fail){uint16_tsrcaddress=(uint16_t)frm[8]*256+frm[7];Serial.print("Src:");Serial.print(srcaddress);Serial.println();Serial.print("RSSI:");intlastrssi=MxRadio.getLastRssi();Serial.print(lastrssi);Serial.print("dBm");Serial.println();rssival[rssivalindex].nodeid=srcaddress;rssival[rssivalindex].RSSI=lastrssi;rssival[rssivalindex].d=RSSI_to_distance(rssival[rssivalindex].RSSI);Serial.println("d=");Serial.print(rssival[rssivalindex].d,DEC);Serial.println();Serial.println("RSSI_to_distancehasbeenexecuted!");floatRSSI_to_distance(floatRSSI){floatd=0.0;floatn=3.77;//信號衰減因子,需要調整floatA=82;//距離1m時的接收信號強度,需要實驗測知d=pow(10,-(RSSI+A)/(10*n));return(d);}未知節點與不同參考節點之間RSSI到距離之間的映射監控結果如圖4-9所示:圖4-9未知節點串口監控結果——RSSI到距離d的映射上圖中,“Src:1”表示接收到地址為1的參考節點;“RSSI:-58dBm”表示接收信號強度;“d=0.2308847188”表示該參考節點與未知節點之間RSSI到距離d的映射結果;“RSSI_to_distancehasbeenexecuted!”表示此映射結果的完成。基于RSSI三邊定位算法的簡化算法(雙邊定位算法)關鍵代碼如下:voidcalculate(beaconbc3[TRI_BEACON],float*eX,float*eY){floata=0,c=0,xi,yi,xj,yj,x,y,d,di,dj,sx1,sx2,sy1,sy2,t1,t2,fx,fy;xi=bc3[0].x;xj=bc3[1].x;yi=bc3[0].y;yj=bc3[1].y;di=bc3[0].d;dj=bc3[1].d;t1=0;t2=0;x=bc3[2].x;y=bc3[2].y;d=bc3[2].d;if(yi==yj){sx1=((pow(di,2)-pow(dj,2))-(pow(xi,2)-pow(xj,2)))/(2*(xj-xi));sx2=sx1;sy1=yi-sqrt(pow(di,2)-pow((xi-sx1),2));sy2=yi+sqrt(pow(di,2)-pow((xi-sx1),2));}else{a=0.5*(pow(xi,2)-pow(xj,2)+pow(yi,2)-pow(yj,2)-pow(di,2)+pow(dj,2))/(yi-yj);c=-1*(xi-xj)/(yi-yj);sx1=(c*yi+xi-a*c+sqrt(2*(c*xi+a)*yi-pow(yi,2)-pow(c,2)*pow(xi,2)-2*a*c*xi-pow(a,2)+(1+pow(c,2))*pow(di,2)))/(1+pow(c,2));sy1=a+c*sx1;sx2=(c*yi+xi-a*c-sqrt(2*(c*xi+a)*yi-pow(yi,2)-pow(c,2)*pow(xi,2)-2*a*c*xi-pow(a,2)+(1+pow(c,2))*pow(di,2)))/(1+pow(c,2));sy2=a+c*sx2;}t1=sqrt(pow((sx1-x),2)+pow((sy1-y),2));t2=sqrt(pow((sx2-x),2)+pow((sy1-y),2));if(abs(t1-d)<abs(t2-d)){fx=sx1;fy=sy1;}else{fx=sx2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CECS 10033-2019綠色建材評價建筑遮陽產品
- T/CCS 073-2023井工煤礦智能掘進系統運維管理規范
- T/CCOA 17-2020糧油食品感官檢驗規范
- T/CCAS 023-2022用于水泥中的改性球狀磷石膏
- T/CAZG 015-2022動物園動物化學保定操作規程
- T/CAQI 63-2019電動防霾口罩
- T/CAQI 123-2020家用和類似用途飲用水處理裝置用活性炭組件安全使用壽命評價規范
- 華信智原java面試題及答案
- 管理崗面試題及答案
- T/CAEPI 45-2022煤礦露天采場植被重建技術指南
- 2025年全國保密教育線上培訓考試試題庫含答案(新)附答案詳解
- 鋼結構施工 課件項目3 鋼結構工程安裝
- 《神經網絡模型》課件
- 四川省成都外國語2025年高三聯考數學試題科試題含解析
- 后現代思潮與教育
- 四川省樹德中學2025年高三第一次模擬考試(物理試題含解析)
- 2025年科技節活動小學科普知識競賽題庫及答案(共80題)
- 售電合同協議
- 教師家訪制度與實施策略全面解析
- 餐飲低值易耗管理制度
- 展會保安服務合同(2篇)
評論
0/150
提交評論