時(shí)子皓,高常青,張瑞年,王國(guó)鋒
(1.濟(jì)南大學(xué),山東 濟(jì)南 250022;2.山東交通學(xué)院,山東 濟(jì)南 250357)
隨著無線技術(shù)網(wǎng)絡(luò)的發(fā)展,基于位置的服務(wù)在人們生活中起著重要作用[1]。目前,全球定位系統(tǒng)(GPS)是室外環(huán)境應(yīng)用最廣泛的系統(tǒng)之一,該系統(tǒng)的高精度以及高可靠性使其應(yīng)用在多個(gè)領(lǐng)域中。由于室內(nèi)環(huán)境復(fù)雜,墻壁等障礙物使衛(wèi)星信號(hào)在傳播過程中會(huì)產(chǎn)生衰減,導(dǎo)致對(duì)室內(nèi)環(huán)境的定位精度降低[2]。所以也就產(chǎn)生了多種室內(nèi)定位技術(shù),主要包括紅外線定位、藍(lán)牙、WiFi、超聲波定位以及ZigBee 等[3]。其中,ZigBee 具有低功耗、低成本、可移動(dòng)性高等特點(diǎn),逐漸成為室內(nèi)定位的研究熱點(diǎn)[4]。定位算法分為測(cè)距以及非測(cè)距兩種。測(cè)距算法包括到達(dá)時(shí)間算法、到達(dá)時(shí)間差算法、到達(dá)角度算法接收信號(hào)強(qiáng)度(RSSI)算法;非測(cè)距算法包括質(zhì)心法、極大似然估計(jì)法和DV-Hop 算法。本系統(tǒng)采用ZigBee 技術(shù)中的CC2530 芯片作為硬件模塊,建立RSSI 值指紋庫(kù),利用無線網(wǎng)絡(luò)進(jìn)行節(jié)點(diǎn)的測(cè)量定位。
本系統(tǒng)設(shè)計(jì)方案主要分為兩個(gè)部分:
(1)離線數(shù)據(jù)采集RSSI 值并建立數(shù)據(jù)指紋庫(kù);
(2)在線定位,通過未知節(jié)點(diǎn)的RSSI 值與指紋庫(kù)中的數(shù)據(jù)進(jìn)行對(duì)比計(jì)算,得出坐標(biāo)位置。
指紋定位原理如圖1 所示。
圖1 指紋定位原理
本系統(tǒng)在建立數(shù)據(jù)指紋庫(kù)后,通過在線采集未知節(jié)點(diǎn)接收到的參考節(jié)點(diǎn)的RSSI 值,將接收數(shù)據(jù)傳輸?shù)絽f(xié)調(diào)器,再經(jīng)協(xié)調(diào)器發(fā)送到PC 主機(jī)端,將采集到的數(shù)據(jù)與指紋庫(kù)中的數(shù)據(jù)進(jìn)行對(duì)比,利用差距最小的數(shù)據(jù)進(jìn)行計(jì)算,得到未知節(jié)點(diǎn)的坐標(biāo)。
CC2530 是無線傳感器網(wǎng)絡(luò)中較為常用的芯片,能夠以低成本建立較強(qiáng)的網(wǎng)絡(luò)節(jié)點(diǎn)。最大輸出功率為4.6 dBm,具有較強(qiáng)的兼容能力,使用外接元件即可很好地滿足網(wǎng)絡(luò)通信的相關(guān)要求[5]。該芯片對(duì)應(yīng)的射頻收發(fā)部分可對(duì)數(shù)據(jù)信息進(jìn)行可靠安全的傳輸,且具有較強(qiáng)的數(shù)據(jù)接收或發(fā)送功能。
本文系統(tǒng)采用ZigBee 技術(shù),利用上位機(jī)開發(fā)環(huán)境IAR Embedded Workbench采集節(jié)點(diǎn)模塊的RSSI值,并建立指紋數(shù)據(jù)庫(kù),為后續(xù)未知節(jié)點(diǎn)的匹配定位提供參考[6]。指紋庫(kù)建立流程如圖2 所示。
離線階段是指在定位區(qū)域內(nèi)指定n個(gè)參考節(jié)點(diǎn),將該區(qū)域分成i個(gè)指紋點(diǎn),在指紋點(diǎn)上記錄未知節(jié)點(diǎn)接收的參考節(jié)點(diǎn)的RSSI 值,并生成指紋點(diǎn)對(duì)應(yīng)的RSSI 值,即{RSSIi1,RSSIi2, ..., RSSIin}。集合中各元素表示未知節(jié)點(diǎn)所在i點(diǎn)測(cè)得的各個(gè)參考節(jié)點(diǎn)的RSSI 值,i=1, 2, ...,n。由所有參考節(jié)點(diǎn)以及對(duì)應(yīng)的指紋點(diǎn)組成位置指紋庫(kù),未知節(jié)點(diǎn)接收到的RSSI值可建立一個(gè)與指紋點(diǎn)關(guān)聯(lián)的數(shù)據(jù)庫(kù)[7]。
2.3.1 RSSI 測(cè)距算法
采用ZigBee 技術(shù)進(jìn)行定位,最常見的方式就是利用RSSI 值定位。該測(cè)距原理是根據(jù)接收到的無線通信信號(hào)強(qiáng)度,利用測(cè)距公式計(jì)算出距離。當(dāng)設(shè)備發(fā)射功率已知時(shí),將接收到的信號(hào)強(qiáng)度由數(shù)學(xué)模型表示出傳播損耗與距離之間的換算關(guān)系,公式如下:
式中:Pr(d)表示發(fā)射節(jié)點(diǎn)與接收節(jié)點(diǎn)距離為d時(shí)接收到的信號(hào)強(qiáng)度,單位為dBm;Pt(d0)是一個(gè)經(jīng)驗(yàn)參數(shù),表示兩節(jié)點(diǎn)距離為d0時(shí)的信號(hào)強(qiáng)度值,一般可取1 m 時(shí)的信號(hào)強(qiáng)度大??;n為路徑損耗指數(shù),大小會(huì)因環(huán)境的不同而改變;X表示隨機(jī)噪聲,實(shí)驗(yàn)中可忽略不計(jì)。信號(hào)強(qiáng)度值會(huì)隨著距離的增大而減小,由于環(huán)境等影響因素,信號(hào)強(qiáng)度在接收過程中會(huì)發(fā)生波動(dòng)或者突變,并且距離越遠(yuǎn)時(shí)引起的誤差就越大[8],所以在接收信號(hào)強(qiáng)度時(shí),為了減小定位誤差,可進(jìn)行濾波處理。
2.3.2 定位匹配算法
可利用鄰近法找到最接近的指紋點(diǎn)坐標(biāo)以及相應(yīng)的RSSI值,然后根據(jù)最接近的指紋點(diǎn)確定未知節(jié)點(diǎn)的區(qū)域,并根據(jù)未知節(jié)點(diǎn)與區(qū)域內(nèi)指紋點(diǎn)的距離,采用多邊定位算法計(jì)算出未知節(jié)點(diǎn)的坐標(biāo)。
匹配最鄰近的RSSI 值也就是利用歐氏距離得出最近的指紋,歐氏距離公式為:
2.3.3 定位坐標(biāo)計(jì)算
在經(jīng)過鄰近法匹配到距離最近的指紋點(diǎn)后,以該區(qū)域內(nèi)三個(gè)指紋節(jié)點(diǎn)為圓心、三個(gè)節(jié)點(diǎn)到未知節(jié)點(diǎn)距離為半徑畫圓,通過三邊定位算法計(jì)算出未知節(jié)點(diǎn)的位置坐標(biāo)。假設(shè)未知節(jié)點(diǎn)的坐標(biāo)為(x0,y0),區(qū)域內(nèi)指紋節(jié)點(diǎn)坐標(biāo)分別為(x1,y1)、(x2,y2)、(x3,y3)。第n個(gè)指紋節(jié)點(diǎn)到未知節(jié)點(diǎn)的距離為dn(n=3),且dn的值已知。根據(jù)已知條件可得未知節(jié)點(diǎn)與指紋節(jié)點(diǎn)位置關(guān)系如方程組(3)所示,利用該方程組可計(jì)算出未知節(jié)點(diǎn)的坐標(biāo)(x0,y0)。
該實(shí)驗(yàn)在3 m×3 m 的室內(nèi)環(huán)境進(jìn)行,在定位區(qū)域內(nèi)選擇4 個(gè)點(diǎn)為參考節(jié)點(diǎn),用來放置定位模塊,定位模塊的編號(hào)依次為A、B、C、D,其坐標(biāo)分別為(0,30)、(30,0)、(30,30)、(0,0)。場(chǎng)地及節(jié)點(diǎn)布置如圖3 所示。在定位區(qū)域采集數(shù)據(jù)時(shí)首先規(guī)劃指紋點(diǎn),各指紋點(diǎn)之間間隔設(shè)置為0.6 m,在各個(gè)指紋點(diǎn)上依次采集4 個(gè)參考節(jié)點(diǎn)的RSSI 值,記錄在數(shù)據(jù)庫(kù)中保存,并且在采集過程中可進(jìn)行濾波處理,減弱或者消除噪聲。指紋點(diǎn)采集圖如圖4 所示,其中“三角點(diǎn)”為參考節(jié)點(diǎn),“圓點(diǎn)”為指紋點(diǎn),“五角星”為隨機(jī)未知節(jié)點(diǎn)。
圖4 指紋點(diǎn)采集圖
隨機(jī)未知節(jié)點(diǎn)的實(shí)際坐標(biāo)為(23,19),測(cè)量的該點(diǎn)信號(hào)強(qiáng)度值數(shù)組為{-55,-42,-57,-52}。與該點(diǎn)實(shí)際距離相近的4 個(gè)指紋點(diǎn)坐標(biāo)分別為(18,18)、(18,24)、(24,18)、(24,24)。對(duì)應(yīng)的RSSI 值數(shù)組為{-52,-51,-50,-54}、{-56,-50,-52,-60}、{-68,-45,-49,-58}、{-54,-41,-47,-60}。
利用公式(2)對(duì)4 組數(shù)據(jù)進(jìn)行計(jì)算,得出D1=11.96,D2=12.41,D3=16.67,D4=12.88;通過計(jì)算,與該點(diǎn)數(shù)據(jù)最相近的3 個(gè)指紋點(diǎn)為(18,18)、(18,24)、(24,24)。再利用RSSI 值計(jì)算出未知節(jié)點(diǎn)與3 個(gè)指紋點(diǎn)之間的距離,得出d1=1.86 dm,d2=1.91 dm,d3=1.99 dm。采用這3 個(gè)指紋點(diǎn)與未知節(jié)點(diǎn)之間的距離進(jìn)行三邊定位計(jì)算,將得出的距離代入式(3)可得:得出理論坐標(biāo)為(20.97,20.99)。
本文設(shè)計(jì)一種基于ZigBee 的室內(nèi)指紋定位算法。采用CC2530 模塊作為無線通信設(shè)備,結(jié)合ZigBee 技術(shù),采集RSSI 值進(jìn)行室內(nèi)指紋定位。該系統(tǒng)方案可以在室內(nèi)環(huán)境下進(jìn)行無線通信,實(shí)現(xiàn)室內(nèi)定位的功能。建立數(shù)據(jù)指紋庫(kù),減小定位誤差,并在采集未知節(jié)點(diǎn)接收信號(hào)強(qiáng)度后,計(jì)算出與該點(diǎn)數(shù)據(jù)差距最小的3 組數(shù)據(jù),再利用三邊測(cè)量的方法計(jì)算出未知節(jié)點(diǎn)坐標(biāo)。
物聯(lián)網(wǎng)技術(shù)2023年10期