首页 / 科技 / 正文

定位服务把你放在了河对岸?聊聊那个蓝点为什么总在飘

那天晚上我站在路口等车。

手机屏幕上的蓝点,安安静静地待在马路对面的河面上。

司机打电话过来,语气挺客气:兄弟,我在你定位这儿呢,你人呢?我抬头看了看四周——没有人,没有车,只有一条护栏和黑乎乎的水。我说师傅你往北开两百米,我在桥这头。他说导航让我停这儿。我说导航错了。他说导航不会错。

挂了电话我盯着那个蓝点看了好几秒。它还在水里。

这事儿几乎每个人都遇到过。你明明站在商场一楼,地图说你在地铁站。你刚进小区,定位在隔壁三条街。你骑车沿着河走,蓝点一头扎进河中央再慢慢爬回来。大家骂两句,划走,继续走。

但那个蓝点到底是怎么来的?它为什么知道你在哪,又为什么经常不知道?

卫星只是其中一条线索,而且是最不靠谱的那条

很多人以为定位就是卫星盯着你。天上有几十颗卫星,低头一看,哦你在南京新街口。

差得有点远。

真实的流程反过来说更好理解。卫星不停地在广播,广播的内容基本就是:我是几号星,我在天上哪个位置,这条消息是我几点几分几秒发出来的。它的信号是单向的,撒下去,谁收到谁算。

你的手机收到四颗以上卫星的消息,就能算出自己和每颗星之间的距离,然后解一个球面方程,把自己的坐标倒推出来。整个过程中,手机只收不发。卫星从头到尾不知道你是谁,也不知道你在哪。

那问题来了。卫星离你两万公里,信号到你手机的时候已经弱得不像话。薄薄一层楼板能挡,一把伞能挡,一片树叶抖一抖都能影响。你走进屋里,头顶是混凝土,卫星基本就瞎了。

所以手机开始找别的线索。

基站。你连的每个手机信号塔都有编号,知道自己在哪,信号到你手机要多长时间,大致能估个距离。精度不好,但至少能知道你在哪个区。

Wi-Fi,这个更神奇。你连过的、你扫到的每一个路由器,都有一个全球唯一的MAC地址。这类地址在很早以前就被大量路测车扫过一遍,谁家路由器在哪栋楼哪个楼层,都存进了数据库。你的手机一开机,扫到三个熟悉的路由器,服务端一查,你大概就在它们附近。哪怕你没连上,只是扫到了,位置就已经漏了。

再往后还有蓝牙信标、地磁指纹、气压计(用来判断楼层)、陀螺仪和加速度计(你走了几步、拐了几个弯,叫惯性推算)。

这些东西拼在一起,才叫定位服务。它不是一件事,是一堆线索互相投票的结果。

手机地图定位蓝点漂移偏移实际位置截图

飘,是因为所有线索都在吵架

你手机里的定位芯片,本质上是个裁判。

卫星说你在A点,误差八米。Wi-Fi说你在B点,误差三十米。基站说你在C点,误差五百米。惯性推算说你刚往北走了十步,应该在这儿。它得判断谁更可信。楼层高、周围空旷、刚走出电梯——每种情况下的可信度都不一样。

于是你就看到了那个蓝点。它其实不是一个点,是一个范围。地图厂商挑了个最可能的中心,用一个圆点遮住整个不确定的区域。有些地图会画一个淡淡的圆环,那个圈才是真相。圈越大,说明系统越没底。

城市里最容易出问题的,是高楼。玻璃幕墙会把卫星信号来回弹,你手机收到的那条消息可能是从对面大厦反弹过来的,走的路程比直线长,算出来的距离就偏了。四条偏掉的距离解出来的坐标,可能把你扔到几条街外。这叫多径反射。

城市高楼玻璃幕墙GPS多径反射信号路径示意图
城市高楼玻璃幕墙GPS多径反射信号路径示意图

还有一种情况特别有意思。

你开车进隧道,卫星信号断了。但导航没瞎,它开始靠车速和方向推算你的位置——惯性导航。你出来那一瞬间,如果推算是准的,蓝点会平顺地接上真实位置。如果车在隧道里堵了十分钟,或者中途变过道,推算就会累加误差。出隧道那一刻,你会看到蓝点“啪”地一下从某个莫名其妙的地方弹到你旁边。不是它突然找到了你,是它终于能重新校准了。

室内的另一个世界。GPS进不来,商场会用蓝牙信标——天花板上每隔几米挂一个,每个都在广播自己的编号。你手机收到三个,就能推算出自己具体站在哪个铺位前面。地下车库找车也靠这个。但代价是,商场得提前把整栋楼布一遍,成本不低,所以你在小饭馆里定位就永远是一坨雾。

关于定位,有几个说法其实是错的

关于定位,有几个说法其实是错的
关于定位,有几个说法其实是错的

第一个。有人觉得关了GPS就安全了。不一定。你把卫星定位关了,基站和Wi-Fi照样在跑。App拿不到精确坐标,但拿个几百米的模糊位置完全没问题。再退一步讲,IP地址也能大致告诉你所在的城区。真正想彻底隐身,得钻进飞行模式,还得拔掉SIM卡,而且连了Wi-Fi以后又会暴露。定位服务更像是一张网,你剪掉一根线,其他线还挂着。

第二个。有人以为只有在用导航的时候,位置才在被读取。也不是。很多App在后台会定期请求大致位置,用来做推荐、做风控、做本地化内容。你打开外卖软件那一刻看到的“附近商家”,背后就是一次定位。你每刷一条同城视频,它可能都顺手看了一眼你在哪个城市。

第三个,也是最常见的一个误解——觉得定位是有标准答案的。它不是。定位服务给的从来都是概率,是估计,是“我有八成把握你在这个圈里”。只是地图厂商很聪明,它把那个圈藏起来了,只给你看一个点。因为一个点看起来比一个圈可信多了。

说实话,这也挺人类的。我们不喜欢不确定性,宁可要一个错误的确定。

你手机旁边那条河,其实是算法的一个小小失误

回到开头那个晚上。

我后来想了一下为什么蓝点会在河里。我站的位置,一侧是高架,一侧是水面,对面有一排写字楼。我的手机可能同时收到了几颗从玻璃幕墙绕过来的卫星信号,距离全被拉长了;然后Wi-Fi列表里有几个信号很弱的邻居路由器,把位置往西拽了一把;再加上基站的位置比较远。几票投下来,最优解就变成了河中央。

这不荒谬。这是数学在这种情况下最诚实的答案。

所以下次蓝点又飘了,你可以骂它一句。但你别觉得是它蠢。它只是拿着几条模糊的、带噪声的、彼此矛盾的线索,试图告诉你一个大概的位置。

你手里那个小小的蓝点,背后是几十颗卫星、几百个基站、无数Wi-Fi指纹、一个商圈里几十个蓝牙信标的协作和拉扯。它们凑在一起,才勉强描绘出你在这颗星球上的那三米。

三米的误差,对走路的人来说刚刚好。对等车的我来说,就是一条河的距离。导航师傅说它不会错的时候,我其实理解他。他和那个蓝点一样,都很努力地在说自己认为对的事。

只不过河它不会说谎。