葉擴會,尹國成
(保山學院,云南 保山 678000)
無線傳感器在軍事領域及工業領域有極其重要的作用。定位技術是無線傳感器網絡的關鍵技術之一。定位技術的發展成為學術界和產業界關注的熱點[1-4]。
目前,定位技術的研究主要分為兩大方向:基于測距和基于非測距的定位算法。基于測距算法研究的方向大致有:基于到達時間(TOA)、基于到達時間差(TDOA)、基于到達角度(AOA)、基于接收信號強度(RSSI)。基于RSSI方法具有硬件設備簡單、成本低等優點。因此,該方法在室內定位中得到了廣泛的應用,但RSSI測距受環境影響較大,如何較為精確地估計信號強度與距離之間的關系,在定位技術中有著至關重要的作用[5]。本文將研究數據擬合測距及BP神經網絡測距,并比較兩種方法的測距效果。
影響信號的傳播的因素很多,如多徑、障礙物、折射、噪聲等[6,7,9,10]。在特定的環境中,無線信號傳輸主要受傳輸距離的影響。經典理論模型有對數-常態分布模型[1-3]:
RSSI=P(d)=A-10nlgd
(1)
式中:A是測試距離d0=1處接收到發射節點的信號強度值。
本文將利用最小二乘法理論,對參數A,n進行估計。其思想是記錄多個已知節點距離發射節點的距離和接收到的信號強度,運用數據擬合理論[6],估計參數A,n。即用已知節點數據估計參數,從而求出未知位置。步驟如下:
(1)取k個已經節點i(i=1,2,…,k),測量節點i(i=1,2,…,k)到發射節點的距離di及接收到的信號強度RSSIi;
(2)將di代入(2)式可得模型預測值
RSSIi′=A-10nlgdi;
(3)求誤差平方和
(4)由J最小,建立如下方程組
從而求得參數A,n。
將(1)式變形為如下測距模型[11]
(2)
由映射網絡存在(Kolmogorov)定理可知,任意一個連續的函數都可以由一個3層的 BP神經網絡實現[1,8]。BP神經網絡主要有輸入層、隱含層、輸出層組成。本文采用的BP神經網結構,如圖1所示。

圖1 BP神經網結構
為模擬實驗,本文將家用路由器放到室內4 m×10 m區域指定位置,每隔0.2 m,用手機自帶測量信號強度功能,測量距離路由器為di(i=1,2,…,20)對應的信號強度RSSIi的值,如表1所示。

表1 實驗數據
運用上述數據進行擬合得參數
A=-47.03,n=3.71,
將A= - 47.03,n=3.71代入(1)式得如下模型
RSSI=-47.03-37.1lgd,
將上式進行反解得數據擬合測距模型
(3)
代入表1中的RSSIi數據的模型(3)的預測值
并計算相對誤差
計算結果見表2的第3,5列。
將表1的數據信號強度RSSIi作為輸入,距離di的值作為輸出,選取兩個隱含層,細胞元的個數分別為4,7進行訓練。最大訓練次數5 000次,網絡的學習速率0.05,連接函數分別為'purelin', 'logsig'。訓練結果,如圖2所示。

圖2 BP神經網絡訓練結果
通過仿真,并進行反歸一化得BP神經網絡訓練的仿真值RSSI2i′,再計算相對誤差
計算結果見表2的第4,6列。
為比較數據擬合測距與BP神經網絡測距效果,我們將兩種方法的預測值及相對誤差進行比較研究,計算結果,如表2所示。

表2 數據擬合與BP神經網絡測距對比
由表2可以看出,數據擬合測距的最小相對誤差為 0.35%,最大相對誤差為16.36% ,平均相對誤差為9.9%;BP神經網絡測距的最小相對誤差為0.03%,最大誤差為16.06%,平均相對誤差為3.89%。同時由圖 3測距對比圖及圖4測距誤差對比圖可以看出,BP神經網絡測距算法比數據擬合測距更精確。

圖3 測距對比

圖4 測距誤差對比
由于BP神經網絡測距的更精確,本文將以Matlab2020b為平臺,實現測距的程序化、自動化。其代碼如下:
%% 測量數據
d0=0.2:0.2:4;
RSSI0=[-23.5 -32.3 -34.1 -42.1 -46.1 -51.3 -53.7 -55.2... -58.9 -59.4 -61 -60.3 -59.3 -62.2 -66 -67.3 -65.2 ...
-66.8 -68.7 -71.1];
%目標輸入輸出
p = RSSI0;t = d0;
[pn, inputStr] = mapminmax(p);[tn, outputStr] = mapminmax(t);
%對訓練集中的輸入數據矩陣和目標數據矩陣進行歸一化處理
[pn, inputStr] = mapminmax(p);
[tn, outputStr] = mapminmax(t);
%建立 BP 神經網絡
net = newff(pn, tn, [4,7], {'purelin', 'logsig'})
%每 10 輪回顯示一次結果
net.trainParam.show = 10;
%最大訓練次數
net.trainParam.epochs = 5000;
%網絡的學習速率
net.trainParam.lr = 0.05;
%訓練網絡所要達到的目標誤差
net.trainParam.goal =5*10^-4;
%開始訓練網絡
net = train(net, pn, tn)
%使用訓練好的網絡,基于訓練集的數據對 BP 網絡進行仿真得到網絡輸出結果
answer = sim(net,pn);
%反歸一化輸出測距結果
d2= mapminmax('reverse', answer, outputStr)
%繪制測試樣本神經網絡輸出和實際樣本輸出的對比圖(figure(1))
figure(1);
plot(RSSI0,d0, '+',RSSI0, d2, 'r','linewidth',1.5);
ylabel('距離d/m')
xlabel('信號強度RSSI/dbm')
本文利用數據擬合,求出測距模型參數A=-47.03,n=3.71,實現數據擬合測距;建立BP神經網絡,將信號強度值作為輸入,距離作為輸出,進行有效訓練。對兩種測距方法進行比較研究,通過誤差分析,BP神經網絡測距精確度更高。本設計以Matlab2020b為平臺,實現測距的程序化、自動化。