,,
(安徽師范大學(xué)皖江學(xué)院,蕪湖 241000)
基于位置識別的服務(wù)(Location Based Services,LBS)正受到越來越多的關(guān)注,其中定位技術(shù)是實(shí)現(xiàn)LBS的關(guān)鍵。由于室內(nèi)無法使用GPS衛(wèi)星信號定位,所以在室內(nèi)定位方向上展開了大量的研究,產(chǎn)生了很多新興的方案,如基于紅外光、超寬帶、藍(lán)牙、WiFi、可見光等室內(nèi)定位技術(shù)。其中基于可見光的定位技術(shù)具有能效高、抗干擾、又兼具照明及定位多種功能,因此與其它方式相比具有良好的發(fā)展前景。
該可見光定位裝置模型主要由LED照明設(shè)備、LCD顯示設(shè)備、嵌入式開發(fā)板與圖像傳感器組成,該模型方案整體框架圖如圖1所示。
通過圖像傳感器不斷采集LED照明設(shè)備的數(shù)據(jù)信息,嵌入式開發(fā)板經(jīng)過軟件算法處理得到傳感器的相對位置,并將坐標(biāo)信息及區(qū)域信息發(fā)送到LCD上顯示。
圖1 方案整體框架圖
定位裝置模型部分(如圖2所示)由一個(gè)不小于80 cm×80 cm×80 cm 的立方空間(包含頂部、底部和3 個(gè)側(cè)面)構(gòu)成,頂部平面放置3個(gè)白光 LED,其擺放位置位于圖3黃色圓點(diǎn)處,由 LED 控制電路進(jìn)行控制和驅(qū)動;底部平面繪制縱橫坐標(biāo)線(間隔5 cm),并分為A、B、C、D、E五個(gè)區(qū)域(如圖3所示)。測量電路及LCD顯示設(shè)備與定位裝置隔離,僅將圖像傳感器放置于裝置底部進(jìn)行采集。
圖2 可見光室內(nèi)定位裝置模型示意圖
圖3 模型底部平面坐標(biāo)區(qū)域圖
嵌入式開發(fā)板部分采用Raspberry Pi作為開發(fā)板。開發(fā)板外形只有信用卡大小,卻具備很強(qiáng)大的功能,能滿足該定位裝置模型的開發(fā)需求。
本次選用的是其3代B型產(chǎn)品,其采用Broadcom BCM2837 64位核心處理器,主頻頻率為1.2 GHz,內(nèi)存部分采用1 GB LPDDR2,以及40針腳的GPIO擴(kuò)展口。
采用樹莓派專用CSI接口5MP攝像頭,同時(shí)在鏡頭部分加裝無畸變廣角鏡頭,增加攝像頭的可視角度,能基本達(dá)到在測試環(huán)境下圖像傳感器處于任意位置都能夠采集到頂部平面三個(gè)白光LED的位置信息這一目標(biāo)。
LED電源控制部分采用L298N驅(qū)動電路構(gòu)成。L298N驅(qū)動電路具有較強(qiáng)的驅(qū)動能力和PWM調(diào)控功能,可以通過PWM波控制其輸出占空比,從而調(diào)節(jié)三個(gè)白光LED的發(fā)光強(qiáng)度。
顯示部分采用通用7英寸1024×600分辨率HDMI電容顯示屏,采用HID協(xié)議,在配合Raspberry Pi使用時(shí),支持單點(diǎn)觸控,且免裝驅(qū)動,支持背光控制。
通過圖像傳感器每隔700 ms捕獲一次頂部白光LED的圖像,通過軟件處理計(jì)算出三個(gè)LED的位置信息,根據(jù)圖像傳感器成像法,計(jì)算出傳感器的相對位置。圖像傳感器采集LED位置示意圖如圖4所示。
圖4 圖像傳感器采集LED位置示意圖
得到具體坐標(biāo)位置A(x1,y1)、位置B(x2,y2)、位置C(x3,y3)后,根據(jù)三角形質(zhì)心算法得到坐標(biāo)((x1+x2+x3)/3),(y1+y2+y3)/3),再與原始中心點(diǎn)(x0,y0)做差,按照一定比例進(jìn)行縮放得到真實(shí)傳感器位置,從而實(shí)現(xiàn)定位。
利用脈沖寬度調(diào)制原理控制白光LED的發(fā)光強(qiáng)度,通過圖像傳感器分析采集到的三個(gè)白光LED的灰度信息,從而判斷并處理信息。
圖5 圖像傳感器捕獲圖像
可見光的光譜波長范圍為380~760 nm,通過攝像頭采集到的圖像會得到明顯光斑效應(yīng)。捕獲圖像如圖5所示。
實(shí)時(shí)獲取圖像信息代碼如下:
BufferedImagebuffImage=new BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY);
for (inti = 0; i < width; i++){
for (int j = 0; j < height; j++) {
intrgb = image.getRGB(i, j);
buffImage.setRGB(i, j, rgb);
}
}
圖6 處理后圖像
對于這種圖像來說,計(jì)算三點(diǎn)坐標(biāo)是極其困難的,所以在這里進(jìn)行色域轉(zhuǎn)換,并進(jìn)行濾波及二值化操作??梢园l(fā)現(xiàn)該圖像具有中心亮度偏大,而后以發(fā)光點(diǎn)為圓心逐漸擴(kuò)散。為了確認(rèn)這三個(gè)位置,可以逐行掃描圖像,記錄圖像高亮區(qū)域,并設(shè)置一定閾值,記錄亮度連續(xù)處于一定大小的區(qū)域,通過加權(quán)平均算法計(jì)算出光斑坐標(biāo)。處理后圖像如圖6所示。代碼如下:
for (inti = 0; i < width; i++){
for (int j = 0; j < height; j++){
intrgb = buffImage.getRGB(i, j);
if (rgb == -1){
System.out.println(i + "," + j);
if (flag == 0 | i - recode <= 1) {
flag = 1;
recode = i;
times++;
widthadd += i;
heightadd += j;
}
else{
xPoint[xy] = widthadd / times;
yPoint[xy] = heightadd / times;
xy++;
flag = 0;
times = 0;
widthadd = 0;
heightadd = 0;
recode = 0; }
}
}
當(dāng)遇到攝像頭采集失敗或并未在圖像中正確找到三點(diǎn)坐標(biāo)的情況時(shí)進(jìn)行異常處理,代碼如下:
xPoint[xy] = widthadd / times;
yPoint[xy] = heightadd / times;
if(times==0){
System.out.println("error!!! No light");
System.exit(0);
}
在未安裝廣角鏡頭的情況下,在可視角度為65°的情況下很容易出現(xiàn)采集頂部LED不完全的情況,在加裝無畸變廣角鏡頭后,可視角度變大,但當(dāng)圖像傳感器處于邊界部分時(shí)仍可能出現(xiàn)丟失一個(gè)白光LED的情況,這時(shí)定位會出現(xiàn)較大偏差,需要在算法中補(bǔ)充丟失定位點(diǎn)的情況,這里采用模糊算法,在丟失一點(diǎn)的情況下根據(jù)剩余兩點(diǎn)所處邊根據(jù)一定角度進(jìn)行補(bǔ)點(diǎn)。在圖像傳感器只捕獲到一個(gè)點(diǎn)或者未捕捉到點(diǎn)的情況下進(jìn)行報(bào)錯(cuò)處理,提高程序健壯性。
同時(shí),在擺放傳感器時(shí)會出現(xiàn)測量正方向與實(shí)際正方向不重合的問題,圖像得到的三點(diǎn)坐標(biāo)與實(shí)際會有一定的偏差,這需要人為干預(yù)將圖像傳感器擺放至坐標(biāo)系方向,提高定位精度。
在不同環(huán)境下,由于光照條件不同,以及LED驅(qū)動電路的驅(qū)動能力不同,在計(jì)算對應(yīng)點(diǎn)時(shí)要根據(jù)現(xiàn)場情況更改程序中的比例系數(shù)值,以提高定位精度,若室內(nèi)光照強(qiáng)度較高時(shí),可以適當(dāng)提高LED驅(qū)動電路亮度,以對抗自然光的干擾。
程序整體流程圖如圖7所示。
通過嵌入式開發(fā)板處理圖像傳感器采集到的圖像,經(jīng)過濾波處理得到較為良好的圖像,圖像成功識別后進(jìn)行十字坐標(biāo)的建立,并通過多次采集取均值的方法校正所得到的點(diǎn),并與原坐標(biāo)系進(jìn)行對比,達(dá)到定位的目標(biāo),最后將信息發(fā)送到顯示屏上,完成此次定位并開始下次定位。
可見光定位整體流程圖如圖8所示。
圖7 程序流程圖
圖8 可見光定位整體流程圖
安裝在模型頂部的三路白光LED,在提供照明的同時(shí)也在控制電路的驅(qū)動下發(fā)送光信息,圖像傳感器采集到這三個(gè)點(diǎn)并進(jìn)行質(zhì)心算法處理,得到焦點(diǎn)坐標(biāo)與原點(diǎn)坐標(biāo)進(jìn)行處理,并將坐標(biāo)及附加的區(qū)域及正誤信息發(fā)送到LCD顯示屏上,完成整個(gè)定位過程。
顯示結(jié)果部分主要由4個(gè)部分組成。首先是由圖像傳感器捕獲到的三個(gè)白光LED具體的坐標(biāo)信息;接著是通過算法計(jì)算出傳感器坐標(biāo)位置,精度達(dá)到0.1 cm;然后是傳感器的位置信息,由于整個(gè)坐標(biāo)系被劃分成5大區(qū)域,分別標(biāo)識成A、B、C、D、E,這里可以直觀地顯示傳感器所在的大致區(qū)域,同時(shí)有上下左右指示,直觀顯示信息;最后是本次定位所花費(fèi)的時(shí)間,以ms為單位。若出現(xiàn)意外情況未獲取到正確的可見光坐標(biāo)點(diǎn),會顯示本次定位出錯(cuò)。LCD顯示結(jié)果如圖9所示。
圖9 LCD顯示結(jié)果示意圖
為了更好地測試該套裝置模型的定位性能,保證測試結(jié)果真實(shí)可靠,設(shè)置了5組測試方案,從定位區(qū)域、定位角度、定位精度等不同方向測試裝置。
為了確保該裝置能夠真實(shí)模擬實(shí)際環(huán)境,將測試環(huán)境設(shè)置為關(guān)閉照明燈,打開窗簾,自然采光,避免陽光直射的條件。
測試方案1:圖像傳感器放置在B、D區(qū)域,區(qū)分其位于橫坐標(biāo)軸的上、下區(qū)域。測試結(jié)果如表1所列。
表1 測試方案1結(jié)果
測試方案2:圖像傳感器放置在C、E區(qū)域,區(qū)分其位于縱坐標(biāo)軸的左、右區(qū)域。測試結(jié)果如表2所列。
表2 測試方案2結(jié)果
測試方案3:將圖像傳感器放置在A區(qū)域,顯示并記錄其位置坐標(biāo)值,且要求絕對誤差不大于10 cm。測試結(jié)果如表3所列。
測試方案4:將圖像傳感器放置在B、C、D、E區(qū)域,顯示并記錄其位置坐標(biāo)值,且要求絕對誤差不大于10 cm。測試結(jié)果如表4所列。
表3 測試方案3結(jié)果 單位/cm
表4 測試方案4結(jié)果 單位/cm
測試方案5:將圖像傳感器放置在底部平面的任意區(qū)域,顯示并記錄其位置坐標(biāo)值,且要求絕對誤差不大于3 cm。測試結(jié)果如表5所列。
表5 測試方案5結(jié)果 單位/cm
上述測試結(jié)果表明,該套可見光定位裝置能夠正確實(shí)現(xiàn)定位,顯示分辨率為0.1 cm的情況下實(shí)現(xiàn)了絕對誤差小于3 cm,每次定位時(shí)間基本控制在1000 ms以內(nèi)。在實(shí)際測試過程中,采用低功耗方案,在LED控制電路部分采用自制的12 V單電源供電系統(tǒng),供電功率通過 儀器測試僅達(dá)3W,能夠在正常照明的情況下達(dá)到定位??偟膩碚f該系統(tǒng)具有節(jié)能、高效、定位精度較高等特性。同時(shí)該裝置也存在一些缺陷,如抗干擾能力不夠強(qiáng),在面對強(qiáng)烈太陽光干擾下會出現(xiàn)光源重疊、設(shè)備無法定位的情況。
圖像傳感器的分辨率及可視角度也會影響定位的精度,這需要后續(xù)硬件及算法的繼續(xù)優(yōu)化來提升整體裝置的性能。
[1] 張曉鋒,王敏,王瑾.基于可見光的室內(nèi)定位的研究現(xiàn)狀與發(fā)展[J].激光與光電子學(xué)進(jìn)展,2017,54(10).
[2] 胡益清.基于可見光的室內(nèi)定位與智能感知[D].合肥:中國科學(xué)技術(shù)大學(xué),2017.
[3] 張永安.基于樹莓派的智能家居系統(tǒng)[J].電子世界,2016(15):53.
[4] 蘇祥林,陳文藝,閆灑灑.基于樹莓派的物聯(lián)網(wǎng)開放平臺[J].電子科技,2015,28(9):35-37,41.
[5] 趙嘉琦,遲楠.室內(nèi)LED可見光定位若干關(guān)鍵技術(shù)的比較研究[J].燈與照明,2015,39(1):34-41.