【定位原理揭秘第四期】精准导航领域的定位技术(在高架、隧道、主辅路识别中如何实现)

2013年9月,国家导航与位置服务科技专项总体专家组发布了《室内外高精度定位导航白皮书》,其中介绍到,2012年12月,我国宣布北斗导航系统正式提供区域定位导航服务,定位精度为10米,成为第三个拥有自主卫星导航系统的国家。在此基础上,通过提供室内导航信号和室外卫星导航增强信号,具备室外广域实时定位精度优于1米、室内定位精度优于3米的定位能力。从而基本满足了人们对于全时空高精度定位导航服务的需求,一时间,高精度导航定位似乎已经走进了我们的生活。


【高精度卫星定位原理】


1.  白话介绍差分卫星定位


相信大家在使用GPS的时候,经常遇到偏差几十米甚至几百米的情形。我们在之前的文章中,介绍过这个误差不仅和手机制作工艺相关,还和环境有着极为密切的关系。比如星历误差、对流层误差、电离层误差和多路径误差等。而高精度的卫星定位,其目的就是为了消除上述误差。


可以想象,消除卫星定位误差之后,我们的导航软件,可以准确区分车道、主辅路;而遍布全国的用户的导航轨迹,也将实时生成互联网地图的道路数据,其意义会有多么巨大!这也正是高精度卫星定位备受关注的原因。


目前的高精度卫星定位,主要是通过差分技术来实现的,出于迎合“碎片式阅读”,笔者并不打算细致介绍差分定位的原理。我们用以下几句话,来描述差分定位的本质:


  1. 假设卫星定位的误差,主要受一个地方的环境影响(如天气等)。

  2. 基于(1)这个假设,一个范围不大的地方,其环境是差不多的,因此对定位产生干扰的程度,也是差不多的。

  3. 如果我们知道了某个“基准站”,此时此刻接收到的各种卫星信号观测量(比如某个卫星离基准站的距离),同时我们又能设法知道该位置真正应该有的观测量,那么我们就可以知道在此时此刻,各种观测量的误差。

  4. 基于(2)这个假设,我们把(3)中计算出的误差实时告诉这个区域附近所有的GPS接收机,把推算出的观测量偏差应用那些设备上,那么那些设备的观测误差也会“相应地”被抵消掉,它们也就能实现高精度定位。


当然,实际的差分定位比上面说的大白话要复杂很多,其具体技术包括简单粗暴、有黑盒色彩的位置差分,和有白盒色彩的伪距差分,载波相位差分等,具体我们就不再赘述。


于是有同学可能要问,为什么可以知道某个“基准站”相对于卫星信号的真实准确观测量呢?显然,根据信号传播的原理,要想知道这个就得对基准站和卫星的真实距离做精准的推算。其实这是可以做到的。因为,第一卫星的真实位置是可以通过星历精确计算出来的;第二,基准站的真实坐标,也是经过其他高精度测绘手段而得来的(最简单的,我在一个地方测量一万次,取位置的中位数,肯定比随便定位一次要来的准确吧?),从而这个真值的计算是完全有可能的。


2.  实现高精度卫星定位的条件


显然,“成立一个公司”并不是实现高精度定位的必须条件,但我们不得不承认,实现高精度卫星定位是一个不容易做到的事情。从理论上不难推断,它需要依赖如下的条件:


  1. “局部的信号偏差一致性”必须得成立。

  2. 全国部署足够多的基准站。

  3. 实现基准站与移动接收机的数据通信(起码要能广播实时的卫星信号误差)。

  4. 移动接收机也需要有相应的机制来细化调整内部定位逻辑。


现在开始进入问答时间,请问上述几个依赖条件,你认为都可以满足吗?笔者进行回答,最大的实现困难是第一点,其次是第四点。


【定位原理揭秘第四期】精准导航领域的定位技术(在高架、隧道、主辅路识别中如何实现)


首先讨论第一点,我们继续放出之前给出过的一张图,即上海高楼区域的GPS定位偏移图。导致如此恶性偏移的,不是别的原因,恰恰是多路径效应造成的实际是反射过来的GPS信号,被接收机误以为是直射过来的,从而导致计算错误。而且你如果拿手机进行测试就会发现,当在楼的南侧,可能有100m以上的误差,当拐一个弯到楼的东侧,随着遮挡的消除,误差迅速恢复正常。这表明 “局部的信号偏差一致性”在繁华的市区是不成立的。


然后讨论第四点,这种高精度定位,要想做到手机的体积,至少近期看还是有难度的——如果没有难度,没有理由想象为什么手机厂商不跟进这个有着巨大收益的feature。纵观市场,你能在市场上卖的手机里找到一台支持亚米级定位的设备吗?但是从另一方面,相比“算法”来说,“体积”一般来说都是迟早会解决的问题。我们也非常期待这个特性能真正在民用手机上落地。


所以我们最终给出一个不那么和谐,但又比较真实的结论——高精度差分定位,在人类活动最密集的城市区域还面临很大的挑战。就目前的架势看,还无法解决高楼遮挡导致的偏移,以及设备体积这两个问题。后一个问题的解决,属于工程问题,目前能看到希望,而前一个问题,目前仍然在不断优化,对于完美解决还看不到太大希望。


【在受限场景下如何实现高精度定位】


然而,天无绝人之路。理论说完,接下来我们讨论的逼格就要放低一些了。所谓互联网精神,就是“只要能解决问题就行”。也就是说,如果民用在线地图导航领域,能先把“普遍的高精度卫星定位问题”放一放,而从导航实际场景中有针对性地解决以下疑难场景,其实也就差不多可以了。在上一期中,我们分析了高楼场景问题的解决方案,下面我们简单分析一下其他几个导航中的痛点场景。


  1. 高架问题


高架问题是指在立交桥、高架桥区域,仅靠GPS的坐标,无法区分桥上还是桥下。那么这个问题如何解决?很自然地有人说,高架上下的海拔是确定的,因此靠卫星的海拔高度(x、y、z坐标中的z值)来区分高架上下。


【定位原理揭秘第四期】精准导航领域的定位技术(在高架、隧道、主辅路识别中如何实现)


这样可以吗?首先,从实验结果来看,是不可行的,计算GPS的高度误差会比平面误差要大不少。对于这个现象的原因,专业人士也是众说纷纭。理论上,笔者更认同下面这种说法,即根据交会定位的原理分析,(如下图)不难理解,如果左图这种卫星分布,更有利于计算平面上的坐标,而不利于计算高度坐标,反之右面这张图更有利于计算的是海拔高度,而不利于计算平面坐标。而卫星定位场景是前一种,所以自然地高度误差会比平面误差很大。


【定位原理揭秘第四期】精准导航领域的定位技术(在高架、隧道、主辅路识别中如何实现)


但实际上,我们说,上述原理并不是关键,或者说由定位原理导致的高度不准,并不是在高架区域不能用GPS定位确定高架上下的主要原因。


为什么?实践出真知,跑出去,用手机实测一下在高架桥上下的海拔高度,尤其是高架下。相信你会被高架下极其夸张的海拔高度所震撼,是的,对于一个地面海拔大概10m左右的高架桥区域,高架下的海拔时而可以达到几十米或者负几十米,时而又无比正常,这又是为什么?


还记得我们讨论过的多路径效应吗?其实在高架桥下,严重的遮挡导致高架桥下的GPS海拔推算已经完全偏离理想情况了,从而上述一切理论都是没用的,简单一句话就是,桥下的x、y、z坐标,全都可以差到百米开外,而且高度随机。而高架桥本身的高度差也就是10m左右,因此靠传统的高精度定位原理,基于GPS的海拔来实现高架上下判断,是不可行的。


最近这些年,随着气压计在少数旗舰手机上的配备,这个问题的解决似乎又有了曙光。由于10m左右的高架上下的气压差,是非常显著的,所以理论上可以根据手机的气压传感器来区分高架上下。但实际上,这样仍然是不可行的。原因在于两点,第一,气压会随着天气变化而显著变化,第二,就算在同一时间和地点,两个同样型号的设备,其气压值也可以完全不同。因此,靠气压的绝对值比对来实现高架上下判断,也是不可能的。


气压计只能用来识别上下高架的行为,而不能识别一个静态的车,它到底在高架上还是高架下的,更不能识别一个静态的人,他到底在一个楼的几层,这不是黑科技,而是伪科学。


那么这个高架识别的问题究竟如何解决?解铃还需系铃人,我们很难识别出高架上与地面的差异,但我们可以识别出高架下遮挡的情况,比如GPS定位半径、卫星分布情况、定位结果的异常情况等,如果我们判断出了遮挡的情况,那么剩下的就是不遮挡的,剔除了高架下的场景,剩下场景就转变为一个不重叠的平面定位问题,这样就会好做很多。


说到这里,也会有同学穷追不舍,说广州东濠涌高架路这种持续三层高架(桥下、桥上一层、桥上二层)的情形怎么破?笔者无奈地认为,这个真的很难自动识别了(主要是地面和桥上一层如何区分),只能留待后人去解决了。


2.  隧道问题


【定位原理揭秘第四期】精准导航领域的定位技术(在高架、隧道、主辅路识别中如何实现)


隧道问题是个更困难的问题,其难点在于隧道内没有任何卫星定位的信号。个人认为这个问题除非结合隧道内定位信号源的部署,否则很难直接解决这个问题。所谓信号源部署,可以考虑在隧道内均匀间隔地部署Wi-Fi、ibeacon之类的热点,这样还有定位的可能性,否则是难以实现隧道内定位的。


然而我们都知道,指望有关部门在隧道里部署Wi-Fi、ibeacon,仅仅是专门为了定位,这是不太可能的。从车辆导航的角度,还需要进行积极的定位方案改进。目前隧道问题的解决方案主要是VDR方案,VDR是车辆航迹推算的缩写,其本质原理是基于GPS提供的精准位置,叠加动作传感器的位置,这样实现在GPS失去信号时也可以进行精准定位。


在车的硬件上做VDR,这个听起来是一个比较靠谱的事情,比如说,我们基于车轮的圈数和车轮的转向,就可以不断积分算出车轮行驶的轨迹。但历史经验表明,基于无穷多的碎片,人肉做积分这个事情本身是不太靠谱的,所以很容易让人怀疑这种积分行为是否会导致误差累计呢?笔者直观判断应该还好,其原因就是:第一,车轮转多少圈没有误差累计的问题,多少圈就是多少圈,这个和方向累计是不一样的,第二这个积分的策略,可以通过大量真实GPS轨迹来学习出来。换句话说,如果你对一个车轮的积分算法,有着几万公里的真值来进行学习,那么这个算法应该可以迭代得非常靠谱。


基于上述猜测,车厂做VDR,笔者还是觉得有点意思的。但问题是我们现在要解决的是手机上做VDR的事情,手机传感器能感应到车轮的转圈数吗?一般情况下,是不能的(当然也不绝对,如果四个*有一个瘪了,手机重力传感器肯定就可以识别出这种周期的车身起伏,但我觉得这种场景太罕见了)。所以手机传感器只能识别出的是行驶方向,转向行为,以及加速、减速的行为。这样的数据误差就比较大了,比如地磁场的变化会导致行驶方向判断错误,用户频繁加减速导致速度的绝对值在这种充满了误差的加减速推算下,已经完全无法推算出来。所以纯粹通过手机传感器来做VDR,是不太靠谱的。


不过还有一种“半作弊”的办法,可以弥补这个误差。考虑到一个城市的道路是有限的,如果把城市的道路形状加载到内存里,然后把原始VDR的推算结果在隧道道路上做投影,效果就会好不少,因为用户肯定是没其他的路可走,只能是在隧道里走,所以把用户定到隧道里准没错。


另外,隧道里稍微定错个几百米,只要不出现隧道里定到隧道外的情形,一般用户也不会追究——讲真,用户只知道自己在隧道里,他也不知道自己在隧道里的真实位置。但是如果误差比较大的情况下,用户终究是会发觉的,比如我们根据VDR推算,认为此时用户已经快要出隧道了,所以播报前方xx米出隧道左转之类的,但用户肉眼就判断是不靠谱的。这该怎么办?


很遗憾,在手机上这个问题终究是无法完美解决的。但幸运的是在城市里的隧道,往往伴随着高度的变化,比如过江隧道,这种场景可以考虑用气压计来辅助定位,比如我们知道在隧道出口的气压应该是1013,现在气压是1015,那么可以推测,车辆必须要经过对应2个大气压的高度抬升才可以出隧道,所以离隧道的出口肯定还有一段不短的路。但是对于没有高度变化的隧道,气压计也没辙了,这块问题的解决,还有待后人的努力。


3.  主辅路识别问题


【定位原理揭秘第四期】精准导航领域的定位技术(在高架、隧道、主辅路识别中如何实现)


主辅路问题,和高架问题一样,都属于平行路问题。也就是仅仅靠GPS本身的平面精度,是并不足以判断在主辅路的哪一条路上的。因此,差分定位技术,有助于这个问题的彻底解决。但是问题是,差分定位需要对定位模块进行深度改造,目前手机上还是没法用的。纵然差分定位普及,还有一个坑就是高精度地图(精确到厘米级)的测绘问题,这个地图的测绘成本是巨大的。所以,我们还是要有当前可用的方案,那该怎么办呢?


首先,在GPS本身比较靠谱的情况下,我们只要保证道路数据本身的精准度,就可以识别出主辅路来。当然这个依赖于专业的测绘工作,一般来说,当道路误差不超过1米时,基本对于主辅路定位就不会太拖后腿,当然如果能做到更高精度,那就更好。


当然,如果你资金紧张,以至于无法保证专业测绘的话,理论上还有一个“低成本”的方案,就是根据航拍图、卫星图来进行局部的人工制作。这种方法道路绝对坐标不一定特别准,但起码道路宽度之类的信息,还是可以比较准确的测算出来的。


其次,一旦用户发生了主辅路切换,由于陀螺仪和加速度计的高度敏感性,使得这种行为也是可以通过陀螺仪识别出来的。以前配备陀螺仪的手机很少,不过由于陀螺仪相对于游戏是不可或缺的,所以配备陀螺仪的手机也越来越多。说到这里,忍不住吐个槽,差不多的成本,对于导航有着重要意义的气压计的待遇迄今仍然非常悲惨。迄今为止只有国外大厂的旗舰手机才会配备气压计。笔者只能理解为与气压计相关的应用(主要是游戏)还不够发达,所以厂家做此事的动机并不是很强。


【定位原理揭秘第四期】精准导航领域的定位技术(在高架、隧道、主辅路识别中如何实现)


如上图所示,车辆是从右往左开的,在中间区域发生了一个向左并切到主路上的动作,实际上这个动作的特征是大约有几秒的0.1幅度的正转向,之后短暂维持0转向后,再观测到0.1幅度的负转向,注意切入主路前,有一个减速,完全符合交规中“支路避让干路”的惯例。尽管我们可以认为这也可能是一次正常并线,但考虑到这个地方也确实有个切到主路的口,综合考虑,我们便能大概率地认为用户确实已经按照我们的诱导转到了主路上。


第三,进一步结合经验进行思考,一般主路遇到路口都会以立交的方式通过,从而不会发生减速(北京为什么这么多桥,就是这么来的),但在限速摄像头区域,则很可能发生减速行为。而辅路则会在其他区域会有潜在的减速行为(当然也可能不减速)。因此,主路和辅路的行驶特征是不同的。既然这样,有模式识别经验同学,就会想到构建一个分类器,将驾驶速度的空间分布数据作为输入,主辅路则作为输出。支持这种分类的模型就很多了,比如SVM、决策树、逻辑回归乃至神经网络等。


这个事情看上去还是很美好的(起码还是有技术含量的),但是弱点第一是真值的大规模自动化收集是个问题。第二是虽然这个方法准确率高,但是判定主辅路需要一段时间的轨迹,从产品设计层面上恐怕比较难做。比如用户传统观念,认为人眼能判断的真相,机器也应该能轻松判断(用户不会管机器有没有眼睛)。所以很难接受在一开始不告诉自己在主路还是辅路,而是要“在一段时间后”再告诉自己。


【终极导航定位方案】

在本文的最后,我们畅想一下终极的导航定位方案。


请大家先问自己,人是怎么判断主辅路的?是基于GPS坐标吗?当然不是,人是靠视觉来解决问题的。所以最终极的办法,是依赖计算机视觉。笔者认为,从长远考虑,未来的导航应该是基于机器视觉+高精度定位的。但坑也同样很多,主要原因:


第一依然是产品层面上的问题,我们可能会要求用户把手机摄像头长期开启,对手机姿态也有要求,这是一种比较新的产品形态。不过直观判断当然这个应该还好。


第二是耗电问题,比如大规模计算和摄像头开启会导致极度耗电,当然有人说插着充电器,这都不是事儿。这种键盘党忽略了CPU和GPU的全速运转+同时充电+车辆本身散发出的热量,这是会导致手机过热而有爆炸危险的。


第三是计算性能问题,目前我知道的深度学习的预测系统,还很少有能在手机上能做实时计算的,这和手机本身孱弱的计算性能是有关系的,这个问题如果不解决,那么笔者所谓的手机上的终极导航实现方案,就还有很长的路要走。


不过,对于终极导航形态,笔者还是充满希望的。因为根据我们的经验,计算性能问题,假以时日都还是能慢慢突破的。算法理论上的极限才是真正难以突破的鸿沟。那么问题就转变为:基于机器视觉+传感器的高度智能的导航,存在无法逾越的算法难题吗?


个人感觉应该还好。判断原则就是——凡是一个正常人能轻松做到的,机器早晚也是能做到的,凡是人做不到但是可以靠有限的穷举来解决的,机器不仅能做到而且能做的比人更好(如阿尔法狗)。从高精度定位这个case来说,还有高精度GPS+高精度地图这种给力的辅助作为解空间的约束,所以这个问题的解决,恐怕只是时间问题罢了。


【定位原理揭秘第四期】精准导航领域的定位技术(在高架、隧道、主辅路识别中如何实现)