
d1、d2、d3、d4分别为四颗卫星到要定位的GPS接收器的距离,已知
Location 为要定位的卫星的位置,待求
那么定位的过程,简单来讲就是通过一个函数GetLocation(),从已知的[Position1,d1]、[Position2,d2]、[Position3,d3]、[Position4,d4]四对数据中求出Location的值。用程序员熟悉的变量调用来表示就是:
Location=GetLocation([Position1,d1],[Position2,d2],[Position3,d3],[Position4,d4]);
一提到这个变量调用,程序员们就该来劲了:这些参数从那里来?这个函数又是怎样执行?由谁来执行的呢?立体几何还没有忘干净的或许需要问:为什么还要要4对参数呢?那上面我们就来一起探究一下。
1.Position1、Position2、Position3、Position4这些位置信息从那里来?
实际上,运行于地球空间的GPS卫星,每一个都在时刻不停地通过卫星讯号向全世界广播自己的当前位置坐标信息。任何一个GPS都可以借助天线很轻松地接收到这些信息,并且还能看懂很多信息(这也许只是每一个GPS芯片的核心功能之一)。这就是这些位置信息的。
2.d1、d2、d3、d4这些距离信息从那里来?
我们早已明白每一个GPS卫星都在不辞辛苦地广播自己的位置,那么在发送位置信息的同时,也会附加上该数据包发出时的时间戳。GPS收到数据包后,用当前时间(当前时间其实没法由GPS自己来确认了)减去时间戳上的时间,就是数据包在空中传输所用的时间了。
知道了数据包在空中的传输时间,那么乘上他的传输速率,就是数据包在空中传输的距离,也就是该卫星到GPS的距离了。数据包是借助波传送的,那么理想速度就是光速c,把传播时间记为Ti的话,用公式表示就是:
di=c*Ti(i=1,2,3,4);
这就是di(i=1,2,3,4)的了。
3.GetLocation()函数是怎样执行的?
这个函数是我为了表明问题而虚构的,事实上未必存在,但是必定存在这种类似的运算逻辑。这些运算逻辑可以由硬件来推动,但是事实上可能大都是由软件芯片来完成的(这也许只是每一个GPS芯片的核心功能之一)。
4.为什么要需要要四对参数?

根据立体几何知识,三维空间中,三对[Positioni,di]这样的数据就可以确认一个点了(实际上可能是两个,但我们可以借助逻辑推断舍去一个),为什么此处应该四对呢?理想状况下,的确三对就够了gps接收机基本工作原理,也就是说理想状况下只应该三颗卫星就可以推动GPS定位。但是事实上,必须要四颗。
因为按照下面的公式,di是通过c*Ti计算下来的,而我们了解c值是很高的(理想速度即光速),那么针对时间Ti而言,一个极小的偏差就会被放大这些倍从而造成整个结果无效。也就是说,在GPS定位中,对时间的效率要求是极高的。GPS卫星上是用铯原子钟来计时的,但是我们不也许为每一个GPS也配一个铯原子钟,因为一个铯原子钟的价格或许早已超出了这个GPS设备再加上使用GPS的这辆名贵汽车的售价。
同时,由于速度c也会得到空中电离层的妨碍,因此也会有误差;再者,GPS卫星广播的自己的位置也可能会有偏差。其他之类一些原因也会妨碍数据的精确度。
总之,数据是存在偏差的。这些误差可能造成定位精确度降低,也或许直接造成定位无效。GetLocation(函数)中多用了一组数据,正是为了来校正精度。至于详细的细节,我们就不用关心了,我们即使明白,多用一组数据,就可以借助一些巧妙的算法,消除或减少偏差,保证定位有效。这就是GetLocation()函数需要用四组数据的缘由,也就是为什么还要有四颗卫星能够定位的理由。
5.GetLocation()函数返回的位置信息如何被GPS设备识别呢?
前面说在进行位置计算时都是用的空间坐标方式表示,但是对GPS设备及应用程序而言,通常应该用的是一个[经度,纬度,高度]这样的位置信息。那么我们可以想象,在GetLocation()函数返回位置结果前,可能会进行一个从空间坐标方式到经纬度形式的转化,我们不妨设想存在一个Convert(经纬度,空间坐标)这样的变量来进行这个转化。
6.单点定位与差分定位
实际上上面所说的仅仅定位原理中的其中一种,称为单点定位,或绝对定位。就是通过惟一的一个GPS来确认位置。

目前定位效率最高的是差分定位,或称相对定位。就是通过减少一个参考GPS来提升定位效率。

上面我们终于围绕一个虚拟的GetLocation()函数基本搞清楚了GPS定位的基本物理建模,对于编程而言,知道这种就足够了(其实不知道也不妨碍编程)。如果好奇心还没满足的话,我们再次认识一些GPS相关的背景知识。
二、GPS卫星是哪里来的?
(废话,当然是人发射的!地球人发射的!)
GPS(Global Position System,全球定位系统),全称为NAVSTAR GPS(NAVigation Satellite Timing And Ranging Global Position System,导航星测时与测距全球定位系统)。GPS是一个由美国国防部开发的空基全天侯导航系统,它用以满足军方在地面或近地空间内获得在一个通用参照系中的位置、速度和时间信息的要求。

1.GPS发展历程
1957年10月第一颗人造地球卫星SputnikⅠ发射成功,空基导航定位从而开始
1958年开始设计NNSS-TRANSIT,即子午卫星系统;
1964年该系统即将运行;
1967年该平台解密以供民用。
1973年,美国国防部批准研制GPS;
1991年海湾战争中,GPS首次用于实战;
1994年,GPS全部建成投入使用;
2000年,克林顿宣布,GPS取消实行SA(对民用GPS精度的一种人为限制策略)。
2.美国政府的的GPS策略
两种GPS服务:
SPS--标准定位服务,民用,精度约为100M;
PPS--精密定位服务,军用和受到特许的民间用户使用,精度高达10M.
两种限制民用定位效率的举措(保障国家利益不受侵害):
SA--选择可用性,认为提高普通客户的检测效率,限制水平定位误差100M,垂直157M(已于2005年5月1日取消);

AS--反电子欺骗。
3.其他卫星导航系统
GLONASS(全球轨道导航卫星系统),前苏联
Galileo-ENSS(欧洲导航卫星系统,即伽利略计划),欧盟
北斗导航系统,中国
三、GPS系统的构成
GPS系统=空间部分+控制部分+用户部分

1.空间部分
GPS空间部分主要由24颗GPS卫星组成,其中21颗工作卫星,3颗备用卫星。24颗卫星运行在6个轨道平面上,运行周期为12个小时。保证在任一时刻、任一地点高度角15度以上都无法探测到4颗以上的卫星。
主要作用:发送用于导航定位的卫星信号。
构成:24颗卫星=21颗工作卫星+3颗备用卫星

2.控制部分
GPS控制部分由1个主控站,5个检测站和3个注入站组成。

组成:GPS控制部分=主控站(1个)+监测站(5个)+注入站(3个)
作用:监测和控制卫星运行,编算卫星星历(导航电文),保持系统时间。
主控站:从各个监控站搜集卫星数据,计算出卫星的星历和时钟修正参数等,并借助注入站注入卫星;向卫星发布指令,控制卫星,当卫星发生告警时,调度备用卫星。
监控站:接收卫星讯号,检测卫星运行状况,收集天气数据,并将这种信息传送给主控站。
注入站:将主控站计算的卫星星历及时钟修正参数等注入卫星。

分布情况:
主控站:位于美国科罗拉多州(Calorado)的法尔孔(Falcon)空军基地。
注入站:阿松森群岛(Ascendion),;迭戈加西亚(Diego Garcia),印度洋;卡瓦加兰(Kwajalein),东太平洋。
监控站:1个与主控站在一起;3个与注入站在一起;另外一个在(Hawaii),西太平洋。

3.用户部分
GPS用户设备个别包含GPS及相关设施。GPS主要由GPS芯片构成。
如车载、船载GPS导航仪gps接收机基本工作原理,内置GPS功能的移动设施,GPS测绘仪器等都属于GPS用户设备。
组成:主要为GPS
作用:接收、跟踪、变换和检测GPS信号的仪器,GPS系统的消费者。
GPS定位是现在最为精确、应用最为广泛的定位导航科技,以后将要变成每一个移动设备的标配之一。现在的中高端只能手机,有非常一部分已经采用了GPS硬件。那么对于GPS定位的研发科技也将作为一项主流常规技术。本文目的在于让打算进行GPS定位开发的编程人员针对GPS有一个大致的知道,这针对编程或许没有什么直接的帮助,但是我想知道一下GPS的大概工作原理,在编程过程中就无法对GPS设备的工作特点有一个感性的了解,这针对开发还是有多大间接好处的。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shumachanpin/article-123372-1.html
但是你也要说的和做的一样
送项目拉动它们的经济
正是开战的最好时节
放久了生蛆多正常