SSI數(shù)據(jù)的積累,因而在同一個實(shí)測點(diǎn)位置 處系統(tǒng)狀態(tài)參數(shù)不發(fā)生變化,運(yùn)就意味著系統(tǒng)矩陣A和系統(tǒng)輸出矩陣C均為單位陣,因而系 統(tǒng)預(yù)測過程可W改寫為:
[0059] 第二步,卡爾曼濾波器的程序?qū)崿F(xiàn)。本發(fā)明用Ka;rman_Filte;r.m程序?qū)崿F(xiàn)了對 搭建的室內(nèi)環(huán)境中任何給定位置設(shè)備接收到的RSSI信號卡爾曼濾波的處理。首先利用 Matl油中的xmlread函數(shù)將設(shè)備接收到的N個通道各g組RSSI數(shù)據(jù)轉(zhuǎn)化為[NXg]的矩陣 數(shù)據(jù)Z形式讀??;之后對矩陣數(shù)據(jù)進(jìn)行初始化,需要說明的是運(yùn)里程序各初值的意義:
[0060] 字母k代表系統(tǒng)狀態(tài)變化的時(shí)間節(jié)點(diǎn),字母i代表觀測的通道編碼,每一個通道編 碼傳遞的數(shù)值指示了來自該通道接收到的藍(lán)牙Beacon的RSSI。
[0061] xhat是[NXg]矩陣,表示對RSSI的后驗(yàn)估計(jì)值,即在k時(shí)刻,結(jié)合當(dāng)前RSSI的測 量值與k-1時(shí)刻RSSI先驗(yàn)估計(jì),得到的估計(jì)值更新,對應(yīng)于狀態(tài)方程中的X,初始化時(shí)候?qū)?該矩陣第一個元素置零; 陽06引xhatminus是[NXg]矩陣,表示RSSI的先驗(yàn)估計(jì),即在k-1時(shí)刻,對k時(shí)刻RSSI做出的估計(jì),對應(yīng)于狀態(tài)方程中的X,初始化時(shí)候?qū)⒃摼仃嚨谝粋€元素置零;
[0063] P是[NXg]矩陣,表示后驗(yàn)估計(jì)的方差,初始化時(shí)候?qū)⒃摼仃嚨谝粋€元素置零;
[0064] 化inus是[NXg]矩陣,表示先驗(yàn)估計(jì)的方差,初始化時(shí)候?qū)⒃摼仃嚨谝粋€元素置 零; W65]K是[NXg]矩陣,表示卡爾曼增益量,初始化時(shí)候?qū)⒃摼仃嚨谝粋€元素置零;
[0066] 接下來本發(fā)明先從第i個通道著手處理,將第i個通道中xhat(i,1)賦值為輸入 信號對應(yīng)通道的第一個值,再將該通道中P(i,1)賦值為1 ;到此為止程序中矩陣數(shù)據(jù)初始 化完成。然后在同一個通道i中,按照系統(tǒng)改寫的預(yù)測方程和校正方程。
[0067] 代碼中系統(tǒng)預(yù)測方程:
[0068] xhatminus(i,k) =xhat(i,k-1) (16)
[0069] 化inus(i,k) =P(i,k-l)+Q(i) (17)
[0070] 代碼中系統(tǒng)校正方程:
[0071] K(i,k) =Pminus(i,k) /(Pminus(i,k)+R(i)) (18)
[0072] xhat(i,k) =xhatminus(i,k)+K(i,k) *(z(i,k)-xhatminus(i,k) (19)
[0073]P(i,k) = (1-K(i,k))沖minus(i,k) (20)
[0074] 將k從2到g進(jìn)行遍歷,可W得出第i個通道RSSI后驗(yàn)估計(jì)值隨著時(shí)刻點(diǎn)的變化, 即反應(yīng)了卡爾曼濾波效果;最后將i從1到N進(jìn)行遍歷,可W得到各個通道RSSI卡爾曼濾 波效果;作圖輸出該實(shí)測點(diǎn)位置處各個通道藍(lán)牙Beacon RSSI經(jīng)過卡爾曼濾波處理后的效 果圖。 W75] 第S步,比較卡爾曼濾波前后該實(shí)測點(diǎn)處RSSI動態(tài)范圍變化。調(diào)用 化dg巧araments.m文件,其中preinput配置濾波前的N個通道RSSI數(shù)據(jù)(單位地), 化linput配置濾波后的N個通道RSSI數(shù)據(jù)(單位地);程序輸出卡爾曼濾波前后N個通道 分別的最大值、最小值W及其波動的動態(tài)范圍。
[0076] 最后,將卡爾曼濾波處理后的RSSI通過距離與信號強(qiáng)度的關(guān)系式解算出RSSI對 應(yīng)的距離。顯然對于每個通道的藍(lán)牙Beacon會解算出其距離上限與距離下限(分別對應(yīng) 該通道下RSSI最大值與最小值),再利用測量學(xué)中的空間距離后方交會法可W推算出實(shí)測 點(diǎn)在搭建場景中距離位置范圍。
[0077] 實(shí)施例:
[0078] 本發(fā)明是一種基于室內(nèi)定位系統(tǒng)的RSSI卡爾曼濾波方法,借助北京樂高樂華技 術(shù)有限公司搭載的平臺,其具體實(shí)施例如下:
[00巧]步驟一、搭建室內(nèi)場景的藍(lán)牙Beacon環(huán)境并構(gòu)建SSMap。 陽080] 具體為: 陽0川第一步,搭建室內(nèi)場景。如圖2所示,該場景區(qū)域采用13mX7. 579mX2. 78m的空 間布局,首先將室內(nèi)場景水平面按照0. 5mX0. 5m的間距劃分為26X16的二維平面坐標(biāo)系, 在此坐標(biāo)系的基礎(chǔ)上于場景的頂部設(shè)置8個藍(lán)牙Beacon,其具體平面分布參數(shù)如下所示。
[0082]
陽083] 需要說明的是運(yùn)8個Beacon具有相同的的uuid編號(即F62D3F65-2FCB-AB76-0 0AB-681819202122),作為搭建平臺系統(tǒng)的硬件號;同時(shí)major14代表著室內(nèi)環(huán)境的樓層, 由于本項(xiàng)目的測試環(huán)境都在同一水平面(即樓層數(shù)M= 1)上,故而major不發(fā)生改變;而minor各不相同,用作客戶端接收機(jī)區(qū)分每個Beacon的依據(jù)。此外每個Beacon在向室內(nèi)空 間發(fā)送藍(lán)牙信號同時(shí)也會廣播自己的uuid、majo;r、minorW及坐標(biāo)位置等特有信息。
[0084] 第二步,構(gòu)建SSMap。首先搭建一個高度為1. 41m,占地0. 5mX0. 5m的測試平臺, 將I0S設(shè)備放置于平臺中屯、;然后從坐標(biāo)系的(0, 0)位置開始,通過I0S設(shè)備每秒1次的頻 率指示出8個藍(lán)牙Beacon分別到該設(shè)備終端的藍(lán)牙信號RSSI,并積累100s的觀測時(shí)間獲 得每個Beacon在該坐標(biāo)位置處的共計(jì)100X8個數(shù)據(jù);按照同樣方法遍歷網(wǎng)格中每一坐標(biāo) (26X16)處來自8個藍(lán)牙Beacon的RSSI數(shù)據(jù)制成xml格式文檔。圖3展示了由uuid為 F62D3F65-2FCB-AB76-00AB-681819202122,major14,minor30,位于X坐標(biāo) 6. 50,Y坐標(biāo) 7. 30位置處藍(lán)牙Beacon產(chǎn)生的信號構(gòu)成的SSMap。
[00化]第S步,計(jì)算系統(tǒng)狀態(tài)方差與觀測方差。首先調(diào)用i通道下的SSMap的所有RSSI數(shù)據(jù)存成Pow矩陣,用Matl油中var函數(shù)求得該通道下所有RSSI數(shù)據(jù)的方差,用Q(i)記 錄;然后用觀測設(shè)備誤差分度值的平方為參考值建立系統(tǒng)的觀測方差,用R(i)記錄;最后 將i從1到8進(jìn)行遍歷。
[0086] 步驟二、選取實(shí)測點(diǎn),獲得來自8個藍(lán)牙Beacon的RSSI數(shù)據(jù),分8個通道儲存。
[0087] 具體為:
[0088] 在室內(nèi)場景中選取坐標(biāo)為(16, 9)的實(shí)測點(diǎn),獲得來自8個藍(lán)牙Beacon的RSSI數(shù) 據(jù)。同樣利用到I0S設(shè)備平臺W每秒1次指示藍(lán)牙BeaconRSSI的頻率,進(jìn)行30s的積累 后得到8個通道分別的30組RSSI數(shù)據(jù),并存成xml文件格式傳遞給后期處理。需要說明 的是樂高樂華公司正在研制的藍(lán)牙BeaconRSSI指示軟件的設(shè)計(jì)標(biāo)準(zhǔn)是每秒10次的頻率 指示藍(lán)牙BeaconRSSI,通過3秒的積累也可W得到8個通道分別30組RSSI數(shù)據(jù)。目前受 設(shè)備限制本發(fā)明只能用當(dāng)前I0S設(shè)備下的實(shí)測數(shù)據(jù)對設(shè)計(jì)產(chǎn)品數(shù)據(jù)進(jìn)行仿真,然而本發(fā)明 用的實(shí)測的數(shù)據(jù)仿真設(shè)計(jì)產(chǎn)品數(shù)據(jù)只是存在著輸入時(shí)間的滯后,并不會帶來數(shù)據(jù)本身的改 變。
[0089] 步驟=、設(shè)計(jì)卡爾曼濾波器對接收到信號8個通道的RSSI進(jìn)行濾波處理。 陽〇9〇] 具體為:
[0091] 本發(fā)明用Ka;rman_Filte;r.m程序?qū)崿F(xiàn)了對任何給定位置的RSSI信號卡爾曼濾波 處理。
[0092] 第一步,卡爾曼濾波前數(shù)據(jù)提取。利用xmlread函數(shù)將I0S設(shè)備接收到的8個通 道各30組RSSI數(shù)據(jù)轉(zhuǎn)化為巧X30]的矩陣數(shù)據(jù)Z讀取。
[0093] 第二步,矩陣數(shù)據(jù)的初始化。需要說明的是運(yùn)里程序各初值的意義:
[0094] xhat矩陣是對RSSI的后驗(yàn)估計(jì)值,即在k時(shí)刻,結(jié)合當(dāng)前RSSI的測量值與k-1時(shí) 刻RSSI先驗(yàn)估計(jì),得到的估計(jì)值更新,對應(yīng)于狀態(tài)方程中的X,初始化為巧X30]的零矩陣; 然后將每個通道的第一個元素賦值為輸入信號在該通道的第一個RSSI數(shù)據(jù);
[00巧]xhat (i,1) =Z (i,1) (21)
[0096] xhatminus矩陣是RSSI的先驗(yàn)估計(jì),即在k-1時(shí)刻,對k時(shí)刻RSSI做出的估計(jì),對 應(yīng)于狀態(tài)方程中的X,初始化為巧X30]的零矩陣;
[0097] P矩陣是后驗(yàn)估計(jì)的方差,初始化為巧X30]的零矩陣;然后將每個通道的第一個 元素賦值為1 ;
[0098] P(i, 1) = 1 倘)
[0099] 化inus矩陣是先驗(yàn)估計(jì)的方差,初始化為巧X30]的零矩陣;
[0100] K矩陣是卡爾曼增益量,初始化為巧X30]的零矩陣; 陽101] 第=步,改寫的預(yù)測方程和校正方程。在同一個通道i中,按照系統(tǒng)狀態(tài)方程改寫 迭代方程。 陽102] 代碼中系統(tǒng)預(yù)測方程: 陽 103]xhatminus(i,k) =xhat(i,k-1) (23) 陽 104]化inus(i,k) =P(i,k-l)+Q(i) (24) 陽105] 代碼中系統(tǒng)校正方程: 陽 106]K(i,k) =Pminus(i,k) /(Pminus(i,k)+R(i)) (25)
[0107]xhat(i,k) =xhatminus(i,k)+K(i,k) *(z(i,k)-xhatminus(i,k) (26) 陽 10 引 P(i,k) = (l-K(i,k))*Pminus(i,k) (27)
[0109] 第四步,將k從2到30遍歷。遍歷后得到同一通道i中RSSI經(jīng)卡爾曼濾波處理 后的效果。
[0110] 第五步,將i從1到8遍歷。遍歷后得到8個通道中RSSI經(jīng)卡爾曼濾波處理后的 效果。 陽111] 第六步,作圖輸出網(wǎng)格坐標(biāo)(16, 9)位置處各個通道藍(lán)牙BeaconRSSI經(jīng)過卡爾曼 濾波處理后的效果圖,由圖4-11所示。 陽112] 圖4是本發(fā)明中網(wǎng)格坐標(biāo)(16, 9)位置處第1通道藍(lán)牙BeaconRSSI經(jīng)過卡爾曼