蔣偉斌, 黃春暉,2
(1.福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350116; 2.陽(yáng)光學(xué)院 人工智能學(xué)院,福建 福州 350115)
無(wú)線傳感器網(wǎng)絡(luò)(wireless sensor networks,WSNs)定位技術(shù)是物聯(lián)網(wǎng)產(chǎn)業(yè)發(fā)展的基石[1]。室內(nèi)定位一直是物聯(lián)網(wǎng)產(chǎn)業(yè)當(dāng)中一大難點(diǎn),在室外可采用先進(jìn)的全球衛(wèi)星定位系統(tǒng)(global positioning system,GPS)、北斗衛(wèi)星等進(jìn)行精準(zhǔn)定位,精度可達(dá)到1 m級(jí)別[2]。但由于衛(wèi)星信號(hào)對(duì)城市當(dāng)中的鋼筋混凝結(jié)構(gòu)的穿透力差,因此,在地下或者相對(duì)密閉空間中定位能力弱。在室內(nèi)定位常采用無(wú)線傳感網(wǎng)絡(luò)定位技術(shù)解決GPS對(duì)室內(nèi)定位應(yīng)用中的空白,為大型商超或大規(guī)模自動(dòng)化工廠提供必要的位置指示和導(dǎo)航方案[3]。
WSNs當(dāng)中常用于室內(nèi)定位的有到達(dá)時(shí)間(time of arrival,ToA)、到達(dá)信號(hào)時(shí)間差(time difference of arrival,TDoA)、飛行時(shí)間(time of flight,ToF)及接收信號(hào)強(qiáng)度指示(received signal strength indication,RSSI)等信號(hào)進(jìn)行測(cè)距定位。但由于這些方式對(duì)兩點(diǎn)之間的距離測(cè)量存在較大的誤差,所以需要更多的濾波算法提高測(cè)量的準(zhǔn)確度。文獻(xiàn)[4]中提到采用三種濾波預(yù)處理方式對(duì)RSSI數(shù)據(jù)處理,但實(shí)驗(yàn)結(jié)果表明采用的濾波算法改善的效果有限。文獻(xiàn)[5]對(duì)Shadowing模型進(jìn)行分析,采用貝葉斯處理,在一定程度上提升精度,但算法復(fù)雜程度高。除濾波算法外還需要更多的設(shè)備[6],增加了定位識(shí)別的時(shí)間也不易便攜化。除了采用雙目攝像頭極大提高了測(cè)量的準(zhǔn)確性同時(shí)也增加WSNs以外,文獻(xiàn)[7]使用了視覺(jué)處理的方法進(jìn)行算的定位,復(fù)雜性,對(duì)硬件要求也更高。
本文針對(duì)目前室內(nèi)定位算法中WSNs算法精度不高以及視覺(jué)類型中算法復(fù)雜對(duì)硬件要求高的問(wèn)題,提出RSSI與單目攝像相結(jié)合的方式,形成一種融合算法。
系統(tǒng)由藍(lán)牙與單目攝像頭結(jié)合而成的信標(biāo)節(jié)點(diǎn)和未知節(jié)點(diǎn)組成,系統(tǒng)的節(jié)點(diǎn)(已知和未知)藍(lán)牙部分都采用CSR的BC417芯片構(gòu)建,通過(guò)指令切換模式,信標(biāo)節(jié)點(diǎn)裝備單目攝像頭做實(shí)時(shí)圖像采集。未知信號(hào)節(jié)點(diǎn)配備有紅色LED輔助定位。兩個(gè)節(jié)點(diǎn)通過(guò)分時(shí)檢測(cè)雙方的RSSI信號(hào)并對(duì)數(shù)據(jù)傳輸。系統(tǒng)對(duì)Shadowing模型改進(jìn),經(jīng)過(guò)高斯和卡爾曼濾波處理并建立離線指紋庫(kù)等預(yù)處理后,信標(biāo)節(jié)點(diǎn)通過(guò)改進(jìn)Shadowing模型得到兩點(diǎn)距離值,利用改進(jìn)K最近鄰(K nearest neighbour,KNN)算法預(yù)定位空間位置,攝像頭采集圖像精確定位未知節(jié)點(diǎn)的坐標(biāo)。
采用帶誤差的Shadowing模型,對(duì)模型進(jìn)行一定的優(yōu)化和驗(yàn)證,得到改進(jìn)后模型的正確性和優(yōu)越性,改進(jìn)模型為
PL(d)=PL(d0)+10(n+f(n))lg(d/d0)
(1)
由于室內(nèi)空間的復(fù)雜性,導(dǎo)致原始數(shù)據(jù)不穩(wěn)定,因此系統(tǒng)采用高斯濾波進(jìn)行有效值的篩選與卡爾曼的平滑濾波效果配合,使得RSSI數(shù)據(jù)穩(wěn)定并接近實(shí)際值[8]。原始數(shù)據(jù)通過(guò)高斯濾波選取發(fā)生概率高的數(shù)據(jù)并對(duì)選取的值進(jìn)行加權(quán)平均處理,高斯分布函數(shù)為
(2)
選取合適的PRSSI概率臨界值,對(duì)RSSI數(shù)據(jù)進(jìn)行有效的篩選,如式(3)~式(5)所示。PRSSI值為[0.72,1.0]時(shí),效果最佳,通過(guò)如下公式計(jì)算組內(nèi)加權(quán)平均值
(3)
(4)
(5)
式中N為樣本容量,ωt為數(shù)據(jù)標(biāo)記。
由圖1(a)表明,經(jīng)高斯濾波后數(shù)據(jù)有明顯穩(wěn)定。為了進(jìn)一步優(yōu)化數(shù)據(jù),引入卡爾曼濾波算法??柭惴ǖ螖?shù)少,輸出結(jié)果平滑穩(wěn)定??柭鼮V波算法分為兩部分:預(yù)測(cè)和更新。經(jīng)過(guò)卡爾曼濾波后的數(shù)據(jù)如圖1(b)所示。由文獻(xiàn)[9]可得卡爾曼濾波方程為
圖1 濾波預(yù)處理結(jié)果
P(t|t-1)=P(t-1|t-1)+Q
(6)
(7)
M(t|t)=M(t|t-1)+KG(t)[y(t)-M(t|t-1)]
(8)
P(t|t-1)=(1-KG(t)×P(t|t-1))
(9)
經(jīng)過(guò)濾波預(yù)處理后的數(shù)據(jù)收斂性和平滑度明顯提高。為了使數(shù)據(jù)更接近真實(shí)值,采用差分模型對(duì)節(jié)點(diǎn)之間的數(shù)據(jù)進(jìn)行再次篩選。假設(shè)在同一時(shí)空中,節(jié)點(diǎn)之間的環(huán)境因素不變,各自數(shù)據(jù)相同,差分模型為
PL(Δd)=PL(da)-PL(db)=10nlg(da/db)
(10)
當(dāng)da與db相同時(shí),認(rèn)為RSSI數(shù)據(jù)有效并進(jìn)行加權(quán)平均處理后。經(jīng)過(guò)差分處理篩選結(jié)果如圖2(a)所示,數(shù)據(jù)穩(wěn)定且接近真實(shí)值。由圖2(b)可得,數(shù)據(jù)擬合曲線與真實(shí)值接近。
圖2 處理結(jié)果
系統(tǒng)只采用一個(gè)信標(biāo)節(jié)點(diǎn)對(duì)未知節(jié)點(diǎn)定位,所以,需要對(duì)所在空間建立有于RSSI信號(hào)的指紋庫(kù)輔助定位,單目攝像頭進(jìn)行圖像采集與處理做準(zhǔn)備。指紋法分離線和在線兩個(gè)階段,前者為指紋庫(kù)建立,是將N組位置與特征相關(guān)聯(lián)系進(jìn)行構(gòu)建成為一個(gè)庫(kù),后者是在前者的階段上,進(jìn)行查詢匹配進(jìn)行空間定位[10]。系統(tǒng)的指紋庫(kù)采構(gòu)建一組位置與特征之間的關(guān)系,使用時(shí)尋找與指紋庫(kù)中特征相近的值,對(duì)未知節(jié)點(diǎn)初步定位。
以主設(shè)備端為原點(diǎn),建立空間坐標(biāo)系xyz,且取y軸的正半軸。各坐標(biāo)軸的步長(zhǎng)為0.5 m,在每個(gè)節(jié)點(diǎn)從設(shè)備接收此時(shí)的RSSI信號(hào)數(shù)值。將接收到的信號(hào)強(qiáng)度與各個(gè)坐標(biāo)節(jié)點(diǎn)對(duì)應(yīng),形成一組的離線指紋庫(kù),如表1。
表1 RSSI離線指紋庫(kù)
其中,x∈[-5,5],y∈[0,10],z∈[-1.5,1.5]。信標(biāo)節(jié)點(diǎn)在距離地面1.5 m處,監(jiān)測(cè)范圍如圖3(a)所示,整個(gè)空間當(dāng)中共有1 617個(gè)點(diǎn)并對(duì)每個(gè)節(jié)點(diǎn)進(jìn)行測(cè)量,得到數(shù)據(jù)錄入在指紋庫(kù)中,完善離線指紋庫(kù)。指紋庫(kù)的建立使得定位時(shí)間縮短并且提高精度。
指紋庫(kù)建立完成后,將RSSI信號(hào)經(jīng)過(guò)預(yù)處理的數(shù)據(jù)轉(zhuǎn)換為距離值,轉(zhuǎn)換公式為
(11)
KNN算法常用于二維類聚情況下,在三維空間的適用性差,因此,改進(jìn)KNN算法使得適用三維甚至多維平面,快速定位未知節(jié)點(diǎn)的空間范圍。改進(jìn)KNN算法需要先構(gòu)建一個(gè)三維構(gòu)架空間(K-D樹(shù)),系統(tǒng)以x軸為父節(jié)點(diǎn),y和z軸作為空間的分隔點(diǎn)。得到RSSI的特征與指紋庫(kù)中的特征進(jìn)行x軸的二叉查找,生成搜索的路線,再進(jìn)行回溯查找。再對(duì)y和z軸空間的進(jìn)行分割平面,最后確定出K個(gè)近鄰點(diǎn)。文獻(xiàn)[11]指出常用的歐幾里得距離進(jìn)行查找,使得公式適用于三維空間,對(duì)距離公式進(jìn)行擴(kuò)展為
(12)
系統(tǒng)取K的取值為4(經(jīng)驗(yàn)值),進(jìn)行運(yùn)算處理后,確定未知節(jié)點(diǎn)初步確定的空間范圍之中,這個(gè)范圍可以為非連續(xù)空間,但兩兩相互對(duì)稱。值用包含未知節(jié)點(diǎn)的空間節(jié)點(diǎn)用笛卡爾坐標(biāo)系表示,空間節(jié)點(diǎn)覆蓋大小為r=0.5 m的球體。表2為改進(jìn)KNN實(shí)驗(yàn)結(jié)果。
表2 數(shù)據(jù)處理結(jié)果
經(jīng)過(guò)改進(jìn)KNN算法后,得到數(shù)據(jù)包含實(shí)際的點(diǎn)。與窮舉法相比,速度快、更精確且結(jié)果數(shù)量少。
文獻(xiàn)[12]簡(jiǎn)介幾種攝像頭測(cè)距方式[13],系統(tǒng)以單目攝像頭三角測(cè)距法為基礎(chǔ),結(jié)合RSSI轉(zhuǎn)換的距離對(duì)未知節(jié)點(diǎn)進(jìn)行精準(zhǔn)定位。攝像頭以水平方式放置,對(duì)未知節(jié)點(diǎn)進(jìn)行拍攝。有文獻(xiàn)[14]通過(guò)像素法得到焦距,利用式(13)得到物平面與像平面的直線距離
(13)
式中F為相機(jī)焦距,W為物體的寬度,L為改變位置后的距離,K為改變位置后同一個(gè)物體在圖像中所占的像素點(diǎn)。
圖3(b)為空間當(dāng)中物體與攝像頭成像平面之間的關(guān)系。在焦距與像構(gòu)成的三角形與物與直線距離構(gòu)成的三角形呈現(xiàn)相似關(guān)系。則可由式 (13)和RSSI轉(zhuǎn)換的距離RSSId按照幾何特性得到兩個(gè)幾何圖形之間的關(guān)系為
圖3 空間定位示意
(14)
經(jīng)過(guò)公式推導(dǎo)得到物在實(shí)際空間中的X,Y,Z坐標(biāo)。再通過(guò)此時(shí)物在成像平面當(dāng)中的像素寬度K,按照直線三角法方式推導(dǎo)物在軸線的大致距離,再根據(jù)像在平面軸線的距離對(duì)其進(jìn)行自適應(yīng)比例放大得到直線三角法估計(jì)的坐標(biāo)。將直線三角法坐標(biāo)與改進(jìn)三角法坐標(biāo)進(jìn)行加權(quán)融合,如式(15),其中a為經(jīng)驗(yàn)值,得到最終的空間定位坐標(biāo)
(15)
系統(tǒng)采用CSR的BC417模組作為RSSI測(cè)量及節(jié)點(diǎn)之間的通信載體,發(fā)射功率4 dBm。未知節(jié)點(diǎn)采用STM8,紅色LED以及鋰電池搭建而成,信標(biāo)節(jié)點(diǎn)則采用STM32,OV5640高清攝像頭、屏幕和外部SRAM搭建。信標(biāo)節(jié)點(diǎn)采集的圖像為720 P大小空間,控制器在168 MHz驅(qū)動(dòng)下,圖像以BMP數(shù)據(jù)格式保存至外部SRAM當(dāng)中,原圖像也可在屏幕顯示。圖4為系統(tǒng)實(shí)物及框架流程圖。
圖4 系統(tǒng)實(shí)物及框架流程圖
在5 m×10 m×3 m的室內(nèi)空間進(jìn)行實(shí)驗(yàn),將信標(biāo)節(jié)點(diǎn)固定在高度為1.5 m,在軸線1 m處標(biāo)定A值,并在軸線上每個(gè)0.5 m處確定最后n值,空間中每隔0.5 m為一個(gè)間距節(jié)點(diǎn),進(jìn)行RSSI數(shù)據(jù)采集,并建立離線指紋庫(kù),前期準(zhǔn)備工作完成。任意選取空間節(jié)點(diǎn)(1.5,4.5,0.5)m放置未知節(jié)點(diǎn)設(shè)備并通過(guò)專業(yè)儀器確定該點(diǎn)RSSI信號(hào)值為-48 dBm,圖5為在該點(diǎn)未處理的信號(hào)值與經(jīng)過(guò)預(yù)處理后的信號(hào)值對(duì)比,可以看出,經(jīng)過(guò)預(yù)處理后的RSSI信號(hào)值更加收斂波定性小,接近真實(shí)值。
圖5 預(yù)處理結(jié)果比對(duì)
在實(shí)驗(yàn)空間中多次測(cè)量得到100組數(shù)據(jù),將預(yù)處理后的結(jié)果通過(guò)改進(jìn)KNN算法的構(gòu)建K-D樹(shù)后,數(shù)據(jù)輸出后對(duì)準(zhǔn)確率進(jìn)行識(shí)別,試驗(yàn)點(diǎn)在改進(jìn)KNN算法輸出結(jié)果的概率為98 %。結(jié)果表明,改進(jìn)KNN算法的精度高、用時(shí)短。分別采用窮舉法和改進(jìn)KNN算法,在MATLAB中,窮舉法篩選出來(lái)的數(shù)量和時(shí)間分別為4~58個(gè)和20 s以上,采用改進(jìn)KNN算法篩選出結(jié)果為4個(gè)和10 ms。由此可見(jiàn)采用改進(jìn)KNN算法得到的結(jié)果優(yōu)于窮舉法。
在測(cè)試空間中的節(jié)點(diǎn)(-1.5,8,0)m放置直徑為10 cm的紅色紙片作為對(duì)比物,將未知節(jié)點(diǎn)放置于空間中任意位置,測(cè)試空間如圖6(a)所示,采集圖像后,將圖像針對(duì)R閾值進(jìn)行二值化操作得到如圖6(b)情況。在圖6(b)中,發(fā)射紅光的LED可以看到平面位置在對(duì)比物的左上角,對(duì)其放大后可得光斑的形狀為不規(guī)則圖形,采用四極限法進(jìn)行中心點(diǎn)確定,如圖6(c)所示,確定的坐標(biāo)點(diǎn)與改進(jìn)KNN算法中的匹配點(diǎn)進(jìn)行比對(duì)篩選,得到距離最小最小值為初步定位點(diǎn),將初步定位點(diǎn)作為新的原點(diǎn),進(jìn)行精準(zhǔn)定位。
圖6 采集圖像及光斑處理
如圖7(a),在像平面中,以初步定位點(diǎn)作為新的坐標(biāo)原點(diǎn),根據(jù)新的原點(diǎn)出發(fā),根據(jù)像與實(shí)物之間的關(guān)系進(jìn)行比例平移,經(jīng)過(guò)坐標(biāo)轉(zhuǎn)換得到精準(zhǔn)的定位坐標(biāo)值。如圖7(b)定位完成后在屏幕上顯示出定位的笛卡爾坐標(biāo),多次試驗(yàn)結(jié)果如表3所示,在3 m范圍內(nèi)定位精度為2 %以內(nèi),3~10 m之間,定位精度5 %左右,需要的時(shí)間和設(shè)備比雙目攝像頭和無(wú)線傳感網(wǎng)絡(luò)定位的方式都低。
表3 實(shí)驗(yàn)結(jié)果
圖7 精準(zhǔn)定位簡(jiǎn)化圖
本文針對(duì)室內(nèi)空間定位精度低,設(shè)備多高精,算法復(fù)雜等問(wèn)題,提出改進(jìn)Shadowing模型和多種預(yù)處理方式對(duì)RSSI信號(hào)處理,經(jīng)圖像處理后得到定位點(diǎn)。通過(guò)對(duì)比實(shí)驗(yàn),所提方案與需要20個(gè)以上輔助信標(biāo)的傳統(tǒng)RSSI定位方法具有相同的效果,且減少了視覺(jué)空間定位的時(shí)間和算法的復(fù)雜度。最后達(dá)到高精度、定位時(shí)間短、設(shè)備要求低的算法,滿足近年來(lái)日常和工業(yè)當(dāng)中(如分揀等)精確定位場(chǎng)景。