如何看待百度地图宣布切换为优先运用北斗系统进行定位?

近日百度地图称,已切换为优先运用北斗系统进行定位,并已实现97.81%北斗优先定位比例。与此同时,有专家认为“百度地图切换为北斗优先定位”的说法不实,…
关注者
1,091
被浏览
3,030,676

342 个回答

如果手机支持北斗定位的话(目前市场上绝大部分手机都支持北斗定位),手机会综合接收北斗、GPS、GLONASS等系统的卫星信号,综合进行处理解算出手机当前的位置。接下来手机通过安卓系统的驱动程序接口,向APP提供定位的结果,包括经纬度、高度、速度、速度方向等等。百度地图、高德导航等地图应用都是从驱动程序提供的接口获取的位置信息,然后在地图上显示出手机所在的位置,并进行导航的。99%以上的应用都是这么干的,包括以前的百度地图。所以,百度地图这样的app,只能使用手机定位后的结果,并不能影响手机使用什么卫星进行定位,也就不存在什么优先使用北斗了。

然而,事情还没有完。安卓7.0以上的系统不但可以输出定位结果,还可以输出卫星原始观测数据(伪距、载波相位等),通过这些原始观测数据可以计算出手机的位置。此时便不再使用手机系统计算的位置结果,而是在应用层自己计算位置。这次百度更新的很大一个新内容,也是源自于此,在应用层使用卫星原始观测数据自己进行定位解算,此时便可以选择只使用北斗卫星进行定位解算了。所以呢,百度的说法恨不准确,根本没有什么优先,这不叫北斗first,这叫北斗only。

再一个然而,这有啥用呢?百度的说法是针对高安全、高保密的行业,提供更安全的服务,金融行业、国家事业单位对优先北斗定位存在较强的需求。但我个人认为,这是扯淡兼作秀。因为正常情况下单北斗定位和北斗+GPS联合定位效果是一样的,不会因为增加了GPS就会被监控被干扰。非正常情况下,比如中美开战,美国会关闭相关区域的GPS民用信号,到时候手机收不到GPS信号,被迫只使用北斗信号进行定位,但还是能正常定位,不会因为GPS信号关了就不能定位了。所以不论是平时还是特殊清单,有没有GPS卫星参与定位都没啥不安全的。反而是只使用北斗定位的时候,由于没有GPS卫星、卫星数变少了,会导致定位精度变差,甚至在卫星信号遮挡严重的地方会导致不能定位。

最后一个然而,北斗only现在看来没什么卵用,但百度此举并非毫无意义。我查了百度地图的技术文档,实现北斗only的功能需要在程序中集成库文件libbdrtk.so,这个库文件可以进行应用层面的定位解算。重点在这个库文件的名字,libbdrtk。lib表示库,没啥好说的。bd表示北斗,也是应有之义。最后的rtk可就有意思了。rtk是一种高精度卫星定位技术,通过联网获取修正数据来提高卫星定位的精度,从原来的米级可以提高到亚米级甚至于厘米级。个人猜测,百度未来会继续更新这个库,逐渐增加rtk定位的功能,即读取卫星原始观测数据,进行rtk定位解算,实现亚米级甚至更高精度的定位。有了亚米级的定位精度之后,车辆可以知道自己正在哪条车道上行驶,自然就可以实现车道级导航了。指望手机在系统层面支持rtk定位比较难,手机厂家和手机型号那么多,很难大范围推广,那么如果在应用层面能很好的实现rtk定位,那么我们完全可以提前几年实现车道级导航的大范围普及。不过,事情没那么简单。rtk定位对卫星信号的质量要求很高,几年前就有朋友做过这方面的开发,在应用层面进行rtk解算,测试发现定位效果不太好,主要是手机的天线只能满足普通卫星定位的需求,但做rtk解算还是不行,那这就不是百度能左右的了,再怎么优化算法上限还是很低,需要联合手机厂家一起努力配合才行。

最后给出结论:北斗优先是忽悠人的,其实是提供了单北斗定位的方案可供选择。现在没什么用,未来可期,道阻且长。

记得安卓在应用层LocationManager这个层次,可以通过GnssStatus(老版本安卓是GpsSatellite)这个类来获得目前卫星定位服务所锁定的所有定位卫星,通过getConstellationType获得卫星的类型,除了GPS 伽利略 格罗纳斯 北斗之外还有三种。

但是通过LocationManager对卫星信息只能get,不能set。

看了其他几个类GnssMeasurement、GnssMeasurementRequest、GnssClock等等,都没看到什么接口可以控制定位服务的寻星类型。

除非导航应用调用了各手机系统或者底包自己搞的接口,或者是一些手机的系统将不同种类的卫星定位做成不同的LocationProvider,应用层的导航应用好像并不能指定卫星定位服务寻星时的类型优先级吧。

倒是可以通过GnssStatus统计有多少颗哪些类型的卫星参与了定位过程,以及其接收信号强度等参数。


刚下单了一个小米4,SoC是高通最后一代基带不支持北斗频段的801。不知道跑最新版百度地图等软件,会不会显示北斗导航?不过估计需要升级到Android7以上,GnssStatus才能用。

可以用GPS Status这个app,到户外去搜星,显示出来的卫星号不带字母的就是GPS,带r的就是格罗纳斯,带c的就是北斗。如果搜不到带c的,可以确定机器基带、射频或者软件上不支持北斗了。


小米4还有问题,先找了个荣耀畅玩5(MT6735P,官方规格上面不支持北斗)试了一下。确实机子搜不到北斗卫星,用百度地图,导航右上角也显示的“强”而不是“北斗导航”。

但我就搞不清楚了,我前几天用日版索尼XZ3,北斗能搜到星但锁不了星,它给我显示个北斗导航在那里。显示这个的判断依据到底是什么?