国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > 综合技术 > GPS定位基本原理浅析

GPS定位基本原理浅析

来源:程序员人生   发布时间:2017-02-18 09:25:02 阅读次数:3388次

位置服务已成为愈来愈热的1门技术,也将成为以后所有移动装备(智能手机、掌上电脑等)的标配。而定位导航技术中,目前精度最高、利用最广泛的,自然非GPS莫属了。网络上介绍GPS原理的专业资料很多,而本文试图从编程人员的角度动身,以1种程序员易于理解的方式来简单介绍1下GPS定位的基本原理,希望对做GPS开发的朋友有所启发。固然,本文并没有触及具体的开发方面的技术。

1、GPS定位数学模型

之所以先介绍数学模型,是由于我认为这个数学模型多是程序员比较关心的问题。固然事前声明,这个模型只是我根据1些GPS资料总专为程序员总结出来的1个简化模型,细节方面可能其实不符合实际,想了解具体细节请参考专业的GPS讲授资料。

GPS定位,实际上就是通过4颗已知位置的卫星来肯定GPS接收器的位置。

如上图所示,图中的GPS接收器为当前要肯定位置的装备,卫星1、2、3、4为本次定位要用到的4颗卫星:

  • Position1、Position2、Position3、Position4分别为4颗卫星确当前位置(空间坐标),已知
  • d1、d2、d3、d4分别为4颗卫星到要定位的GPS接收器的距离,已知
  • Location 为要定位的卫星接收器的位置,待求

那末定位的进程,简单来说就是通过1个函数GetLocation(),从已知的[Position1,d1]、[Position2,d2]、[Position3,d3]、[Position4,d4]4对数据中求出Location的值。用程序员熟习的函数调用来表示就是:

Location=GetLocation([Position1,d1],[Position2,d2],[Position3,d3],[Position4,d4]);

1看到这个函数调用,程序员们就该来劲了:这些参数从哪里来?这个函数又是如何履行?由谁来履行的呢?立体几何还没有忘干净的可能还要问:为何必须要4对参数呢?那下面我们就来1起探究1下。

1.Position1、Position2、Position3、Position4这些位置信息从哪里来?

实际上,运行于宇宙空间的GPS卫星,每个都在时刻不停地通过卫星信号向全球广播自己确当前位置坐标信息。任何1个GPS接收器都可以通过天线很轻松地接收到这些信息,并且能够读懂这些信息(这其实也是每个GPS芯片的核心功能之1)。这就是这些位置信息的来源。

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()函数是如何履行的?

这个函数是我为了说明问题而虚构的,事实上未必存在,但是1定存在这样类似的运算逻辑。这些运算逻辑可以由软件来实现,但是事实上可能大都是由硬件芯片来完成的(这可能也是每个GPS芯片的核心功能之1)。

4.为何要必须要4对参数?

根据立体几何知识,3维空间中,3对[Positioni,di]这样的数据就能够肯定1个点了(实际上多是两个,但我们可以通过逻辑判断舍去1个),为何这里需要4对呢?理想情况下,的确3对就够了,也就是说理想情况下只需要3颗卫星就能够实现GPS定位。但是事实上,必须要4颗。

由于根据上面的公式,di是通过c*Ti计算出来的,而我们知道c值是很大的(理想速度即光速),那末对时间Ti而言,1个极小的误差都会被放大很多倍从而致使全部结果无效。也就是说,在GPS定位中,对时间的精度要求是极高的。GPS卫星上是用銫原子钟来计时的,但是我们不可能为每个GPS接收器也配1个銫原子钟,由于1个銫原子钟的价格可能已超过了这个GPS装备再加上使用GPS的这辆名贵汽车的价格。

同时,由于速度c也会遭到空中电离层的影响,因此也会有误差;再者,GPS卫星广播的自己的位置也可能会有误差。其他等等1些因素也会影响数据的精确度。

总之,数据是存在误差的。这些误差可能致使定位精确度下降,也可能直接致使定位无效。GetLocation(函数)中多用了1组数据,正是为了来校订误差。至于具体的细节,我们就不用关心了,我们只要知道,多用1组数据,就能够通过1些奇妙的算法,消除或减小误差,保证定位有效。这就是GetLocation()函数必须用4组数据的缘由,也就是为何必须有4颗卫星才能定位的缘由。

5.GetLocation()函数返回的位置信息怎样被GPS装备辨认呢?

前面说在进行位置计算时都是用的空间坐标情势表示,但是对GPS装备及利用程序而言,通常需要用的是1个[经度,纬度,高度]这样的位置信息。那末我们可以想象,在GetLocation()函数返回位置结果前,可能会进行1个从空间坐标情势到经纬度情势的转换,我们无妨假定存在1个Convert(经纬度,空间坐标)这样的函数来进行这个转换。

6.单点定位与差分定位

实际上上面所说的只是定位原理中的其中1种,称为单点定位,或绝对定位。就是通过唯1的1个GPS接收器来肯定位置。

目前定位精度最高的是差分定位,或称相对定位。就是通过增加1个参考GPS接收器来提高定位精度。

 

 

上面我们已围绕1个虚拟的GetLocation()函数基本弄清楚了GPS定位的基本数学模型,对编程而言,知道这些就足够了(其实不知道也不影响编程)。如果好奇心还没满足的话,我们继续了解1些GPS相干的背景知识。

 

2、GPS卫星是哪里来的?

(空话,固然是人发射的!地球人发射的!)

GPS(Global Position System,全球定位系统),全称为NAVSTAR GPS(NAVigation Satellite Timing And Ranging Global Position System,导航星测时与测距全球定位系统)。GPS是1个由美国国防部开发的空基全天侯导航系统,它用以满足军方在地面或近地空间内获得在1个通用参照系中的位置、速度和时间信息的要求。

1.GPS发展历程

  • 1957年10月第1颗人造地球卫星SputnikⅠ发射成功,空基导航定位由此开始
  • 1958年开始设计NNSS-TRANSIT,即子午卫星系统; 
    1964年该系统正式运行; 
    1967年该系统解密以供民用。
  • 1973年,美国国防部批准研制GPS; 
    1991年海湾战争中,GPS首次大范围用于实战; 
    1994年,GPS全部建成投入使用; 
    2000年,克林顿宣布,GPS取消实行SA(对民用GPS精度的1种人为限制策略)。

2.美国政府的的GPS策略

  • 两种GPS服务: 
    SPS--标准定位服务,民用,精度约为100M; 
    PPS--精密定位服务,军用和得到特许的民间用户使用,精度高达10M.
  • 两种限制民用定位精度的措施(保障国家利益不受侵害): 
    SA--选择可用性,认为下降普通用户的丈量精度,限制水平定位精度100M,垂直157M(已于2005年5月1日取消); 
    AS--反电子欺骗。

3.其他卫星导航系统

  • GLONASS(全球轨道导航卫星系统),前苏联
  • Galileo-ENSS(欧洲导航卫星系统,即伽利略计划),欧盟
  • 北斗导航系统,中国

 

3、GPS系统的构成

GPS系统=空间部份+控制部份+用户部份

1.空间部份

GPS空间部份主要由24颗GPS卫星构成,其中21颗工作卫星,3颗备用卫星。24颗卫星运行在6个轨道平面上,运行周期为12个小时。保证在任1时刻、任1地点高度角15度以上都能够观测到4颗以上的卫星。

主要作用:发送用于导航定位的卫星信号。

构成:24颗卫星=21颗工作卫星+3颗备用卫星

2.控制部份

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

组成:GPS控制部份=主控站(1个)+监测站(5个)+注入站(3个)

作用:监测和控制卫星运行,编算卫星星历(导航电文),保持系统时间。

  • 主控站:从各个监控站搜集卫星数据,计算出卫星的星历和时钟修正参数等,并通过注入站注入卫星;向卫星发布指令,控制卫星,当卫星出现故障时,调度备用卫星。
  • 监控站:接收卫星信号,检测卫星运行状态,搜集天气数据,并将这些信息传送给主控站。
  • 注入站:将主控站计算的卫星星历及时钟修正参数等注入卫星。 

散布情况:

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

 

3.用户部份

GPS用户装备部份包括GPS接收器及相干装备。GPS接收器主要由GPS芯片构成。

如车载、船载GPS导航仪,内置GPS功能的移动装备,GPS测绘装备等都属于GPS用户装备。

组成:主要为GPS接收器

作用:接收、跟踪、变换和丈量GPS信号的装备,GPS系统的消费者。

 

GPS定位是目前最为精确、利用最为广泛的定位导航技术,以后将会成为每个移动装备的标配之1。现在的中高端只能手机,有相当1部份已配备了GPS硬件。那末针对GPS定位的开发技术也将成为1项主流常规技术。本文目的在于让准备进行GPS定位开发的编程人员对GPS有1个大致的了解,这对编程可能没有甚么直接的帮助,但是我想了解1下GPS的大致工作原理,在编程进程中就可以够对GPS装备的工作特性有1个感性的认识,这对开发回是有很大间接好处的。想了解关于GPS定位的具体开发技术,请参考《为Windows Mobile装备创建位置感知的利用程序》。

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生