基于arduino的無(wú)線傳感器網(wǎng)絡(luò)室內(nèi)定位方法的研究畢業(yè)論文_第1頁(yè)
基于arduino的無(wú)線傳感器網(wǎng)絡(luò)室內(nèi)定位方法的研究畢業(yè)論文_第2頁(yè)
基于arduino的無(wú)線傳感器網(wǎng)絡(luò)室內(nèi)定位方法的研究畢業(yè)論文_第3頁(yè)
基于arduino的無(wú)線傳感器網(wǎng)絡(luò)室內(nèi)定位方法的研究畢業(yè)論文_第4頁(yè)
基于arduino的無(wú)線傳感器網(wǎng)絡(luò)室內(nèi)定位方法的研究畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

最新文檔

評(píng)論

0/150

提交評(píng)論