楊世權(quán) 張謙述 胡 玥
(西華師范大學(xué)電子信息工程學(xué)院, 四川 南充 637000)
GPS在室外的定位效果較好,在室內(nèi)則由于衛(wèi)星信號(hào)受墻壁等障礙物的阻擋而衰減,定位精度較低。因此,實(shí)現(xiàn)對(duì)室內(nèi)的精準(zhǔn)定位是亟待解決的難題。LED可見(jiàn)光具有可用頻帶寬、不受電磁場(chǎng)干擾、設(shè)備搭建容易、誤碼率低等優(yōu)點(diǎn),并且LED響應(yīng)快,可以高頻調(diào)制,又是綠色能源,使用范圍廣泛,因此,基于LED可見(jiàn)光的定位技術(shù)將成為提高室內(nèi)定位精度的重要選擇。
在這方面,國(guó)內(nèi)外已經(jīng)有許多研究成果。文獻(xiàn)[1]提出了一種基于圖像傳感器的可見(jiàn)光定位系統(tǒng),可以測(cè)量目標(biāo)端的位置。不過(guò),圖像處理技術(shù)和算法較復(fù)雜。文獻(xiàn)[2]提出了一種基于TDOA的室內(nèi)可見(jiàn)光定位方法,通過(guò)測(cè)量接收不同信號(hào)的時(shí)間差來(lái)實(shí)現(xiàn)定位。但參考節(jié)點(diǎn)之間需要進(jìn)行時(shí)間同步,對(duì)硬件設(shè)備要求較高。文獻(xiàn)[3]提出的基于采集指紋的定位算法,需要采集大量指紋信息,工作量大。文獻(xiàn)[4]提出利用OFDM技術(shù),基于三角形定位算法來(lái)實(shí)現(xiàn)定位,證實(shí)了可見(jiàn)光實(shí)現(xiàn)定位的可行性。文獻(xiàn)[5]中介紹的選用高速相機(jī)接收信號(hào),基于萊文伯格-馬夸特(LM)算法實(shí)現(xiàn)定位的方法,最大誤差小于10 cm。但此方法對(duì)相機(jī)的性能要求高,而且誤差仍然較大。文獻(xiàn)[6]提出的基于 CDMA調(diào)制的室內(nèi)可見(jiàn)光定位技術(shù),可克服光源間的干擾,但編碼過(guò)程較復(fù)雜。文獻(xiàn)[7]提出了基于視覺(jué)信息的室內(nèi)可見(jiàn)光定位方法,但沒(méi)有考慮背景光及噪聲的影響。文獻(xiàn)[8]提出了改進(jìn)的加權(quán)三邊定位算法,但沒(méi)有進(jìn)行測(cè)試驗(yàn)證。文獻(xiàn)[9]提出了一種利用室內(nèi)照明LED發(fā)光強(qiáng)度實(shí)現(xiàn)室內(nèi)可見(jiàn)光定位的方法,并對(duì)定位設(shè)計(jì)方案進(jìn)行了測(cè)試,但其測(cè)試空間(80 cm×70 cm×40 cm)較小。
本次研究,通過(guò)借鑒有關(guān)研究成果,提出一種利用脈寬對(duì)LED光源的ID進(jìn)行編碼傳輸、基于RSSI來(lái)估測(cè)收發(fā)端投影距離的三燈定位方法。
基于RSSI測(cè)距,即根據(jù)接收信號(hào)強(qiáng)弱指標(biāo)來(lái)估測(cè)收發(fā)兩端投影距離。理論上,光信號(hào)由發(fā)送端向外傳播的過(guò)程中,其強(qiáng)度是逐漸變小的。因此,可以通過(guò)測(cè)量接收端光電壓值與收發(fā)端的投影距離數(shù)據(jù),用MATLAB擬合出光源的測(cè)距函數(shù)模型。依據(jù)該測(cè)距函數(shù)模型,只要獲得接收端接收的光電壓值,即可求出收發(fā)兩端對(duì)應(yīng)的投影距離。擬合測(cè)距函數(shù)如式(1)所示。
(1)
式中:d—— 收發(fā)兩端對(duì)應(yīng)的投影距離,cm;
H—— 光源的高度,cm;
U(0,0) —— 光源中心光電壓,mV;
U(x,y) —— 待測(cè)點(diǎn)的光電壓,mV。
假設(shè):給定3個(gè)發(fā)送端的底面投影坐標(biāo)為O1(a1,b1)、O2(a2,b2)和O3(a3,b3);接收端P到投影點(diǎn)的距離分別為d1、d2、d3,可根據(jù)式(1)獲得。由此,建立3個(gè)底面投影圓的方程組,方程組的解即為接收端的位置坐標(biāo)。方程組為:
(2)
室內(nèi)定位模型如圖1所示。設(shè)待求點(diǎn)P的坐標(biāo)為(x,y)。解方程組(2),可求出待測(cè)點(diǎn)的坐標(biāo)。
圖1 室內(nèi)定位模型
室內(nèi)可見(jiàn)光定位系統(tǒng)主要由發(fā)送端和接收端兩
部分組成。系統(tǒng)采用STM32F4單片機(jī)作為控制芯片。在發(fā)送端,首先單片機(jī)對(duì)3個(gè)LED的ID進(jìn)行脈寬編碼,然后經(jīng)時(shí)分復(fù)用發(fā)送給驅(qū)動(dòng)電路放大,驅(qū)動(dòng)LED發(fā)送光信號(hào)。在接收端,探測(cè)器把接收的光信號(hào)送給放大電路進(jìn)行放大,然后送至單片機(jī)AD端口進(jìn)行解碼與測(cè)壓;再將解碼的坐標(biāo)和測(cè)壓轉(zhuǎn)化后的距離代入式(2),求出待測(cè)點(diǎn)坐標(biāo),并用LCD顯示出來(lái)。系統(tǒng)總體框架如圖2所示。
2.2.1 發(fā)送端電路
發(fā)送端選用STM32F407作為處理芯片。它為 32位ARM處理器,最高頻率為72 MHz,閃存1 Mkb,SRAM為192 kb。內(nèi)部定時(shí)器共有14個(gè),每個(gè)定時(shí)器最多4個(gè)用于輸入捕獲輸出比較PWM或脈沖計(jì)數(shù)通道。該芯片優(yōu)勢(shì)突出,用于系統(tǒng)的脈寬調(diào)制和后續(xù)接收端對(duì)脈寬的捕獲,能夠滿足兩端需求。
圖2 室內(nèi)可見(jiàn)光定位系統(tǒng)框架
因?yàn)長(zhǎng)ED正常工作需150 mA電流驅(qū)動(dòng),故發(fā)送端選用NPN三極管來(lái)放大經(jīng)單片機(jī)編碼的輸出信號(hào)。發(fā)送端電路原理如圖3所示。
圖3 發(fā)送端電路原理
2.2.2 發(fā)送端程序
發(fā)送端程序設(shè)計(jì)流程為:開機(jī)啟動(dòng),進(jìn)行初始化配置,選用定時(shí)器3的1、2、3通道,設(shè)置好psc(時(shí)鐘預(yù)分頻數(shù))。然后,通過(guò)改變arr(自動(dòng)重裝值),產(chǎn)生3路不同的PWM波。第一路PWM波輸出后,對(duì)LED1進(jìn)行控制。接著時(shí)分復(fù)用,依次輸出其余兩路PWM波形,分別對(duì)LED2、LED3進(jìn)行控制[10]。3路PWM波輸出完畢后,進(jìn)入下一輪循環(huán)。發(fā)送端程序流程如圖4所示。
2.3.1 接收端電路
圖4 發(fā)送端程序流程
圖5 接收端電路原理圖
2.3.2 接收端程序
接收端程序設(shè)計(jì)流程為:首先開機(jī)啟動(dòng),進(jìn)行程序初始化。接著開啟輸入捕獲,同步后,檢測(cè)燈的ID。獲得檢測(cè)結(jié)果之后,開啟AD轉(zhuǎn)換,讀取對(duì)應(yīng)燈的光電壓值,代入測(cè)距函數(shù)模型,求出收發(fā)兩端距離。3個(gè)燈的距離都求出后,代入三邊定位算法方程,求出待測(cè)點(diǎn)位置坐標(biāo),并在LCD上進(jìn)行顯示。接收端程序流程如圖6所示。
考慮到調(diào)制的信號(hào)在空間傳輸中失真度要低、抗干擾能力要強(qiáng)、易實(shí)現(xiàn)等要求,本系統(tǒng)采用脈寬調(diào)制方式。脈寬調(diào)制(PWM)原理:通過(guò)控制電路開關(guān)器件的通斷,輸出一系列幅值相等的脈沖;通過(guò)對(duì)各脈沖的寬度按一定規(guī)則進(jìn)行調(diào)制,改變輸出電壓和頻率[11]。與其他調(diào)制技術(shù)相比,PWM技術(shù)易于用脈寬實(shí)現(xiàn)編碼,在無(wú)線信道中傳輸較穩(wěn)定,同時(shí)易于實(shí)現(xiàn)解碼。
圖6 接收端程序流程
為了使接收到的數(shù)據(jù)準(zhǔn)確,本系統(tǒng)設(shè)計(jì)的數(shù)據(jù)幀由6位構(gòu)成,脈寬調(diào)制的幀格式如圖7所示。
圖7 脈寬調(diào)制的幀格式
幀中第一位為同步位,第二位為ID位。識(shí)別不同的LED光源,通過(guò)不同的脈寬對(duì)應(yīng)不同的ID號(hào)來(lái)實(shí)現(xiàn)。第三位為ID反碼,校驗(yàn)前面接收到的ID是否正確。第四、五位為測(cè)壓區(qū),根據(jù)電壓幅值高低代入測(cè)距函數(shù)模型,估測(cè)收發(fā)端距離。第六位為停止位,用低電平表示,用來(lái)分隔下一個(gè)數(shù)據(jù)幀。脈寬調(diào)制的軟件實(shí)現(xiàn)過(guò)程是:利用單片機(jī)的定時(shí)器3的任意3個(gè)通道,產(chǎn)生3路不同的PWM波形,在設(shè)置好psc(時(shí)鐘預(yù)分頻數(shù))后,通過(guò)改變arr(自動(dòng)重裝值)來(lái)控制占空比,最后用三個(gè)IO口輸出。
解碼采用STM32的TIM5輸入捕獲來(lái)實(shí)現(xiàn)。具體配置過(guò)程為:先進(jìn)行時(shí)鐘的初始化,將PA0復(fù)用為TIM5,定時(shí)器采用向上計(jì)數(shù)、上升沿捕獲;再設(shè)置psc、arr;最后開啟定時(shí)器,使能中斷,搶占優(yōu)先級(jí)設(shè)為0級(jí)。當(dāng)碼型的上升沿到來(lái)時(shí),開啟定時(shí)器5,計(jì)量時(shí)間即脈寬;下降沿來(lái)臨時(shí),關(guān)閉計(jì)時(shí)。脈寬若與同步碼脈寬一致,則表示已同步。繼續(xù)捕獲下一脈沖,進(jìn)行ID位識(shí)別,匹配LED光源。接著捕獲下一脈沖,進(jìn)行ID反碼校驗(yàn)。校驗(yàn)成功,則表示ID識(shí)別正確,調(diào)用RAM中預(yù)先存儲(chǔ)的位置坐標(biāo)信息。接著關(guān)閉定時(shí)器,開啟AD轉(zhuǎn)換,讀取脈沖電壓平均值,代入測(cè)距函數(shù)模型測(cè)距(即收發(fā)端的投影距離)。
實(shí)驗(yàn)測(cè)試場(chǎng)景如圖8所示。發(fā)送端由單片機(jī)、驅(qū)動(dòng)電路、LED組成,接收端由光電管、放大電路、單片機(jī)、LCD等組成。
圖8 實(shí)驗(yàn)測(cè)試場(chǎng)景
MATLAB畫出光源的測(cè)距函數(shù)模型,如圖9所示。
從圖9可看出,實(shí)測(cè)電壓點(diǎn)落在擬合的測(cè)距函數(shù)曲線上及其附近,說(shuō)明兩者之間誤差小,測(cè)距函數(shù)擬合效果好。因此,可以用擬合的測(cè)距函數(shù)式(1)來(lái)估測(cè)收發(fā)兩端的投影距離。
3路編碼信源經(jīng)探測(cè)器接收后的輸出波形,如圖10所示。從圖中可看出,3路信號(hào)在不同的時(shí)間段循環(huán)發(fā)送、互不干擾,放大電路工作正常,信號(hào)輸出穩(wěn)定,頻率為1 kHz。
圖9 測(cè)距函數(shù)模型
已知探測(cè)器測(cè)量精度為5 cm。搭建80 cm×80 cm×80 cm的測(cè)試空間(見(jiàn)圖8),將3個(gè)燈的位置按等腰三角形固定:LED1(-35,30,80),LED2(35,30,80),LED3(0,-30,80)。以底面的中心為坐標(biāo)原點(diǎn),建立三維坐標(biāo)系。在底面選取90個(gè)點(diǎn)進(jìn)行實(shí)測(cè)。實(shí)驗(yàn)環(huán)境的最大信噪比為23 dB,最小信噪比為14 dB,滿足通信要求。根據(jù)方程組式(2)估測(cè)目標(biāo)點(diǎn)位置,并用MATLAB將每個(gè)測(cè)量點(diǎn)的誤差用高度表示出來(lái)。實(shí)測(cè)數(shù)據(jù)中,最大誤差為3.7 cm,最小誤差為1.42 cm,平均誤差為3.38 cm,均方差為1.57 cm。三燈底面投影區(qū)域內(nèi)實(shí)測(cè)定位誤差分布,如圖11所示。從圖可知,靠近三角形中心的位置定位精度較高,遠(yuǎn)離三角形中心的位置定位精度較低。通過(guò)基于PWM技術(shù)的三燈定位算法,可以把誤差由5 cm降為3.7 cm。
圖10 3路信源輸出波形
圖11 實(shí)測(cè)定位誤差分布
在現(xiàn)實(shí)的三燈定位系統(tǒng)中,光信號(hào)在空間傳輸過(guò)程中易受外界環(huán)境干擾,從而影響定位精度。為解決這個(gè)問(wèn)題,我們提出了脈寬編碼的解決方法。用此方法,可有效抵抗環(huán)境干擾,光信號(hào)傳輸距離遠(yuǎn)、失真度小,而且易于后續(xù)解碼。基于RSSI技術(shù),采集收發(fā)兩端不同距離的光電壓數(shù)據(jù),擬合出收發(fā)兩端距離與光電壓的關(guān)系函數(shù)模型,用來(lái)計(jì)算測(cè)量距離。在80 cm×80 cm×80 cm定位空間中進(jìn)行實(shí)驗(yàn)測(cè)試,實(shí)測(cè)定位誤差為3.7 cm,表明此方法是可行的。本次研究,只對(duì)不同LED光源的ID進(jìn)行了編碼傳輸;對(duì)燈的位置坐標(biāo)進(jìn)行編碼傳輸是下一步研究的方向。