郑昀(公众号:老兵笔记) 20180424

2018年4月19日,Uber 公布了 GPS 优化算法,https://eng.uber.com/rethinking-gps/,针对GPS定位在城市环境中表现不佳做了修复,如可以通过卫星信号信噪比(缩写为SNR)和3D地图来判断出你在马路的左侧还是右侧。

如下图3所示,GPS定位基本假设是,接收机对每个正在计算其伪距的卫星都有直接的LOS(为 line of sight 的缩写,无线电信号的视线传输),在开阔地形中工作无碍,但在城市环境中则偏差较大。接收机经常需要处理建筑物反射的强烈信号,这往往会导致城市峡谷中的位置误差在50米以上。

如下图4所示,如果某颗卫星的信号比预期弱,那么很可能被大楼挡住了,你处在大楼的阴影里面,因此可以据此修正你的位置。

怎么做呢?
第一,我们有 3D 地图。对于城市内任何位置的接收器,我们可以校验卫星的 LOS 是否会被遮挡。
第二,安卓手机上,LocationManager API 不仅提供了手机的位置估计,还提供每个GNSS卫星的信噪比(SNR)。
第三,使用一个在 LOS 和阴影条件下的信噪比概率分布模型,我们可以算出任何位置任何时间信号的信噪比似然估计。
第四,最终绘制出这么一张位置热力图,如下图5所示:

第五,既然是一个概率模型,那根据手机上报的位置,Uber 估算出你的每一个运动点都有很多的可能性(像电子云),并最终推演你的实际运行轨迹。如下面这张动图所示。

-EOF-

赠图1枚:

昨天我改了200多个BUG

Uber是如何重新思考GPS定位的(尤其是在城市峡谷中)的更多相关文章

  1. GPS定位 测试

    public class MainActivity extends Activity { private final String TAG = "BX"; private Loca ...

  2. Android中GPS定位的简单应用

    在Android中通过GPS获得当前位置,首先要获得一个LocationManager实例,通过该实例的getLastKnownLocation()方法获得第一个的位置,该方法的说明如下: void ...

  3. GPS定位为什么要转换处理?高德地图和百度地图坐标处理有什么不一样?

    GPS定位为什么要转换处理?高德地图和百度地图坐标处理有什么不一样? 先了解一下 高德地图 采用: GCJ-02 (不可逆) 百度百科: http://baike.baidu.com/link?url ...

  4. GPS定位原理

    多分钟吧(有人认为美国对其本土覆盖的GPS信号实行不同码率因此纯GPS定位也会很快,谁有美国朋友不妨让他拔卡试试)!因为美版机型其GPS模块的数据处理软件部分与欧版机型是不同的,欧版机型的数据处理软件 ...

  5. GPS(2)关于位置的3个示例,实时获取GPS定位数据,求两个经纬点距离,邻近某个区域圆时警告

    实时获取GPS定位数据 import android.app.Activity; import android.content.Context; import android.location.Loc ...

  6. Android开发之位置定位详解与实例解析(GPS定位、Google网络定位,BaiduLBS(SDK)定位)

    在android开发中地图和定位是很多软件不可或缺的内容,这些特色功能也给人们带来了很多方便.定位一般分为三种发方案:即GPS定位.Google网络定位以及基站定位 最简单的手机定位方式当然是通过GP ...

  7. GPS定位学习笔记

    ********************************* GPS定位简介 ********************************** 1. iOS SDK提供两个框架来实现位置服务 ...

  8. LBS 与 GPS 定位之间的区别

    什么是LBS定位?   LBS英文全称为Location Based Services, 它包括两层含义:首先是确定移动设备或用户所在的地理位置:其次是提供与位置相关的各类信息服务.意指与定位相关的各 ...

  9. 与众不同 windows phone (20) - Device(设备)之位置服务(GPS 定位), FM 收音机, 麦克风, 震动器

    原文:与众不同 windows phone (20) - Device(设备)之位置服务(GPS 定位), FM 收音机, 麦克风, 震动器 [索引页][源码下载] 与众不同 windows phon ...

随机推荐

  1. c# xml操作(一)

    c# xml操作(一) 此博文包含图片 (-- ::)转载▼ 标签: 杂谈 分类: c# 同样是增,删,改,查四种操作.现在我们就详细介绍一下增和删两种操作.看下面的一个xml示例: <?xml ...

  2. 由一条sql语句想到的子查询优化

    摘要:相信大家都使用过子查询,因为使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,比较灵活,我也喜欢用,可最近因为一条包含子查询的select count(*)语句导致点开管理系 ...

  3. selenium 定位元素成功, 但是输入失败 (textarea)

    问题描述 UI页面功能测试中, 定位元素并输入(通过sendKey()方法输入), 显示输入失败. 根本原因 为了修复一个bug, 这个元素从input改成了textarea, 而textarea是有 ...

  4. Python三元运算

    result = 值1 if 条件 else 值2 如果条件为真,result = 值1 如果条件为假, result = 值2.

  5. 关于Kafka配额的讨论(2)

    继续前一篇的讨论.前文中提到了两大类配额管理:基于带宽的以及基于CPU线程使用时间的.本文着重探讨基于CPU线程时间的配额管理. 定义 这类配额管理被称为请求配额(request quota),管理起 ...

  6. 【BZOJ 3534】: [Sdoi2014]重建

    题目大意:(略) 题解: 相对误差……我好方. 考虑答案应该为所有合法答案概率之和.对于一个合法的生成树,其出现概率应为所有选取边的概率出现的积 乘以 所有未选取边不出现概率的积. 即: $\;\pr ...

  7. C# 在异步线程操作类的变量

    如下代码: public partial class Form1 : Form { public Form1() { InitializeComponent(); } public string Me ...

  8. appium--xpath定位元素用法

    一.xpath的使用场景: 自动化测试中经常对元素进行操作时,如果存在id.name.content_desc时,可通过appium框架提供的方法find_element_by_id/name/tag ...

  9. python之算法排序模块

    这是一个能够随时学习重要算法的Python模块,记录在案,方便查看 特点 易于使用 容易理解的文档 快速获取算法的源代码 随时获取时间复杂度 安装 仅需在终端中执行以下命令: pip3 install ...

  10. 全面理解 javascript 的 argements caller callee call apply 之caller

    /** * 演示arguments的用法,如何获取实参数和形数数 */ function argTest(a,b,c,d){ var numargs = arguments.length; // 获取 ...