很多情况下大家都采用实际测量的数据进行定位算法的性能分析和验证,但是实际测量的工作量太大、数据不全面、灵活性较小,采用仿真的方法获取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,用来作为定位算法的测试数据。

这个系列的位置指纹法都使用生成的这些数据,用测试数据验证算法的性能。

代码和数据


代码地址:https://github.com/jiangqideng/codeInBlogs/tree/master/IP_raytracing

  • 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数据的更多相关文章

  1. 室内定位系列(一)——WiFi位置指纹(译)

    原文:<Advanced Location-Based Technologies and Services>--chapter 2 WiFi Location Fingerprint 作者 ...

  2. 爬虫系列二(数据清洗--->xpath解析数据)

    一 xpath介绍 XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. XPath 使用路径表达式在 XML 文档中进行导航 XPath 包 ...

  3. 室内定位系列(三)——位置指纹法的实现(KNN)

    位置指纹法中最常用的算法是k最近邻(kNN):选取与当前RSS最邻近的k个指纹的位置估计当前位置,简单直观有效.本文介绍kNN用于定位的基本原理与具体实现(matlab.python). 基本原理 位 ...

  4. Python股票分析系列——系列介绍和获取股票数据.p1

    本系列转载自youtuber sentdex博主的教程视频内容 https://www.youtube.com/watch?v=19yyasfGLhk&index=4&list=PLQ ...

  5. ES系列(五):获取单条数据get处理过程实现

    前面讲的都是些比较大的东西,即框架层面的东西.今天咱们来个轻松点的,只讲一个点:如题,get单条记录的es查询实现. 1. get语义说明 get是用于搜索单条es的数据,是根据主键id查询数据方式. ...

  6. 爬虫系列二(数据清洗--->bs4解析数据)

    一 BeautifulSoup解析 1 环境安装 - 需要将pip源设置为国内源,阿里源.豆瓣源.网易源等 - windows (1)打开文件资源管理器(文件夹地址栏中) (2)地址栏上面输入 %ap ...

  7. 面试系列二:精选大数据面试真题JVM专项-附答案详细解析

    公众号(五分钟学大数据)已推出大数据面试系列文章-五分钟小面试,此系列文章将会深入研究各大厂笔面试真题,并根据笔面试题扩展相关的知识点,助力大家都能够成功入职大厂! 大数据笔面试系列文章分为两种类型: ...

  8. 【机器学习】WIFI室内定位

    WIFI室内定位-指纹法 在A1区域内每个点上采集四个WiFi的信号数据(信号强度),五点.九点.十六点采样. 5*5=25区域*16数据=400样本,用来训练 样本数 R B G1  G2 1 2 ...

  9. LED室内定位算法:RSS,TOA,AOA,TDOA(转载)

    转载自:https://blog.csdn.net/baidu_38197452/article/details/77115935 基于LED的室内定位算法大致可以分为四类: 1. 几何测量法 这种方 ...

随机推荐

  1. Mac新建文件夹、txt文件、无格式文件

    新建文件夹: mkdir test 新建txt touch test.txt 新建无后缀格式文件 touch test 如果要删除文件夹 rm -r -f test

  2. x01.TodoList:Asp.Net 5 初探

    ASP.NET 5 是比较新的,除了汤姆的博文,学习资料并不多.而学习没有例子上手,是比较痛苦的. 1.运行 vs2015,新建项目,选择 Asp.Net 5 WebApp 模板,默认运行即可.对照汤 ...

  3. [转]Writing Custom Middleware in ASP.NET Core 1.0

    本文转自:https://www.exceptionnotfound.net/writing-custom-middleware-in-asp-net-core-1-0/ One of the new ...

  4. 同步降压DC-DC转换IC——XC9264

    设计一个12V转3.3V,输出电流30mA的电源电路,由于项目对转化效率要求较高,所以不能采用低压差线性稳压LDO的方案.经过对比,TOREX的XC9264效率在此转化条件下效率可做到85%以上,比M ...

  5. TortoiseSvn的安装过程详解

    运行TortoiseSVN-1.6.6.17493-win32-svn-1.6.6.msi程序, 开始安装 点击Next, 下一步 选择 I accept 接受, 点击Next, 下一步 选择安装路径 ...

  6. BZOJ 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 [后缀数组]

    1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1017  Solved: ...

  7. 使用 iscroll 实现焦点图无限循环

    现在大家应该都看到过焦点图轮播的效果,这个效果是什么样我就不截图了.昨天做练习,练习要求是使用iscroll实现焦点图的无限循环滚动,并且当手指触摸焦点图后,停止焦点图的循环滚动.第一次接触iscro ...

  8. flex自适应高度内容高度超出容器高度自动出现滚动条的问题

    在容器中设置 flex-grow:2; overflow-y:auto;overflow-x:hidden;容器高度自适应. 内容高度不固定,无法出现滚动条,然后在容器中添加height:0,出现滚动 ...

  9. [LeetCode] Closest Binary Search Tree Value 最近的二分搜索树的值

    Given a non-empty binary search tree and a target value, find the value in the BST that is closest t ...

  10. elasticsearch按照配置时遇到的一些坑 [Failed to load settings from [elasticsearch.yml]]

    这里整理几个空格引起的问题. 版本是elasticsearch-2.3.0 或者elasticsearch-rtf-master Exception in thread "main" ...