关于GPS漂移问题的一些看法。。。
GPS也有些年了,经常看到朋友讨论关于漂移的问题,谈一些自己的看法,水平有限,不足之处请多指正。
     1GPS定位的原理
     要搞清楚这个问题,首先要从GPS的定位原理讲起,从数学角度来讲,就是空间已知三点的位置,以及你到这三点的相对距离,求你的位置,这是立体几何里一个很简单的问题,是GPS的数学原理。对应到实际应用中,已知三点的位置 ,就是天上的三颗卫星,因为卫星是按照“星历”精确运行的,所以它在某一时间的位置我们可以知道,这就满足了数学原理里的第一个解题条件;第二个条件是需要知道你到这三颗卫星的相对距离,卫星发射特定的无线电信号,你的GPS接收机收到这个信号之后来比对时间差,因为无线电的传播速度是已知的,所以通过这个时间差就可以算出你相对于卫星的距离。两个条件都满足了,你的位置也就出来了。以上只是对于GPS原理的一个简单描述,实际应用还要复杂得多,事实上达到3D定位,至少需要4颗卫星,多出的一颗是用来授时的。有兴趣的朋友可以查阅相关资料来满足你的好奇心。
     2、漂移的产生原因
     明白了GPS的定位原理,我们就会发现,虽然数学原理是很简单的,但是要通过物理手段实现两个已知条件,是很复杂的事情。首先,卫星在天上飞,谁也不敢保证它能一丝不差的在自己的轨道上,总会有或多或少的偏差。其次,你的GPS接收机上也不可能安个铯原子钟,无线电波的传播速度每秒大约是30万公里,简单计算一下你就会发现,如果时间误差0.00001秒,那距离差了多少呢?即使你的时间不会有误差,无线电波在空气中的传播也会受到很多因素的影响,比如天气。以上的影响还不是最主要的,更重要的影响原因是你能收到多少卫星信号。GPS的信号是很微弱的,接收机上那么小一个陶瓷天线,你还指望能有什么太好的效果吗?所以基本上有什么东西阻挡的话,你就会收不到信号,即使你收到了十颗八颗信号很强的卫星,就一定会很准确了吗?非也,假如你正好赶上这十颗卫星都扎成一堆开会,或者排成一条整齐的队伍放学回家,那你惨了。定位是不是精确,卫星的分布位置也是一个非常重要的影响因素,好的状态是强信号的卫星以等边三角形的状态分布于天3个角落,相对距离尽量的大,不要排列在近似一条直线上,这是由GPS的数学原理决定的。以上所讲的,还都只不可控的技术误差,属于”天灾“的范畴,自古以来,“天灾”是从来离不开“人祸”的,当科技发展的水平已经足够把这些误差降到很低的时候,你还会发现另一个十分尴尬的问题就是:人家压根就不想让你得到这么高的精度。大
家知道,民用的GPS和军用的接收频点是不一样的,民用的有扰码,是专门给你捣乱用的!
     明白了以上内容,你就会发现,太多的因素影响到了GPS的定位精度,,也就导致了你站在原地不动的时候,每秒钟计算出来你的坐标位置都不同,把这些点连成线的时候,你看到的再也不是平滑的运行轨迹,而是另人十分揪心的一团乱麻,这也就是我们平时讨论比较多的漂移。
     3、我们如何对待这个问题
     通过以上的思考,我们会发现,漂移事实上是不可避免的。
     GPS的设备,跟PC机差不多,NN->∞)多家厂商在做集成,但有能力生产CPU的,就那么几家(SiRF)。事实上比PC还要简单一些,主要工作都是主芯片完成的,实力一点的集成商,自己设计线路板,生产相应的模块。山寨一点的就直接采购生产好的工业模块,装上壳子印上logo就去卖了。标准的GPS接收和蓝牙的工业模块都很容易买到,有兴趣的朋友也可以自己攒一台。说以上这些,是为了让大家明白,生产蓝牙GPS模块,事实上是没有什么技术含量的活,只要不是太山寨的厂商,都能保质保量的完成这个任务。跟做包子一样,原料和技术都差不多,不管是狗不理,还是韩包子,虽然味道可能
不同,但总归都是外边有皮,里边有馅的。最大的差别就是选择不同的主芯片,比如SiRF或者MTK,这二者的关系有点象IntelAMD,差别是有的,但都可以用。不同的芯片可能在功耗和算法上有所不同,但实际面对应用层来说,区别是不大的。经常看到有人提某某芯片的接收信号好,其实这个问题就象讨论Intel CPU电脑AMD CPU的电脑哪个安全性更高一样无聊。套用一句俗语叫:老母猪追兔子,那压根就不是它的任务。天线模块才是负责接收信号的,信号的强弱是一个物理问题,与芯片没有关系,芯片只是负责处理接收到的信号,当然,这里涉及到一个对信号处理的算法问题,科学的算法可以提高信号的辨识度以及减少误差的影响,但并不能真正提高信号接收的物理水平。对信号起到关键作用的是天线,天线的构造分平板式和螺旋式的,也很难说清哪个好哪个坏,不同的技术解决方案,各有优劣,但总体上来讲一寸长、一寸强的原则是没错的,如果你愿意背着一个锅盖大的天线,我想肯定比你现在的效果好得多。
汽车漂移原理     那既然不同厂商的差不多,不同芯片的也差不多,难道说不同的GPS真的就没有什么差别吗?没错,我基本上就是这样认为的。读到这里,可能有人会骂我了,难道没有看到网上N多的对于不同芯片、不同品牌的评测吗?漂移、冷启动、热启动。。。一大堆血淋淋的数据,难道不能说明什么吗?确实可以说明一些问题,比如,作者代理的是哪个厂商的
产品,或者哪个厂商给钱多。三百六十行里除了办证的、的,还有一个行业叫“手”,我就亲眼所见一篇文章把两个产品说成天壤之别,结果不幸就是我前面提到的公板OEM,只是壳子不一样。现在手的水平已经越来越高了,经常忽悠人于无形,上街裸奔确实可以吸引眼球,但过后不太容易收场,不如慢工出细活,小火文炖,看起来象技术文章,实际上引导你买东西。
     当然,我们也看到一些比较中立朋友的评测数据,确实有差别。比如经常说的手持机的漂移就小,我自己也有2台手持机,经过对比,确实发现漂移要小得多,什么原因呢?有一个成语叫“粉饰太平”,用来说明这个问题最合适不过了。比如一个小煤矿出事死了几十人,当地领导一研究,怎么办呢?让这些人再活过来是不可能的了,但可以让他们消失。于是往上边报的时候几十个就变成几个了,大问题变成小问题了。GPS厂商的工程师们可比这些当地领导聪明多了,所以这种方法多半也想得出来。很多配有失量地图的导航设备,大家会发现我们的轨迹会老老实实的落在道路里边,是它的精度高地图好吗?其实都不是,原因只有一个,在道路外边的点被软件硬生生的“拉”了回来,说好听点叫"校正“。手持机也有这种校正功能,因为是软、硬件一体的,而且应用也很单一,就是徒步行走,所以很容易为这种应用而进行一些软件上的优化,比如,软件侦测到了在很短的时间内发生了一个
相对较大距离的位移,那就很可能认为这是计算误差造成的,因为普通的徒步行为不可能达到那么高的速度,当然你失足从山上滚下来除外。对于这种判断为有误差的点,很简单,直接和谐掉,所以,你会看到基本上没有漂移,不是不漂移,而是漂移被和谐掉了。。。这种”和谐“的做法,从主芯片到应用软件,都有这种机制,我们会经常看到在某些应用软件里,让你选择移动方式是徒步、自行车还是汽车,事实上就是为这种”和谐“来选择一种最合适的优化校正方案。
     了解了这些情况,我们不难明白,这种和谐的校正并不是万能的,而且是一把双刃剑,有可能把不该和谐的也给和谐掉,还是小煤窑的例子,实际死了100个,应该报多少呢?这是个问题,而且是个麻烦的问题。报死了1个,没人信,一看就是假的,报死了99个?太多帽子保不住。聪明的领导会寻一个平衡,即不让报告看起来太假,又可以混得过去。GPS也一样,不同的厂商、不同的软件,优化校正的方法是不一样的,与具体应用和技术思路有关。看到这里大家就明白了,漂移小不能说明精度就高,因为你拿到的是一份和谐过的报告,是有水分的。手持机因为应用明确,软件硬件都是一体的,所以配合好。而蓝牙模块是不管应用的,只是一个信号接收和初步分析的设备,具体你是接到本本上还是手机上,你是徒步还是放在车里用,都是看你爱好,所以不同的软件、芯片、应用,都会有
不同的表现,而且也提供了修改相关参数的机制,聪明的你应该学会按自己的需求来调整设备,搞清楚自己想要的是什么,而不是盲目的去比较谁的漂移大。
     写到这里已经够长了,该结束了,又没有稿费,再写不划算了。最后只想提醒大家,买到GPS之后,高兴的带着它去玩吧,享受科技给你带来的好心情,不要没事就乐此不疲的去测试各种参数,技术是拿来用的,你又不是去炸拉登,那几米的误差对你来讲有意义吗?