時子皓,高常青,張瑞年,王國鋒
(1.濟南大學,山東 濟南 250022;2.山東交通學院,山東 濟南 250357)
隨著無線技術網絡的發展,基于位置的服務在人們生活中起著重要作用[1]。目前,全球定位系統(GPS)是室外環境應用最廣泛的系統之一,該系統的高精度以及高可靠性使其應用在多個領域中。由于室內環境復雜,墻壁等障礙物使衛星信號在傳播過程中會產生衰減,導致對室內環境的定位精度降低[2]。所以也就產生了多種室內定位技術,主要包括紅外線定位、藍牙、WiFi、超聲波定位以及ZigBee 等[3]。其中,ZigBee 具有低功耗、低成本、可移動性高等特點,逐漸成為室內定位的研究熱點[4]。定位算法分為測距以及非測距兩種。測距算法包括到達時間算法、到達時間差算法、到達角度算法接收信號強度(RSSI)算法;非測距算法包括質心法、極大似然估計法和DV-Hop 算法。本系統采用ZigBee 技術中的CC2530 芯片作為硬件模塊,建立RSSI 值指紋庫,利用無線網絡進行節點的測量定位。
本系統設計方案主要分為兩個部分:
(1)離線數據采集RSSI 值并建立數據指紋庫;
(2)在線定位,通過未知節點的RSSI 值與指紋庫中的數據進行對比計算,得出坐標位置。
指紋定位原理如圖1 所示。

圖1 指紋定位原理
本系統在建立數據指紋庫后,通過在線采集未知節點接收到的參考節點的RSSI 值,將接收數據傳輸到協調器,再經協調器發送到PC 主機端,將采集到的數據與指紋庫中的數據進行對比,利用差距最小的數據進行計算,得到未知節點的坐標。
CC2530 是無線傳感器網絡中較為常用的芯片,能夠以低成本建立較強的網絡節點。最大輸出功率為4.6 dBm,具有較強的兼容能力,使用外接元件即可很好地滿足網絡通信的相關要求[5]。該芯片對應的射頻收發部分可對數據信息進行可靠安全的傳輸,且具有較強的數據接收或發送功能。
本文系統采用ZigBee 技術,利用上位機開發環境IAR Embedded Workbench采集節點模塊的RSSI值,并建立指紋數據庫,為后續未知節點的匹配定位提供參考[6]。指紋庫建立流程如圖2 所示。
離線階段是指在定位區域內指定n個參考節點,將該區域分成i個指紋點,在指紋點上記錄未知節點接收的參考節點的RSSI 值,并生成指紋點對應的RSSI 值,即{RSSIi1,RSSIi2, ..., RSSIin}。集合中各元素表示未知節點所在i點測得的各個參考節點的RSSI 值,i=1, 2, ...,n。由所有參考節點以及對應的指紋點組成位置指紋庫,未知節點接收到的RSSI值可建立一個與指紋點關聯的數據庫[7]。
2.3.1 RSSI 測距算法
采用ZigBee 技術進行定位,最常見的方式就是利用RSSI 值定位。該測距原理是根據接收到的無線通信信號強度,利用測距公式計算出距離。當設備發射功率已知時,將接收到的信號強度由數學模型表示出傳播損耗與距離之間的換算關系,公式如下:
式中:Pr(d)表示發射節點與接收節點距離為d時接收到的信號強度,單位為dBm;Pt(d0)是一個經驗參數,表示兩節點距離為d0時的信號強度值,一般可取1 m 時的信號強度大??;n為路徑損耗指數,大小會因環境的不同而改變;X表示隨機噪聲,實驗中可忽略不計。信號強度值會隨著距離的增大而減小,由于環境等影響因素,信號強度在接收過程中會發生波動或者突變,并且距離越遠時引起的誤差就越大[8],所以在接收信號強度時,為了減小定位誤差,可進行濾波處理。
2.3.2 定位匹配算法
可利用鄰近法找到最接近的指紋點坐標以及相應的RSSI值,然后根據最接近的指紋點確定未知節點的區域,并根據未知節點與區域內指紋點的距離,采用多邊定位算法計算出未知節點的坐標。
匹配最鄰近的RSSI 值也就是利用歐氏距離得出最近的指紋,歐氏距離公式為:
2.3.3 定位坐標計算
在經過鄰近法匹配到距離最近的指紋點后,以該區域內三個指紋節點為圓心、三個節點到未知節點距離為半徑畫圓,通過三邊定位算法計算出未知節點的位置坐標。假設未知節點的坐標為(x0,y0),區域內指紋節點坐標分別為(x1,y1)、(x2,y2)、(x3,y3)。第n個指紋節點到未知節點的距離為dn(n=3),且dn的值已知。根據已知條件可得未知節點與指紋節點位置關系如方程組(3)所示,利用該方程組可計算出未知節點的坐標(x0,y0)。
該實驗在3 m×3 m 的室內環境進行,在定位區域內選擇4 個點為參考節點,用來放置定位模塊,定位模塊的編號依次為A、B、C、D,其坐標分別為(0,30)、(30,0)、(30,30)、(0,0)。場地及節點布置如圖3 所示。在定位區域采集數據時首先規劃指紋點,各指紋點之間間隔設置為0.6 m,在各個指紋點上依次采集4 個參考節點的RSSI 值,記錄在數據庫中保存,并且在采集過程中可進行濾波處理,減弱或者消除噪聲。指紋點采集圖如圖4 所示,其中“三角點”為參考節點,“圓點”為指紋點,“五角星”為隨機未知節點。

圖4 指紋點采集圖
隨機未知節點的實際坐標為(23,19),測量的該點信號強度值數組為{-55,-42,-57,-52}。與該點實際距離相近的4 個指紋點坐標分別為(18,18)、(18,24)、(24,18)、(24,24)。對應的RSSI 值數組為{-52,-51,-50,-54}、{-56,-50,-52,-60}、{-68,-45,-49,-58}、{-54,-41,-47,-60}。
利用公式(2)對4 組數據進行計算,得出D1=11.96,D2=12.41,D3=16.67,D4=12.88;通過計算,與該點數據最相近的3 個指紋點為(18,18)、(18,24)、(24,24)。再利用RSSI 值計算出未知節點與3 個指紋點之間的距離,得出d1=1.86 dm,d2=1.91 dm,d3=1.99 dm。采用這3 個指紋點與未知節點之間的距離進行三邊定位計算,將得出的距離代入式(3)可得:得出理論坐標為(20.97,20.99)。
本文設計一種基于ZigBee 的室內指紋定位算法。采用CC2530 模塊作為無線通信設備,結合ZigBee 技術,采集RSSI 值進行室內指紋定位。該系統方案可以在室內環境下進行無線通信,實現室內定位的功能。建立數據指紋庫,減小定位誤差,并在采集未知節點接收信號強度后,計算出與該點數據差距最小的3 組數據,再利用三邊測量的方法計算出未知節點坐標。