背景

惨痛的背景,正如我前面提到的,参加了公司的一个训练营。刚进来公司的新人,内心充满着对未来的美好憧憬,期待自己能闯出属于自己的天地。更何况,作为一名程序员,无比的希望所有人对自己写得代码或者App都有膜拜式的认可。However,这些期待,都在这次训练营中破灭了,迎接我的,就是答辩嘉宾的不耐烦,和呵呵一笑···痛定思痛吧,总需要对自己做的不足进行反思的······吧啦吧啦,前面说了一堆垃圾,因为我们训练营做的是一个实时地理信息分享这么一个主题的Demo,面试官当场就问了我,这个“技术人员”一个问题,当人处于室内,地理信息怎么获取?怎么去判断两个人的距离?很囧,我当时回答了一句:技术限制,暂时不考虑这个问题···呵呵,他就这样无耻的笑了···

当时的我,连GPS和IPS有什么区别都不知道。看这篇文章的你,知道了吗?

RTLS (Real time location system)实时定位系统,GPS解决的where am i的问题,RTLS主要解决Where are you的问题,一般使用在室内。定位媒介:无线电(2.4G/Wifi,窄带/超宽带),超声波,RFID等;定位方法:测量场强,测量传输时间TOA/TDOA,测量角度,测量相位等;定位应用:物流领域,室内/大楼固定资产保护等;

正题

我们所被挑战的可以被归纳到这篇文章的主题吧,室内定位(Indoor Positioning System)。提到室内定位问题,不得不提3月份的时候,苹果以2000万刀的价格收购了室内定位公司WifiSLAM的新闻, 显然苹果如果把WifiSLAM的科技运用到iPhone上面,那么iPhone用户就会相当于携带了一个苹果的绘图小机器人了。那WifiSLAM是如何做到室内定位的呢?没错,就是用Wifi!WifiSLAM的室内导航技术能利用室内的路由器发射的WiFi信号侦测建筑内定位数据,该定位技术将能够保证8英尺范围内的精确位置测定。(PS:室内也就那么大,现在在天朝的魔都,帝都能买到8英尺大的房子,就是糕富帅了)苹果看上了WifiSLAM背后的定位算法,能有如此精确的定位,让所有依赖于地理位置信息的应用都更加精确。

WifiSLAM背后的定位算法到底怎么做到这么牛逼的呢?这个就无法查证了,得等Cook大叔啥时候开源了再说吧。

室内定位现状

常见的定位方式:基站、GPS、WIFI。而目前通过确定的位置的传感技术似乎只局限于GPS或者基站,是否有可能产生其他传感技术?定位技术是否精确是否会影响未来基于位置服务的质量与体验??明显会!那么在这个移动信息时代,移动终端现有的定位方式有:GPS定位、基站定位、wifi定位、IP定位、RFID/二维码等标签识别定位、蓝牙定位、声波定位、场景识别定位。而WIFI定位则是室内定位方式中常见的一种,指纹算法则是WIFI定位中不知道算不算最简单的一种呢?

指纹算法就是事先测得在商场的每一个位置各个路由器的信号强度,存储于数据库中,到时候用户需要定位时将测得的各路由器信号强度报给服务器,服务器从数据库中查找得知对应的位置,报告给用户。我去,每一个位置,如果追求360度无死角,那么在人人乐部署这么一个IPS,单单是前期的数据收集就得累死人了···

Google的室内定位系统通过WiFi进行定位,通过对信号强度的感知,判断用户与已知WiFi热点及室内的相对位置。诺基亚的解决方案也与之相似,不过采用的是辨识度更高的蓝牙信号,但该方案需要安装大量的蓝牙“指示灯”作为支持。正在酝酿中的其他室内定位方法还有红外线定位,甚至声学分析。但这些方法都因各种各样的因素显得不准确或不可靠。

博通发布的新芯片通过WiFi、蓝牙、甚至NFC技术来提供IPS(Indoor Positioning System)支持。更重要的是,该芯片还能将其他传感器联系在一起,例如电话中的陀螺仪、磁力计、加速度计、高度计等。此时,它会变成一个完美的“计步器”,几乎可以毫无死角地记录你在室内的所有位置变化。

它只需通过GPS记录下你的进入点,然后通过加速度计获得前进距离,通过陀螺仪记录方向,再利用高度计记录高度变化。这样它基本就能获知你在室内的准确位置变动,无需利用无线信号来获得反馈。

前面有提到,RFID/二维码等标签识别定位,二维码也能定位!其实现在很常见,公交站牌就有!而在岛国,日本把二维码定位也算成是新的定位方式。这个大概是最精确又最简单可靠的定位方式了。通过手机摄像头拍摄贴在特殊位置上的二维码,二维码里存储了当前的位置信息,从而定位了拍摄时手机所在的位置。该方式简单、低成本而且有效。

导航系统的进化

目前的定位精准度的顺序是:室内多点 WiFi AP > 民用 GPS 室外定位 > 室外 WiFi AP 定位 > 基站定位。 但是为了加快 GPS 的寻星速度,例如 iPhone 就使用了 AGPS,即基站或 WiFi AP 初步定位后,根据机器内存储的 GPS 卫星表来快速寻星,然后进行 GPS 定位。以上都是独立的定位方式,但是为了补偿 GPS 信号的不稳定性,很多公司都研究出了以 GPS 为基础,多种传感器辅助定位的定位方式。

例如在民用的车载导航设备领域,目前比较成熟的是 GPS + 加速度传感器补正算法定位。在日本的车载导航市场是由 Sony 的便携式车载导航系统 Nav-U1 首先引入量产。

使用这种系统时,在正常情况下还是要用到 GPS 定位,而当车子驶入高架桥底或隧道这类 GPS 无法打到的区域时,则启用加速度传感器来帮忙进行位置补正。由于加速度传感器可以根据失去 GPS 信号前的车速情报和失去信号后的加减速情况来计算出车子的当前车速,从而能够实现在没有 GPS 信号的情况下也能进行一定距离的"猜测式"导航。目前先锋公司的加速度补正算法已经能够实现近10公里的无信号导航补正了(误差在1公里左右,结合路牌的话基本上不会错过隧道内或高架下的分岔路口了)。

当然还有从车载导航系统一开始就有的,转向度信号补正和车速频率信号补正传感器,以及地磁转角信号补正传感器等,都是能够在 GPS 信号不佳的时候进行定位补正的手段,这类传感器精度极高,但是由于需要导航设备与车体线路之间进行连线,安装调试较为复杂,一般只有原厂安装的导航仪才支持。

室内定位再补充

首先,即使是普通的 802.11n 家用路由器,如果是支持 MIMO 多天线的,基站本身就能根据客户端的实际位置发射具有指向性的波束,客户端和基站的方位角是可以确定的。这种情况下理论上只要两台基站即可精确定位,精度是米以内的,这已经远远高于民用 GPS 的精度了。只可惜我们没有简单的办法取到家用基站的这个方位角信息。

另外由于"室"本身不会很大,再加上 WiFi 信号本身的传播距离就已经决定了这是一个百平米左右空间内的定位问题。即使有误差,百米范围内的这点误差也绝对不会比民用 GPS 的误差更大。

更何况 GPS 可以有补正算法,室内 WiFi 定位同样可以有补正算法,而且由于地方小,情况简单,补正更加容易。我们甚至可以做到每平米范围内做一套采样数据录入数据库用于补正,在特定位置增设定位用的基站也更加随意。

其次,三轴加速度仪的确具备定位功能,定位精度也相当不错,但存在一个严重问题是定位的误差会随着时间逐渐积累,因此如果没有一个其它的可靠位置信息来源的话,积累的误差会导致定位结果很快恶化到无法接受的程度。另外,通过三轴加速度仪进行定位还存在耗电量问题和用户隐私方面的问题。总之,目前通过三轴加速度仪进行定位还停留在实验室阶段,并未`在实际中大规模使用。

Indoor Positioning System & Real time location system的更多相关文章

  1. Modeling of Indoor Positioning Systems Based on Location Fingerprinting

    Kamol Kaemarungsi and Prashant Krishnamurthy Telecommunications Program School of Information Scienc ...

  2. Task: Indoor Positioning with WiFi Signals

    Task: Indoor Positioning with WiFi SignalsYou are hired by a company to design an indoor localizatio ...

  3. Unable to cast object of type 'System.Int32' to type 'System.String'.

    最近在研究.netcore,尝试把前后端完全分离.但是在写接口的时候,Post参数是FromBody的时候报错了 Microsoft.AspNetCore.Diagnostics.DeveloperE ...

  4. 对于System.exit(0)和System.exit(1)的一般理解

    public static void exit(int status) 终止当前正在运行的 Java 虚拟机.参数用作状态码:根据惯例,非 0 的状态码表示异常终止. 该方法调用 Runtime 类中 ...

  5. 重写成员“log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)”时违反了继承安全性规则

    在.NET 4.0下使用最新版本的log4Net 1.2.10,会遇到下面这样的错误: 重写成员“log4net.Util.ReadOnlyPropertiesDictionary.GetObject ...

  6. System.out.println与System.err.println的区别(输出顺序!!!)

    System.out.println与System.err.println的区别(输出顺序!!!) 分类:java (208)  (0) System.out.println与System.err.p ...

  7. 错误描述:请求“System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限已失败

    错误描述:请求“System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, Pu ...

  8. System.Diagnostics.Debug和System.Diagnostics.Trace 【转】

    在 .net 类库中有一个 system.diagnostics 命名空间,该命名空间提供了一些与系统进程.事件日志.和性能计数器进行交互的类库.当中包括了两个对开发人员而言十分有用的类——debug ...

  9. System.Data.Dbtype转换为System.Data.SqlDbType

    最近在做一些OM Mapping的准备工作,新学了一招. 如果要将System.Data.Dbtype转换为System.Data.SqlDbType,以前以为要写Switch Case语句.其实有很 ...

随机推荐

  1. setrendertraget 上下颠倒

    这个问题遇到两次了 之前一次是粒子rendertotexture 没设viewprot的时候是上下颠倒的 设置viewport之后就好了 现在在一个setrendertarget的地方又遇到了 上下颠 ...

  2. Swift-4-数组和字典

    // Playground - noun: a place where people can play import UIKit // 数组 字典 // 集合的可变性 赋值给var的集合是可变的mut ...

  3. SSRF攻击实例解析

    ssrf攻击概述 很多web应用都提供了从其他的服务器上获取数据的功能.使用用户指定的URL,web应用可以获取图片,下载文件,读取文件内容等.这个功能如果被恶意使用,可以利用存在缺陷的web应用作为 ...

  4. MYSQL导入导出.sql文件(转)

    一.MYSQL的命令行模式的设置: 桌面->我的电脑->属性->环境变量->新建-> PATH=“:path\mysql\bin;”其中path为MYSQL的安装路径. ...

  5. IE6/7/8如何兼容CSS3属性

    最近在工作中总是要求IE8兼容CSS3属性,在网上搜了搜主要是引入了一个htc文件(ie-css3.htc或者PIE.htc.个人认为这两个文件的作用差不多,具体差异值得探讨) 下载地址:https: ...

  6. codeforces 463D Gargari and Permutations(dp)

    题目 参考网上的代码的... //要找到所有序列中的最长的公共子序列, //定义状态dp[i]为在第一个序列中前i个数字中的最长公共子序列的长度, //状态转移方程为dp[i]=max(dp[i],d ...

  7. HDU 1686 Oulipo , 同 POJ 3461 Oulipo (字符串匹配,KMP)

    HDU题目 POJ题目 求目标串s中包含多少个模式串p KMP算法,必须好好利用next数组,, (kmp解析)——可参考 海子的博客  KMP算法 //写法一: #include<string ...

  8. iOS第三方(显示视图的宽度高度)- MMPlaceHolder

    github:https://github.com/adad184/MMPlaceHolder#readme appDelegate添加,影响全局 [MMPlaceHolderConfig defau ...

  9. POJ 1317

    #include <iostream> #include <string> using namespace std; char p_code[] = {'_','a','b', ...

  10. 历代诗词咏宁夏注释2_----苍岩道人<登文昌阁>

    登文昌阁[1] 苍岩道人 壮年碌碌走尘埃,此地清幽不肯来. 老去始惊春梦促,韶光易过槿花开.[2] 历朝兴废书千卷,万古忠奸土一堆.[3] 惟爱莎罗歌最好,闲时拍板满斟杯.[4] 注释 [说明]选自& ...