學(xué)號(hào):20021210595? ? 姓名:楊嬋
轉(zhuǎn)載自:https://www.cnblogs.com/rubbninja/p/6118430.html
【嵌牛導(dǎo)讀】很多情況下大家都采用實(shí)際測(cè)量的數(shù)據(jù)進(jìn)行定位算法的性能分析和驗(yàn)證,但是實(shí)際測(cè)量的工作量太大、數(shù)據(jù)不全面、靈活性較小,采用仿真的方法獲取RSS數(shù)據(jù)是另一種可供選擇的方式。本文介紹射線跟蹤技術(shù)的基本原理,以及如何得到用于定位仿真的RSS數(shù)據(jù)。在此基礎(chǔ)上得到位置指紋庫與一組測(cè)試數(shù)據(jù),用于以后定位算法的驗(yàn)證。
【嵌牛鼻子】wifi,室內(nèi)定位,位置指紋
【嵌牛提問】RSS數(shù)據(jù)如何模擬?
【嵌牛正文】
對(duì)數(shù)距離損耗模型
在自由空間中,沒有任何障礙物,信號(hào)從發(fā)射源向四面八方呈球面形狀發(fā)射出去,各個(gè)方向上沒有任何區(qū)別,因此信號(hào)的功率和距離的平方呈反比:P∝1d2P∝1d2。
RSS就是功率,但是衰減的單位一般用dB來表示,那么就很容易理解RSS與距離的關(guān)系了,RSS衰減與距離的對(duì)數(shù)呈正比,假設(shè)已知一個(gè)參考距離d0d0以及這個(gè)距離上的RSS為RSS(d0)RSS(d0),那么,RSS(d)=RSS(d0)?10nlog(dd0)RSS(d)=RSS(d0)?10nlog?(dd0)。自由空間中n=2n=2,這就是最常見的對(duì)數(shù)距離損耗模型(針對(duì)室內(nèi)的傳播模型還有分隔損耗、樓層間分隔損耗、Ericsson多重?cái)帱c(diǎn)模型等)。下圖中的黑線是一組在走廊中測(cè)量的實(shí)際數(shù)據(jù),紅線是對(duì)數(shù)距離損耗模型的擬合結(jié)果,可以看出模型可以反映總體趨勢(shì),但和真實(shí)室內(nèi)環(huán)境下的情況還是有較大區(qū)別,注意黑線的波動(dòng)不是因?yàn)樵肼暎菍?shí)際的信號(hào)傳播環(huán)境造成的。走廊這種場(chǎng)景算是比較簡單的,如果在其他一下更復(fù)雜的場(chǎng)景下,有更多的信號(hào)遮擋、反射等因素存在,RSS不僅和距離位置有關(guān),還和周圍的各種障礙物有關(guān)系,因此在更復(fù)雜一點(diǎn)的場(chǎng)景下,可以用射線跟蹤技術(shù)來分析。
射線跟蹤技術(shù)
電磁波沿直線傳播,可以將其近似為射線進(jìn)行分析。對(duì)于一個(gè)固定的發(fā)射源,在自由空間中,利用對(duì)數(shù)距離衰減模型即可計(jì)算各個(gè)位置的RSS,但是室內(nèi)環(huán)境很復(fù)雜,信號(hào)可以遇到墻壁發(fā)生反射,各個(gè)反射后的信號(hào)又可以與未經(jīng)反射的信號(hào)疊加,實(shí)際中測(cè)量到的信號(hào)其實(shí)包括了各個(gè)反射、繞射、散射信號(hào)。在射線跟蹤中,計(jì)算出發(fā)射點(diǎn)與接收點(diǎn)之間的多條傳播路徑,分別對(duì)各個(gè)路徑的信號(hào)進(jìn)行分析,一般包括信號(hào)強(qiáng)度、相位在多次反射或繞射下的計(jì)算,然后疊加得到接收點(diǎn)上的信號(hào)。
舉個(gè)例子,下圖是一個(gè)假定的空曠的房間,有一個(gè)發(fā)射源(AP)在房間左邊的角落,一個(gè)接收器在房間的中央,接收器收到這個(gè)AP的信號(hào)中包含了來自1條直射路徑與6條(墻壁)反射路徑的信號(hào)(多次反射的影響很小,可以忽略),下圖右下角的曲線是某條直線上RSS隨距離的衰減,在這樣稍微復(fù)雜一點(diǎn)的環(huán)境中,RSS與距離的關(guān)系已經(jīng)不是平滑的對(duì)數(shù)衰減了。理論上我們可以計(jì)算出任意一點(diǎn)的的RSS,圖中有6個(gè)AP,因此每個(gè)位置點(diǎn)可以分別計(jì)算出6個(gè)RSS。
生成用于位置指紋法的仿真數(shù)據(jù)
下面介紹一些怎么得到在位置指紋法中進(jìn)行仿真所需的數(shù)據(jù)。
RSS仿真環(huán)境數(shù)據(jù)集:設(shè)置好房間尺寸和各個(gè)AP的位置等各種參數(shù),使用射線跟蹤計(jì)算每個(gè)位置的RSS,位置點(diǎn)的間隔設(shè)得小一點(diǎn)(0這里設(shè)為0.01m),計(jì)算一次射線跟蹤后把數(shù)據(jù)保存起來,以后所有的RSS數(shù)據(jù)都從這個(gè)“RSS仿真環(huán)境數(shù)據(jù)集”中或取。
一個(gè)典型的離線指紋庫:模擬數(shù)據(jù)采集的過程,比如每個(gè)1m采集一次RSS數(shù)據(jù),數(shù)據(jù)都從上面的“RSS仿真環(huán)境中”獲取。也可以考慮其他的一些采集方式,或者為采集過程加入噪聲,設(shè)置采集樣本的個(gè)數(shù)等。
在線定位測(cè)試數(shù)據(jù):模擬一個(gè)目標(biāo)在房間中運(yùn)動(dòng),獲得一條運(yùn)動(dòng)軌跡,以及每個(gè)軌跡點(diǎn)上的RSS,用來作為定位算法的測(cè)試數(shù)據(jù)。
這個(gè)系列的位置指紋法都使用生成的這些數(shù)據(jù),用測(cè)試數(shù)據(jù)驗(yàn)證算法的性能。
代碼和數(shù)據(jù)
代碼地址:https://github.com/jiangqideng/codeInBlogs/tree/master/IP_raytracing
main.m:主程序,在仿真環(huán)境中,得到離線指紋庫,以及在線階段的測(cè)試數(shù)據(jù),用于以后的定位測(cè)試。
get_rss_by_ray_tracing.m:簡化場(chǎng)景下(空曠房間)的射線跟蹤。
generate_radio_map.m:生成“RSS仿真環(huán)境數(shù)據(jù)集”。
get_random_trace.m:生成一條隨機(jī)軌跡。
get_offline_data_random.m:模擬隨機(jī)數(shù)據(jù)采集,生成位置指紋庫。
get_offline_data_uniform.m:模擬均勻數(shù)據(jù)采集,生成位置指紋庫。
get_online_data.m:模擬在線階段,生成測(cè)試數(shù)據(jù)。
radio_map_20_15.mat:生成的“RSS仿真環(huán)境數(shù)據(jù)集”,199914996的數(shù)組,比如fingerprint(1000, 1000, 2)代表的是仿真環(huán)境中位置(100,100)上接收到的第2個(gè)AP的RSS。
offline_data_rss.mat:離線數(shù)據(jù)RSS,每行為一個(gè)RSS向量
offline_data_location.mat:離線數(shù)據(jù)位置點(diǎn),每行為一個(gè)位置點(diǎn)x,y
online_data_trace.mat:生成測(cè)試數(shù)據(jù)的運(yùn)動(dòng)軌跡,10000*2的數(shù)組,比如trace(10, :)代表的是第10個(gè)時(shí)刻目標(biāo)的位置x和y。
online_data_rss.mat:生成測(cè)試數(shù)據(jù)中與運(yùn)行軌跡對(duì)應(yīng)的RSS,10000*6的數(shù)組,比如trace(10, :)代表的是第10個(gè)時(shí)刻時(shí)目標(biāo)測(cè)得的各個(gè)RSS。
作者:[rubbninja](http://www.cnblogs.com/rubbninja/) 出處:[http://www.cnblogs.com/rubbninja/](http://www.cnblogs.com/rubbninja/) 關(guān)于作者:目前主要研究領(lǐng)域?yàn)闄C(jī)器學(xué)習(xí)與無線定位技術(shù),歡迎討論與指正! 版權(quán)聲明:本文版權(quán)歸作者和博客園共有,轉(zhuǎn)載請(qǐng)注明出處。