1. 程式人生 > >室內定位系列(二)——模擬獲取RSS資料

室內定位系列(二)——模擬獲取RSS資料

很多情況下大家都採用實際測量的資料進行定位演算法的效能分析和驗證,但是實際測量的工作量太大、資料不全面、靈活性較小,採用模擬的方法獲取RSS資料是另一種可供選擇的方式。本文介紹射線跟蹤技術的基本原理,以及如何得到用於定位模擬的RSS資料。在此基礎上得到位置指紋庫與一組測試資料,用於以後定位演算法的驗證。(本文的原理介紹並不嚴謹,但求快速理解)

對數距離損耗模型

在自由空間中,沒有任何障礙物,訊號從發射源向四面八方呈球面形狀發射出去,各個方向上沒有任何區別,因此訊號的功率和距離的平方呈反比:\(P \propto \frac{1}{d^2}\)

RSS就是功率,但是衰減的單位一般用dB來表示,那麼就很容易理解RSS與距離的關係了,RSS衰減與距離的對數呈正比,假設已知一個參考距離\(d_0\)

以及這個距離上的RSS為\(RSS(d_0)\),那麼,\(RSS(d) = RSS(d_0) - 10n\log(\frac{d}{d_0})\)。自由空間中\(n=2\),這就是最常見的對數距離損耗模型(針對室內的傳播模型還有分隔損耗、樓層間分隔損耗、Ericsson多重斷點模型等)。下圖中的黑線是一組在走廊中測量的實際資料,紅線是對數距離損耗模型的擬合結果,可以看出模型可以反映總體趨勢,但和真實室內環境下的情況還是有較大區別,注意黑線的波動不是因為噪聲,而是實際的訊號傳播環境造成的。走廊這種場景算是比較簡單的,如果在其他一下更復雜的場景下,有更多的訊號遮擋、反射等因素存在,RSS不僅和距離位置有關,還和周圍的各種障礙物有關係,因此在更復雜一點的場景下,可以用射線跟蹤技術來分析。

射線跟蹤技術

電磁波沿直線傳播,可以將其近似為射線進行分析。對於一個固定的發射源,在自由空間中,利用對數距離衰減模型即可計算各個位置的RSS,但是室內環境很複雜,訊號可以遇到牆壁發生反射,各個反射後的訊號又可以與未經反射的訊號疊加,實際中測量到的訊號其實包括了各個反射、繞射、散射訊號。在射線跟蹤中,計算出發射點與接收點之間的多條傳播路徑,分別對各個路徑的訊號進行分析,一般包括訊號強度、相位在多次反射或繞射下的計算,然後疊加得到接收點上的訊號。

舉個例子,下圖是一個假定的空曠的房間,有一個發射源(AP)在房間左邊的角落,一個接收器在房間的中央,接收器收到這個AP的訊號中包含了來自1條直射路徑與6條(牆壁)反射路徑的訊號(多次反射的影響很小,可以忽略),下圖右下角的曲線是某條直線上RSS隨距離的衰減,在這樣稍微複雜一點的環境中,RSS與距離的關係已經不是平滑的對數衰減了。理論上我們可以計算出任意一點的的RSS,圖中有6個AP,因此每個位置點可以分別計算出6個RSS。

生成用於位置指紋法的模擬資料

下面介紹一些怎麼得到在位置指紋法中進行模擬所需的資料。

  • RSS模擬環境資料集:設定好房間尺寸和各個AP的位置等各種引數,使用射線跟蹤計算每個位置的RSS,位置點的間隔設得小一點(0這裡設為0.01m),計算一次射線跟蹤後把資料儲存起來,以後所有的RSS資料都從這個“RSS模擬環境資料集”中或取。

  • 一個典型的離線指紋庫:模擬資料採集的過程,比如每個1m採集一次RSS資料,資料都從上面的“RSS模擬環境中”獲取。也可以考慮其他的一些採集方式,或者為採集過程加入噪聲,設定採集樣本的個數等。

  • 線上定位測試資料:模擬一個目標在房間中運動,獲得一條運動軌跡,以及每個軌跡點上的RSS,用來作為定位演算法的測試資料。

這個系列的位置指紋法都使用生成的這些資料,用測試資料驗證演算法的效能。

程式碼和資料

  • main.m:主程式,在模擬環境中,得到離線指紋庫,以及線上階段的測試資料,用於以後的定位測試。
  • get_rss_by_ray_tracing.m:簡化場景下(空曠房間)的射線跟蹤。
  • generate_radio_map.m:生成“RSS模擬環境資料集”。
  • get_random_trace.m:生成一條隨機軌跡。
  • get_offline_data_random.m:模擬隨機資料採集,生成位置指紋庫。
  • get_offline_data_uniform.m:模擬均勻資料採集,生成位置指紋庫。
  • get_online_data.m:模擬線上階段,生成測試資料。
  • radio_map_20_15.mat:生成的“RSS模擬環境資料集”,199914996的陣列,比如fingerprint(1000, 1000, 2)代表的是模擬環境中位置(100,100)上接收到的第2個AP的RSS。
  • offline_data_rss.mat:離線資料RSS,每行為一個RSS向量
  • offline_data_location.mat:離線資料位置點,每行為一個位置點x,y
  • online_data_trace.mat:生成測試資料的運動軌跡,10000*2的陣列,比如trace(10, :)代表的是第10個時刻目標的位置x和y。
  • online_data_rss.mat:生成測試資料中與執行軌跡對應的RSS,10000*6的陣列,比如trace(10, :)代表的是第10個時刻時目標測得的各個RSS。



作者:rubbninja
出處:http://www.cnblogs.com/rubbninja/
關於作者:目前主要研究領域為機器學習與無線定位技術,歡迎討論與指正!
版權宣告:本文版權歸作者和部落格園共有,轉載請註明出處。

相關推薦

室內定位系列——模擬獲取RSS資料

很多情況下大家都採用實際測量的資料進行定位演算法的效能分析和驗證,但是實際測量的工作量太大、資料不全面、靈活性較小,採用模擬的方法獲取RSS資料是另一種可供選擇的方式。本文介紹射線跟蹤技術的基本原理,以及如何得到用於定位模擬的RSS資料。在此基礎上得到位置指紋庫與一組測試資料,用於以後定位演算法的驗證。(本

室內定位技術——競爭對手分析

公司專利數定位方式及特點谷歌2+篩選使用者活動資料推斷使用者位置微軟5+無線接入點、無線電信標、裝置移動來確定手機位置RIM8+Wi-Fi熱點和蜂窩天線訊號的定位技術諾基亞10+利用藍芽信標定位高通8+

室內定位系列——位置指紋法的實現KNN

位置指紋法中最常用的演算法是k最近鄰(kNN):選取與當前RSS最鄰近的k個指紋的位置估計當前位置,簡單直觀有效。本文介紹kNN用於定位的基本原理與具體實現(matlab、python)。 基本原理 位置指紋法可以看作是分類或迴歸問題(特徵是RSS向量,標籤是位置),監督式機器學習方法可以從資料中訓練出一

室內定位系列——目標跟蹤粒子濾波

進行目標跟蹤時,先驗知識告訴我們定位軌跡是平滑的,目標當前時刻的狀態與上一時刻的狀態有關,濾波方法可以將這些先驗知識考慮進來得到更準確的定位軌跡。本文簡單介紹粒子濾波及其使用,接著卡爾曼濾波寫,建議先閱讀室內定位系列(五)——目標跟蹤(卡爾曼濾波)。 原理 這裡跟卡爾曼濾波進行對比來理解粒子濾波。 目標

室內定位系列——目標跟蹤卡爾曼濾波

進行目標跟蹤時,先驗知識告訴我們定位軌跡是平滑的,目標當前時刻的狀態與上一時刻的狀態有關,濾波方法可以將這些先驗知識考慮進來得到更準確的定位軌跡。本文簡單介紹卡爾曼濾波及其使用。 原理 這裡僅從目標定位跟蹤的角度做一個簡化版的介紹。 定位跟蹤時,可以通過某種定位技術(比如位置指紋法)得到一個位置估計(

室內定位系列——位置指紋法的實現測試各種機器學習分類器

位置指紋法中最常用的演算法是k最近鄰(kNN)。本文的目的學習一下python機器學習scikit-learn的使用,嘗試了各種常見的機器學習分類器,比較它們在位置指紋法中的定位效果。 匯入資料 # 匯入資料 import numpy as np import scipy.io as scio offl

室內定位系列——WiFi位置指紋

目錄 摘要 GPS難以解決室內環境下的一些定位問題,大部分室內環境下都存在WiFi,因此利用WiFi進行定位無需額外部署硬體裝置,是一個非常節省成本的方法。然而WiFi並不是專門為定位而設計的,傳統的基於時間和角度的定位方法並不適用於WiFi。近十年來,在室內WiFi場景下的定位中,位置指紋法被廣泛研究

無人機光流定位系列——實踐

      在本系列blog中的http://blog.csdn.net/andymfc/article/details/53316404文章中,已經對光流定位的原理進行了詳細的分析,詳細介紹了著名的lucas-kanade光流演算法,本期,將帶大家一起在dragonboa

python selenium系列元素定位方式

bdr process sta css_ 講解 term 其他 1.5 win 一 前言元素定位,是操作元素的第一步,也是WebUI自動化的難點和核心。 二 元素定位方法selenium提供了內置的方法完成對待操作元素的定位,主要分為8類,其中,每類又可細分為定位單個元素和

Selenium實戰教程系列---元素定位

Selenium webdriver能夠模擬人對瀏覽器進行操作的前提是介面元素的定位。元素的定位可以說是Selenium自動化指令碼的基礎。這一小節筆者將介紹如何在selenium中進行元素的定位。 定位元素的方法 Selenium中提供了以下定位元素的方法:

雪飲者 決策樹系列決策樹應用

ssi 字符串長度 mes pla 選擇 font com vector nac   本篇以信息增益最大作為最優化策略來詳細介紹決策樹的決策流程。   首先給定數據集,見下圖    註:本數據來源於網絡 本篇將以這些數據作為訓練數據(雖然少,但足以介紹清楚原理!),下圖是決

數據結構系列算法

nal log 如何 空間復雜度 計算 youdao 最好 時間 bsp 高斯求和 計算1+2+...+100 算法的概念就不多說了 強調一點就是,沒有通用的算法,就像永遠沒有銀彈,所有的算法都有自己的適用領域 評判算法好壞的方法 復雜度用大O表示,又分為時間復雜度

【原創】源碼角度分析Android的消息機制系列——ThreadLocal的工作過程

機制 simple hand 這就是 數據存儲 read etc lena 並且 ι 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 在上一篇文章中,我們已經提到了ThreadLocal,它並非線程,而是在線程中存儲數據用的。數據存儲以後,只能在指定的線程中獲取到數據

soapui接口性能測試---- 模擬不同類型的負載

output tor 10個 相對 超過 對話框 interval -s 根據 SoapUI中提供的不同負載策略允許您模擬各種類型的負載,隨時間的變化,您可以在許多條件下輕松測試目標服務的性能。由於SoapUI還允許您同時運行多個LoadTests(參見下文的示例),可以使

MySQL系列

sql read 註意 出現 back 總結 lba 區別 不同 MySql 事務 目錄 MySQL系列(一):基礎知識大總結 MySQL系列(二):MySQL事務 MySQL系列(三):索引 什麽是事務(transaction) 保證成批操作要麽完全執行,要麽完全不

Linux系統運維常見面試簡答題系列14題

local 企業 nginx服務 簡答題 ip協議 php out gin 報錯 1. /var/log/messages日誌出現kernel:nf_conntrack:tablefull,dropping packet,請問是什麽原因導致的,如何解決? 此報錯為iptab

Linux VPS/服務器建站系列- 常見的國內雲服務器商家

數據中心 log 中心 相互 網站 能說 之前 體積 選擇 繼續接"Linux VPS/服務器建站系列(一)- 哪些人需要用服務器建站"文章,既然我們開始決定選擇VPS、服務器作為項目用途。在準備實際的操作之前,筆者先準備羅列國內和國外的常見雲服務器商家。因為服務器商家和方

SpringMVC系列: 註解@RequestMapping、@PathVariable

ann handler -- back 聯合 ppi 根目錄 處理方法 ati 一、@RequestMapping 1.@RequestMapping除了能修飾方法,還能修飾類(1)修飾類:提供初步的請求映射信息,相對於web請求的根目錄(2)修飾方法:提供進一步的細分映射

Docker系列鏡像管理

nginx orm lda cast anaconda rip search fff spa 2.1 查看鏡像 [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docke

JDBC詳解系列之加載驅動

red mar mys ons try path 替換 host man ---[來自我的CSDN博客](http://blog.csdn.net/weixin_37139197/article/details/78838091)--- ??在JDBC詳解系列(一)之流程中