如何提高GPS精度

  1. 1. 概览
  2. 2. GPS/ GNSS 背景
  3. 3. 为什么在城市环境中定位变得不够准确?
  4. 4. 优化

这是Uber18年更的一篇文章,里面详细描述了优步的做法,如何从软件角度来提高GPS的精度。

1. 概览

定位和导航所使用的全球定位系统(GPS)已然深深嵌入进了我们的生活当中,对于Uber尤其重要。Uber需要通过GPS系统知道乘车人和司机所在的位置,还要给出如何从司机所在的位置到乘车人所在位置的导航,路径规划。为了能够带来更好的用户体验,那么位置的估计就需要尽可能的精确。

GPS从出现到现在其工作原理并没有出现太大的变化,这带来了不小的表现瓶颈。而相较于1973年的技术条件,以及当时做出的我们会何时何地使用GPS的假设,我们有足够理由去考虑基于现在的技术条件去想办法改进其精度。

尽管GPS在相对空旷的地方工作的非常不错,但是在城市里,面对高楼大厦以及高密度的人群,其误差可以高达50米。

Uber开发了一个软件来升级安卓的GPS性能,通过使用client-server架构,使用3D地图,经由GNSS API来做复杂的基于GPS数据的概率运算。

本文我们会先说明下为什么GPS在现代城市当中表现很差,而后给出一个概览 - 我们是如何通过信号处理算法来解决这个问题的。

2. GPS/ GNSS 背景

GPS是被美国政府所操作的30颗卫星,在距离地球大约2万公里的地方环绕地球。这些卫星会发出信号,而我们的手机会作为接收器接收到这些信号,比较重要的一点信息是这些卫星发出的信号里面也包含了他们的发送时间。

而接收时间和发出时间的差值乘上光速就是卫星和接受者之间的距离,成为pseudorange. 如果说二者时间是同步的话,信号的传输是直线的话,那么这就会是二者之间的实际直线距离。但是在现实生活中,二者的时间往往不是同步的,因此接受者需要解决四个unknown。他自己的3d坐标以及时间差。对于四个变量,那我们就需要有四个卫星发出的信号来解决这个问题了。

在实际生活中,我们往往会用更多的卫星来计算,这样来使结果更鲁棒。

3. 为什么在城市环境中定位变得不够准确?

基于GNSS定位的一大假设就是接收人是可以直面每个卫星的,即是直线,然后我们通过直线来接收信号,处理,做出定位。但是在城市当中,很容易因为镜面的反射等原因,我们的手机依旧能接到卫星发出的信号,但是是经由反射,因此时间差要比实际的要大。这种现象导致了在城市区域误差可能达到50米的程度。

4. 优化

我们的方法利用了GNSS信号易被阻碍的特性。对于安卓手机来说,LocationManager API不仅提供了手机位置的估计,也提供了对于每个卫星针对当前位置的信噪比。如果我们使用这个信号强度的信息,加入到3D地图当中,那么我们就能得到很有价值的地点信息了。如果信噪值比较低,那很有可能当前卫星被阻挡了;相反的,就证明当前位置尚佳。这是基本的原理,但是还有些问题,比如有些时候,即便是没有被高楼阻挡,但是你站在遮挡物下边,也会对信号造成影响。另外,3D地图本身的精确度也存疑,更别提我们无法辨别当前数据是否受到随机的大型移动物体的影响。这也给整个过程增加了不确定性。

为了解决此类问题,Uber使用了概率模型,对于接收者可能在的任何位置,我们会用3D地图来检查,是否从接收者到卫星的信号会被物体阻挡。通过这种方式我们可以计算得到获得的信噪比信息的可信程度。然后通过一系列地点的对比,我们就能获得一张热力图,反映了用户最可能在的地方。

这张局部热点图经常会有多个局部最优解,这个时候我们就要借助手机本身的基于wifi的定位功能了。

基本上Uber就是通过上述的方式来做优化,使之能拿到更准确的定位结果的。

https://eng.uber.com/rethinking-gps/


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 stone2paul@gmail.com

文章标题:如何提高GPS精度

文章字数:1.3k

本文作者:Leilei Chen

发布时间:2020-01-30, 20:40:11

最后更新:2020-02-01, 22:06:58

原始链接:https://www.llchen60.com/%E5%A6%82%E4%BD%95%E6%8F%90%E9%AB%98GPS%E7%B2%BE%E5%BA%A6/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏