劉紹剛 李燕梅 李艷平
摘 ?要: 基于無線傳感器網(wǎng)絡(luò)的室內(nèi)定位技術(shù)因?yàn)槭覂?nèi)復(fù)雜的環(huán)境,傳感器通信存在著多徑效應(yīng),無法使用信號強(qiáng)度衰減模型進(jìn)行精確定位。文中提出基于ZigBee結(jié)合Fingerprinting以及遺傳算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)的方法進(jìn)行定位。實(shí)驗(yàn)結(jié)果證明該方法可以用于室內(nèi)的精確定位,在定位范圍為2 m×2 m的條件下,非訓(xùn)練點(diǎn)的定位平均誤差為0.22 m。
關(guān)鍵詞: 室內(nèi)定位; BP神經(jīng)網(wǎng)絡(luò); 遺傳算法; ZigBee; Fingerprinting; 無線傳感器網(wǎng)絡(luò)
中圖分類號: TN915.02?34; V271.4 ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識碼: A ? ? ? ? ? ? ? ? ?文章編號: 1004?373X(2019)15?0025?04
Indoor mobile positioning technology based on BP artificial neural network
LIU Shaogang1, LI Yanmei1, LI Yanping2
(1. School of Artificial Intelligence & Information Engineering, West Yunnan University, Lincang 677000, China;
2. School of Mathematics and Information Science, Shaanxi Normal University, Xian 710119, China)
Abstract: With the development of wireless sensor network (WSN) technology, it has become important to obtain the location of sensor nodes in the network. Therefore, a large number of indoor positioning technologies based on WSN emerged. The signal strength decay model cannot be used for precise positioning due to the multipath effect of sensor communication in a complex indoor environment. A method based on ZigBee combined with Fingerprinting and BP neural network optimized by genetic algorithm is proposed in this paper. Experimental results show that this method can be used for indoor precise positioning, whose average location error of non?training points is 0.22 m under the condition in the positioning range of 2 m×2 m.
Keywords: indoor positioning; BackPropagation neural network; genetic algorithm; ZigBee; Fingerprinting; wireless sensor network
0 ?引 ?言
近年來,隨著嵌入式技術(shù)和無線通信技術(shù)的不斷發(fā)展,無線傳感器模塊具有更低的功耗,更快的處理速度,每一個(gè)無線傳感器模塊都可以獨(dú)立地完成一些任務(wù)。例如,監(jiān)測室內(nèi)的溫度,系統(tǒng)需要知道人在屋內(nèi)的確切位置,并測得人所在位置的實(shí)際溫度,隨后再把人所在位置的實(shí)際溫度調(diào)整到最舒適的溫度,這樣就可以避免多余的能源浪費(fèi)。越智能的室內(nèi)系統(tǒng)就越需要智能體的位置并做出合理的調(diào)整,所以室內(nèi)定位技術(shù)[1]變得越來越重要。
在文獻(xiàn)[2?3]中使用信號衰減模型通過接收信號強(qiáng)度指標(biāo)(RSSI)計(jì)算出距離,再使用距離值計(jì)算出位置。這種方法簡單易行,在ZigBee發(fā)送的數(shù)據(jù)包中可以直接提取出RSSI值。提取出需要定位節(jié)點(diǎn)到周圍至少三個(gè)固定節(jié)點(diǎn)的RSSI值,計(jì)算出需要定位的節(jié)點(diǎn)到這三個(gè)固定節(jié)點(diǎn)的距離,就可以使用三邊定位的方法計(jì)算出該節(jié)點(diǎn)的坐標(biāo)。在計(jì)算距離時(shí)使用理想情況下的信號衰減模型,然而實(shí)際室內(nèi)環(huán)境下由于存在各種干擾和多徑效應(yīng),使用信號衰減模型不能準(zhǔn)確地表示出RSSI和距離的對應(yīng)關(guān)系。所以,用信號衰減模型計(jì)算距離存在很大的誤差,再用此距離計(jì)算的位置也存在著不小的誤差。文獻(xiàn)[4?5]中使用Fingerprinting系統(tǒng),將定位劃分為兩個(gè)階段,在預(yù)處理階段收集預(yù)處理點(diǎn)上的鏈路質(zhì)量指標(biāo)(LQI)值儲存進(jìn)數(shù)據(jù)庫,用BP神經(jīng)網(wǎng)絡(luò)直接擬合LQI和坐標(biāo)的關(guān)系。通過BP神經(jīng)網(wǎng)絡(luò)直接得到LQI和坐標(biāo)的對應(yīng)關(guān)系,這種方法的好處是沒有使用信號衰減模型,減小了誤差。但是在訓(xùn)練過程中,沒有將BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練樣本分成訓(xùn)練樣本和檢驗(yàn)樣本,無法分析訓(xùn)練是否出現(xiàn)訓(xùn)練不足或者訓(xùn)練過度等問題,且只使用BP神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練易陷入局部最優(yōu),而無法陷入全局最優(yōu)。
根據(jù)文獻(xiàn)[6]中的描述,RSSI值在室內(nèi)的分布是基本不變的。RSSI的分布并不像磁場的分布那樣均勻、規(guī)則,在室內(nèi)環(huán)境中,RSSI的分布是不勻稱的、畸形的。在本文提出的定位系統(tǒng)中,使用基于遺傳算法優(yōu)化參數(shù)的BP神經(jīng)網(wǎng)絡(luò)(以下簡稱GA?BP神經(jīng)網(wǎng)絡(luò))的Fingerprinting方法進(jìn)行定位。這種方法對于預(yù)先訓(xùn)練的點(diǎn)定位精度高,對于沒有訓(xùn)練的點(diǎn)定位具有一定的泛化能力。
1 ?定位原理
1.1 ?RSSI
接收信號強(qiáng)度(RSS)是接收信號的能量的量化。顯然,RSS值會隨著設(shè)備之間距離的變化而變化。根據(jù)Friis自由空間傳輸公式[7?9]接收到的能量會隨著發(fā)送與接收設(shè)備之間距離的減小而減小。
式中:[PRX]為接收器的接收能量;[PTX]為發(fā)送器的發(fā)送能量;[GTX]為發(fā)送器的增益;[GRX]為接收器的增益;[λ]為無線發(fā)射信號的波長;[d]為發(fā)送器到接收器之間的距離。
在嵌入式設(shè)備中,接收信號強(qiáng)度RSS被轉(zhuǎn)化為接收信號強(qiáng)度RSSI指標(biāo)值,如式(2)所示,定義為接收的能量和從參考距離發(fā)送來的接收能量的比值。根據(jù)式(1)、式(2)可以得出RSSI值和距離成反比。
式中[PRef]為參考接收能量。在基于RSSI的定位系統(tǒng)中,可以使用信號衰減模型把RSSI值轉(zhuǎn)化為距離值然后定位。也可以使用Fingerprinting的方法,建立RSSI值和與之對應(yīng)的位置的數(shù)據(jù)庫來定位。因?yàn)樵谑覂?nèi)環(huán)境中使用信號衰減模型不能準(zhǔn)確定位,所以選擇Fingerprinting并通過增加預(yù)處理點(diǎn)的個(gè)數(shù)來提高精度。
1.2 ?Fingerprinting
RSSI值會隨著距離的增加而減小,因?yàn)楦鞣N干擾的原因,這種變化并不規(guī)律。Fingerprinting分為兩個(gè)階段。Fingerprinting在預(yù)處理階段把RSSI的這種不規(guī)律的變化,也就是附加干擾的變化儲存進(jìn)數(shù)據(jù)庫。在定位階段,使用數(shù)據(jù)庫里的RSSI和當(dāng)前的RSSI值進(jìn)行比對并定位。數(shù)據(jù)庫里的RSSI擁有根據(jù)環(huán)境改變而改變的特性,這種特性雖然減小了Fingerprinting方法的魯棒性,但是增加了Fingerprinting在當(dāng)前環(huán)境下的精確性。
2 ?方案設(shè)計(jì)
ZigBee可以工作在三種模式下:協(xié)調(diào)器、路由器和終端模式。協(xié)調(diào)器負(fù)責(zé)建立網(wǎng)絡(luò)并控制著其他節(jié)點(diǎn)的入網(wǎng),建立網(wǎng)絡(luò)之后協(xié)調(diào)器的功能與路由器相同,都是負(fù)責(zé)數(shù)據(jù)的中轉(zhuǎn)。與路由器不同的是終端只能和父節(jié)點(diǎn)進(jìn)行通信,不能和其他節(jié)點(diǎn)直接進(jìn)行通信。
在定位系統(tǒng)中,位置已知的節(jié)點(diǎn)為錨節(jié)點(diǎn),位置未知的節(jié)點(diǎn)為移動節(jié)點(diǎn),和電腦相連傳送數(shù)據(jù)的節(jié)點(diǎn)為網(wǎng)關(guān),如圖1所示。因?yàn)槭褂眯切瓮負(fù)浣Y(jié)構(gòu)組網(wǎng)具有結(jié)構(gòu)簡單的特點(diǎn),并且滿足本文提出的定位系統(tǒng)的要求。所以定位系統(tǒng)的拓?fù)浣Y(jié)構(gòu)使用星形結(jié)構(gòu)。錨節(jié)點(diǎn)只和移動節(jié)點(diǎn)發(fā)生通信,所以錨節(jié)點(diǎn)使用終端。
使用如圖1所示的星形網(wǎng)絡(luò),移動節(jié)點(diǎn)收集4個(gè)錨節(jié)點(diǎn)發(fā)送來的RSSI值然后傳送到電腦,由電腦計(jì)算出移動節(jié)點(diǎn)的坐標(biāo)。采集RSSI值的步驟如下:
Step1:每個(gè)錨節(jié)點(diǎn)以200 ms的間隔向移動節(jié)點(diǎn)發(fā)送設(shè)備ID號(1~4號);
Step2:移動節(jié)點(diǎn)接收4個(gè)錨節(jié)點(diǎn)發(fā)送來的ID號并從接收數(shù)據(jù)包中讀出RSSI值,如果沒收集齊就繼續(xù)等待;
Step3:移動節(jié)點(diǎn)收集到4個(gè)錨節(jié)點(diǎn)發(fā)送來的ID號,將ID號和與之對應(yīng)的RSSI值發(fā)送到網(wǎng)關(guān);
Step4:網(wǎng)關(guān)將數(shù)據(jù)通過串口發(fā)送給電腦。
定位數(shù)據(jù)處理部分分為兩個(gè)階段:預(yù)處理階段和定位階段。
如圖2所示,四個(gè)角落的大圓形代表錨節(jié)點(diǎn),中間的每個(gè)小圓形代表一個(gè)預(yù)處理點(diǎn)。實(shí)驗(yàn)區(qū)域?yàn)? m×2 m的正方形,每隔10 cm設(shè)一個(gè)預(yù)處理點(diǎn)。在預(yù)處理階段中,將移動節(jié)點(diǎn)放置在預(yù)處理點(diǎn)上以采集RSSI數(shù)據(jù),每個(gè)點(diǎn)采集200次,并求出RSSI的平均值,然后將平均值存入數(shù)據(jù)庫。RSSI平均值和坐標(biāo)一一對應(yīng),如表1所示。
在測得全部361個(gè)點(diǎn)的RSSI平均值之后,把RSSI平均值作為BP神經(jīng)網(wǎng)絡(luò)的輸入,與RSSI平均值對應(yīng)的坐標(biāo)作為輸出進(jìn)行BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練。
BP神經(jīng)網(wǎng)絡(luò)是一種監(jiān)督學(xué)習(xí)型人工神經(jīng)網(wǎng)絡(luò)[10]。學(xué)習(xí)過程是由信號的正向傳播和誤差的反向修正組成的。典型的三層BP神經(jīng)網(wǎng)絡(luò)包括一個(gè)輸入層、一個(gè)隱含層和一個(gè)輸出層。Kosmogorov定理說明在有合適的結(jié)構(gòu)和恰當(dāng)?shù)臋?quán)值條件下,三層BP神經(jīng)網(wǎng)絡(luò)可以擬合任意的連續(xù)非線性曲線。但是由于RSSI值和坐標(biāo)之間的對應(yīng)關(guān)系不連續(xù),所以需要使用四層BP神經(jīng)網(wǎng)絡(luò),其中包含兩個(gè)隱含層。在定位系統(tǒng)中一共需要測量4個(gè)RSSI值,所以BP網(wǎng)絡(luò)的輸入節(jié)點(diǎn)為4個(gè)。通過4個(gè)RSSI值要獲得對應(yīng)的坐標(biāo)([x,y]),因此輸出節(jié)點(diǎn)為2個(gè)。在設(shè)計(jì)隱含層的節(jié)點(diǎn)數(shù)時(shí)沒有固定的規(guī)范,根據(jù)經(jīng)驗(yàn)隱含層1節(jié)點(diǎn)數(shù)為10個(gè),隱含層2節(jié)點(diǎn)數(shù)為6個(gè)。
只使用BP神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練容易陷入局部最優(yōu)而無法達(dá)到全局最優(yōu),將BP神經(jīng)網(wǎng)絡(luò)與遺傳算法結(jié)合,可以解決以上問題。在BP網(wǎng)絡(luò)的學(xué)習(xí)過程中,不再使用梯度向下算法,而是使用遺傳算法進(jìn)行學(xué)習(xí)。GA?BP網(wǎng)絡(luò)訓(xùn)練流程如圖3所示。GA編碼方式使用實(shí)數(shù)編碼,如果使用二進(jìn)制位串的方式,染色體的長度將會過長不利于計(jì)算。將四層BP網(wǎng)絡(luò)的權(quán)值[W1],[W2],[W3],閾值[B1],[B2],[B3]依次排列構(gòu)成一個(gè)染色體,這六個(gè)參數(shù)代表一個(gè)BP神經(jīng)網(wǎng)絡(luò),染色體中的每個(gè)值都有一個(gè)上限和一個(gè)下限,依次作為約束條件,其初始值可以通過隨機(jī)數(shù)生成。
用BP人工神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,最重要的是人工神經(jīng)網(wǎng)絡(luò)的泛化能力,所以需要將樣本分為兩組,一組用作訓(xùn)練,另一組用作檢驗(yàn)。理論上訓(xùn)練誤差會一直減小,但是隨著訓(xùn)練誤差的減小泛化能力也會變?nèi)酰瑱z驗(yàn)誤差如圖4所示。
由圖4可知,網(wǎng)絡(luò)誤差呈現(xiàn)先減小再增大的趨勢,也就是出現(xiàn)了訓(xùn)練過度??梢钥吹酱嬖谝粋€(gè)最佳訓(xùn)練次數(shù)[t0],在達(dá)到最佳訓(xùn)練次數(shù)之前如果停止訓(xùn)練將出現(xiàn)訓(xùn)練不足,在達(dá)到最佳訓(xùn)練次數(shù)之后還進(jìn)行訓(xùn)練,檢驗(yàn)誤差增大,將出現(xiàn)訓(xùn)練過度。所以BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練的關(guān)鍵是尋找最佳訓(xùn)練次數(shù)。為了判斷訓(xùn)練是否出現(xiàn)以上兩種問題,定義誤差函數(shù)為:
式中:[(x0i,y0i)]為第[i]個(gè)預(yù)處理點(diǎn)的BP網(wǎng)絡(luò)輸出坐標(biāo)值;[(xdi,ydi)]為第[i]個(gè)預(yù)處理點(diǎn)的實(shí)際坐標(biāo)值。把樣本分為兩組,[n]([n]=0,1,2,…,361)為樣本號,將([n]%11==0)的樣本組成訓(xùn)練組,([n]%11!=0)的樣本組成檢驗(yàn)組,訓(xùn)練組數(shù)據(jù)用來進(jìn)行BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,檢驗(yàn)組數(shù)據(jù)用來確定訓(xùn)練是否應(yīng)該停止。在使用遺傳算法時(shí),需要選擇合適的適應(yīng)度函數(shù),根據(jù)適應(yīng)度函數(shù)的值確定父代中優(yōu)秀的個(gè)體。種群中的每個(gè)個(gè)體解碼成BP網(wǎng)絡(luò)的權(quán)值和閾值,將訓(xùn)練組數(shù)據(jù)和檢驗(yàn)組數(shù)據(jù)送入BP神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,根據(jù)式(3)得到訓(xùn)練組中每個(gè)點(diǎn)的誤差和檢驗(yàn)組中每個(gè)點(diǎn)的誤差,然后對這兩組誤差取平均值[error]。適應(yīng)度函數(shù)選為訓(xùn)練組平均誤差的倒數(shù),檢驗(yàn)組平均誤差用作判斷是否達(dá)到全局最優(yōu),也就是判斷是否達(dá)到最佳訓(xùn)練次數(shù)[t0]。
在設(shè)計(jì)完BP網(wǎng)絡(luò)之后,進(jìn)行GA參數(shù)的設(shè)定,種群大小設(shè)為50,選擇函數(shù)為隨機(jī)均勻函數(shù),保證每一代中的最佳個(gè)體能直接進(jìn)入下一代。變異函數(shù)為Gaussain,改進(jìn)算法對重點(diǎn)區(qū)域的搜索能力。此外,GA的終止條件設(shè)為是否達(dá)到設(shè)定的遺傳代數(shù)。
3 ?實(shí)驗(yàn)測試
GA?BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)果如表2所示。
從表2可以看出,1號BP神經(jīng)網(wǎng)絡(luò)與3號BP神經(jīng)網(wǎng)絡(luò)相比出現(xiàn)了訓(xùn)練不足,2號BP神經(jīng)網(wǎng)絡(luò)與3號BP神經(jīng)網(wǎng)絡(luò)相比出現(xiàn)了訓(xùn)練過度,因此選擇3號BP神經(jīng)網(wǎng)絡(luò)進(jìn)行室內(nèi)定位。
在預(yù)處理階段使用的實(shí)驗(yàn)區(qū)域上進(jìn)行定位實(shí)驗(yàn),將移動節(jié)點(diǎn)放在2 m×2 m的實(shí)驗(yàn)區(qū)域內(nèi),分別測得移動節(jié)點(diǎn)的實(shí)際位置、定位系統(tǒng)的觀測值,得出定位誤差如表3所示。
4 ?結(jié) ?論
本文在無線傳感器網(wǎng)絡(luò)的基礎(chǔ)上,提出一種基于遺傳算法優(yōu)化參數(shù)的BP神經(jīng)網(wǎng)絡(luò)的室內(nèi)定位系統(tǒng)。實(shí)驗(yàn)結(jié)果證明,這種方法可以用于室內(nèi)的精確定位,在定位范圍為2 m×2 m的條件下,非訓(xùn)練點(diǎn)的定位平均誤差為0.22 m。
參考文獻(xiàn)
[1] 汪苑,林錦國.幾種常用室內(nèi)定位技術(shù)的探討[J].中國儀器儀表,2011(2):54?57.
WANG Yuan, LIN Jinguo. Discussion of several common indoor location techniques [J]. China instrumentation, 2011(2): 54?57.
[2] CHEN Y T, YANG C L, CHANG Y K, et al. A RSSI?based algorithm for indoor localization using ZigBee in wireless sensor network [C]// Proceedings of the 15th International Conference on Distributed Multimedia Systems. San Francisco: [[s.n.]], 2009: 70?75.
[3] HALDER S J, PARK J G, KIM W. Adaptive filtering for indoor localization using ZigBee RSSI and LQI measurement [J]. Adaptive filtering applications, 2011(6): 305?324.
[4] CHEN R C, LIN Y H. Using ZeeBee sensor network with artifical neural network for indoor location [C]// 2012 Eighth International Conference on Natural Computation (ICNC). Chongqing: IEEE, 2012: 290?294.
[5] YAO Q M, WANG F Y, GAO H, et al. Location estimation in ZigBee Network based on fingerprinting [C]// 2007 IEEE International Conference on Vehicular Electronics and Safety (ICVES). Beijing: IEEE, 2007: 1?6.
[6] HUANG C N, CHAN C T. ZigBee?based indoor location system by k?nearest neighbor algorithm with weighted RSSI [J]. Procedia computer science, 2011, 5: 58?65.
[7] HUANG X, BARRALET M, SHARMA D. Accuracy of location identification with antenna polarization on RSSI [C]// Proceedings of the International MultiConference of Engineers and Computer Scientists. Hongkong: [s.n.], 2009: 1?6.
[8] 楊東勇,顧東袁,傅曉婕.一種基于RSSI相似度的室內(nèi)定位算法[J].傳感技術(shù)學(xué)報(bào),2009,22(2):264?268.
YANG Dongyong, GU Dongyuan, FU Xiaojie. An indoor location algorithm based on RSSI similarity [J]. Journal of sensor technology, 2009, 22(2): 264?268.
[9] 王琦.基于RSSI測距的室內(nèi)定位技術(shù)[J].電子科技,2012,25(6):64?66.
WANG Qi. Indoor location technology based on RSSI distance measurement [J]. Journal of electronics, 2012, 25(6): 64?66.
[10] 李敏強(qiáng),徐博藝,寇紀(jì)淞.遺傳算法與神經(jīng)網(wǎng)絡(luò)的結(jié)合[J].系統(tǒng)工程理論與實(shí)踐,1999(2):65?69.
LI Minqiang, XU Boyi, KOU Jisong. Combination of genetic algorithms and neural networks [J]. Systems engineering?theory & practice,1999(2): 65?69.