在这个移动互联网时代,不管是位置分享、搜索周边还是路线规划都需要对用户进行定位,获取用户所在的位置,而这些操作都离不开定位服务。然而当大家在分享位置时,往往会出现因为建筑遮挡导致路径偏移、位置定位不准确的情况。华为定位服务的SuperGNSS技术正为大家解决这一难题,致力为大家提供更便捷精准的定位服务。
在介绍SuperGNSS技术原理之前,先给大家解释一个名词——城市峡谷。从这张图可以看出,随着城市里的高楼越来越高、越来越密集,当我们抬头看的时候,只能看到一片天或者是一线天,这种以街道切割周围稠密建筑街区而形成的人造峡谷就称为城市峡谷。著名的例子如中国香港九龙与中环地区、美国纽约曼哈顿等全球一百多个城市都有这样的现象。
那么,在城市峡谷的场景下,卫星定位为什么不准确呢?原因是卫星信号从天上传播到手机里的时候,会因为建筑遮挡发生信号路径的反射,在这个图上蓝色的路径是经过一次反射到了手机里,黄色的比较严重是经过二次反射到了手机里的。
其实,在实际城市的密集街道信号场景中,大多数信号都是通过非直线路径并且多次反射才到了手机里,这就使我们的卫星定位会产生五十米至两百米的偏移。
比如使用打车类应用的时候,当大家站在十字路口发起打车,定位往往不能精确的获取到大家的位置,本来你在十字路口的东北角,定位却定在了西南角,这时司机就无法找到你的真实位置;还有在使用生活类应用的时候,当大家搜索周边地点时,本来你所在的位置是有一家美食店的,可因为路径偏移、定位的结果却显示在下一个街区,那么当你走到下一街区时就会发现根本找不到这家美食店。以上这种种定位发生偏差的情况往往会大大降低用户对应用使用的体验感。
那么SuperGNSS技术是如何解决这样的问题的呢?首先利用星历的信号计算出卫星当前在天上的三维坐标, 另一方面GNSS的原始观测标量计算出卫星的实际位置。有了这些数据以后,我们就可以把卫星信号到达手机里的传播模型计算出来。然后建立一个射线追踪的算法,追踪天上的卫星信号到底是怎么进到手机里的,借助地面上建筑三维的模型库来预测卫星信号的轨迹,通过计算把这些轨迹变成一个直射的伪距用来提升定位精度。
提升到什么程度呢?SuperGNSS技术可以把建筑遮挡的效应彻底抵消掉。首先我们有一个目标识别的深度学习的一个模型,基于这个模型,就可以把一个建筑物的底部轮廓,包括建筑物的坐标完全学习出来。然后用遥感测量中的多频谱分析技术,可以把建筑物的高度给计算出来。有了轮廓再加上高度,那我们这个3D模型库就构建出来了。基于这个3D模型库就可以把最终伪距校准,现在我们的3D模型库可以做到米级的精度。
SuperGNSS技术应用的场景有很多,除了能追踪一次反射的双边遮挡情况,二次反射追踪通过算法的优化精确率也大大提升了,像是单边遮挡、十字路口、丁字路口这些更为复杂的场景也能精准识别。一次反射追踪的精确率能到90%,二次反射的精确率能到75%。
来看看我们在东京和法兰克福两个城市跟竞品做的对比测试,这主要测试的是定位对道路左右侧识别的准确度。在这个场景下,使用了SuperGNSS技术的Mate30道路两侧识别的正确率是竞品的近4倍,高达90.77%。
除此以外,我们在全球做了外场测试,这是一些典型城市的测试结果。有阿联酋的阿布扎比,欧洲的巴塞罗那、罗马,还有南美的智利圣地亚哥,以及中国的北京上海。这个图中蓝色点代表用户的真实位置,绿色点是我们SuperGNSS的定位结果,红色是没有用到我们技术的定位结果。从这几个图中来看,我们的定位都是非常精准的。
最后,如果你想要接入华为定位服务,只需要简单的五个步骤,即可完成。如果要调用SuperGNSS,完全不用做任何额外的工作,只要调用我们定位服务的接口即可支持,包括数据库的准备,定位的计算等,都藏在这个接口后面。
欲了解更多详情,请参阅:
华为开发者联盟官网:https://developer.huawei.com/consumer/cn/hms?ha_source=hms1
获取开发指导文档:https://developer.huawei.com/consumer/cn/doc/development?ha_source=hms1
参与开发者讨论请到Reddit社区:https://www.reddit.com/r/HuaweiDevelopers/
下载demo和示例代码请到Github:https://github.com/HMS-Core
解决集成问题请到Stack Overflow:https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest
原文链接:https://developer.huawei.com/consumer/cn/forum/topic/0201441829931230425?fid=18
原作者:胡椒
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。