葉擴(kuò)會,尹國成
(保山學(xué)院,云南 保山 678000)
無線傳感器在軍事領(lǐng)域及工業(yè)領(lǐng)域有極其重要的作用。定位技術(shù)是無線傳感器網(wǎng)絡(luò)的關(guān)鍵技術(shù)之一。定位技術(shù)的發(fā)展成為學(xué)術(shù)界和產(chǎn)業(yè)界關(guān)注的熱點(diǎn)[1-4]。
目前,定位技術(shù)的研究主要分為兩大方向:基于測距和基于非測距的定位算法?;跍y距算法研究的方向大致有:基于到達(dá)時間(TOA)、基于到達(dá)時間差(TDOA)、基于到達(dá)角度(AOA)、基于接收信號強(qiáng)度(RSSI)。基于RSSI方法具有硬件設(shè)備簡單、成本低等優(yōu)點(diǎn)。因此,該方法在室內(nèi)定位中得到了廣泛的應(yīng)用,但RSSI測距受環(huán)境影響較大,如何較為精確地估計信號強(qiáng)度與距離之間的關(guān)系,在定位技術(shù)中有著至關(guān)重要的作用[5]。本文將研究數(shù)據(jù)擬合測距及BP神經(jīng)網(wǎng)絡(luò)測距,并比較兩種方法的測距效果。
影響信號的傳播的因素很多,如多徑、障礙物、折射、噪聲等[6,7,9,10]。在特定的環(huán)境中,無線信號傳輸主要受傳輸距離的影響。經(jīng)典理論模型有對數(shù)-常態(tài)分布模型[1-3]:
RSSI=P(d)=A-10nlgd
(1)
式中:A是測試距離d0=1處接收到發(fā)射節(jié)點(diǎn)的信號強(qiáng)度值。
本文將利用最小二乘法理論,對參數(shù)A,n進(jìn)行估計。其思想是記錄多個已知節(jié)點(diǎn)距離發(fā)射節(jié)點(diǎn)的距離和接收到的信號強(qiáng)度,運(yùn)用數(shù)據(jù)擬合理論[6],估計參數(shù)A,n。即用已知節(jié)點(diǎn)數(shù)據(jù)估計參數(shù),從而求出未知位置。步驟如下:
(1)取k個已經(jīng)節(jié)點(diǎn)i(i=1,2,…,k),測量節(jié)點(diǎn)i(i=1,2,…,k)到發(fā)射節(jié)點(diǎn)的距離di及接收到的信號強(qiáng)度RSSIi;
(2)將di代入(2)式可得模型預(yù)測值
RSSIi′=A-10nlgdi;
(3)求誤差平方和
(4)由J最小,建立如下方程組
從而求得參數(shù)A,n。
將(1)式變形為如下測距模型[11]
(2)
由映射網(wǎng)絡(luò)存在(Kolmogorov)定理可知,任意一個連續(xù)的函數(shù)都可以由一個3層的 BP神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)[1,8]。BP神經(jīng)網(wǎng)絡(luò)主要有輸入層、隱含層、輸出層組成。本文采用的BP神經(jīng)網(wǎng)結(jié)構(gòu),如圖1所示。
圖1 BP神經(jīng)網(wǎng)結(jié)構(gòu)
為模擬實(shí)驗(yàn),本文將家用路由器放到室內(nèi)4 m×10 m區(qū)域指定位置,每隔0.2 m,用手機(jī)自帶測量信號強(qiáng)度功能,測量距離路由器為di(i=1,2,…,20)對應(yīng)的信號強(qiáng)度RSSIi的值,如表1所示。
表1 實(shí)驗(yàn)數(shù)據(jù)
運(yùn)用上述數(shù)據(jù)進(jìn)行擬合得參數(shù)
A=-47.03,n=3.71,
將A= - 47.03,n=3.71代入(1)式得如下模型
RSSI=-47.03-37.1lgd,
將上式進(jìn)行反解得數(shù)據(jù)擬合測距模型
(3)
代入表1中的RSSIi數(shù)據(jù)的模型(3)的預(yù)測值
并計算相對誤差
計算結(jié)果見表2的第3,5列。
將表1的數(shù)據(jù)信號強(qiáng)度RSSIi作為輸入,距離di的值作為輸出,選取兩個隱含層,細(xì)胞元的個數(shù)分別為4,7進(jìn)行訓(xùn)練。最大訓(xùn)練次數(shù)5 000次,網(wǎng)絡(luò)的學(xué)習(xí)速率0.05,連接函數(shù)分別為'purelin', 'logsig'。訓(xùn)練結(jié)果,如圖2所示。
圖2 BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)果
通過仿真,并進(jìn)行反歸一化得BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練的仿真值RSSI2i′,再計算相對誤差
計算結(jié)果見表2的第4,6列。
為比較數(shù)據(jù)擬合測距與BP神經(jīng)網(wǎng)絡(luò)測距效果,我們將兩種方法的預(yù)測值及相對誤差進(jìn)行比較研究,計算結(jié)果,如表2所示。
表2 數(shù)據(jù)擬合與BP神經(jīng)網(wǎng)絡(luò)測距對比
由表2可以看出,數(shù)據(jù)擬合測距的最小相對誤差為 0.35%,最大相對誤差為16.36% ,平均相對誤差為9.9%;BP神經(jīng)網(wǎng)絡(luò)測距的最小相對誤差為0.03%,最大誤差為16.06%,平均相對誤差為3.89%。同時由圖 3測距對比圖及圖4測距誤差對比圖可以看出,BP神經(jīng)網(wǎng)絡(luò)測距算法比數(shù)據(jù)擬合測距更精確。
圖3 測距對比
圖4 測距誤差對比
由于BP神經(jīng)網(wǎng)絡(luò)測距的更精確,本文將以Matlab2020b為平臺,實(shí)現(xiàn)測距的程序化、自動化。其代碼如下:
%% 測量數(shù)據(jù)
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];
%目標(biāo)輸入輸出
p = RSSI0;t = d0;
[pn, inputStr] = mapminmax(p);[tn, outputStr] = mapminmax(t);
%對訓(xùn)練集中的輸入數(shù)據(jù)矩陣和目標(biāo)數(shù)據(jù)矩陣進(jìn)行歸一化處理
[pn, inputStr] = mapminmax(p);
[tn, outputStr] = mapminmax(t);
%建立 BP 神經(jīng)網(wǎng)絡(luò)
net = newff(pn, tn, [4,7], {'purelin', 'logsig'})
%每 10 輪回顯示一次結(jié)果
net.trainParam.show = 10;
%最大訓(xùn)練次數(shù)
net.trainParam.epochs = 5000;
%網(wǎng)絡(luò)的學(xué)習(xí)速率
net.trainParam.lr = 0.05;
%訓(xùn)練網(wǎng)絡(luò)所要達(dá)到的目標(biāo)誤差
net.trainParam.goal =5*10^-4;
%開始訓(xùn)練網(wǎng)絡(luò)
net = train(net, pn, tn)
%使用訓(xùn)練好的網(wǎng)絡(luò),基于訓(xùn)練集的數(shù)據(jù)對 BP 網(wǎng)絡(luò)進(jìn)行仿真得到網(wǎng)絡(luò)輸出結(jié)果
answer = sim(net,pn);
%反歸一化輸出測距結(jié)果
d2= mapminmax('reverse', answer, outputStr)
%繪制測試樣本神經(jīng)網(wǎng)絡(luò)輸出和實(shí)際樣本輸出的對比圖(figure(1))
figure(1);
plot(RSSI0,d0, '+',RSSI0, d2, 'r','linewidth',1.5);
ylabel('距離d/m')
xlabel('信號強(qiáng)度RSSI/dbm')
本文利用數(shù)據(jù)擬合,求出測距模型參數(shù)A=-47.03,n=3.71,實(shí)現(xiàn)數(shù)據(jù)擬合測距;建立BP神經(jīng)網(wǎng)絡(luò),將信號強(qiáng)度值作為輸入,距離作為輸出,進(jìn)行有效訓(xùn)練。對兩種測距方法進(jìn)行比較研究,通過誤差分析,BP神經(jīng)網(wǎng)絡(luò)測距精確度更高。本設(shè)計以Matlab2020b為平臺,實(shí)現(xiàn)測距的程序化、自動化。