gps定位的基本原理
发布网友
发布时间:2022-04-21 22:52
我来回答
共2个回答
热心网友
时间:2022-04-20 16:04
24颗GPS卫星在离地面2万200千米的高空上,以12小时的周期环绕地球运行,使得在任意时刻,在地面上的任意一点都可以同时观测到4颗以上的卫星。
由于卫星的位置精确可知,在GPS观测中,我们可得到卫星到接收机的距离,利用三维坐标中的距离公式,利用3颗卫星,就可以组成3个方程式,解出观测点的位置(X,Y,Z)。考虑到卫星的时钟与接收机时钟之间的误差,实际上有4个未知数,X、Y、Z和钟差,因而需要引入第4颗卫星,形成4个方程式进行求解,从而得到观测点的经纬度和高程。
事实上,接收机往往可以锁住4颗以上的卫星,这时,接收机可按卫星的星座分布分成若干组,每组4颗,然后通过算法挑选出误差最小的一组用作定位,从而提高精度。
由于卫星运行轨道、卫星时钟存在误差,大气对流层、电离层对信号的影响,以及人为的SA保护*(2000年5月1日取消),使得民用GPS的定位精度只有100米。为提高定位精度,普遍采用差分GPS(DGPS)技术,建立基准站 (差分台)进行GPS观测,利用已知的基准站精确坐标,与观测值进行比较,从而得出一修正数,并对外发布。接收机收到该修正数后,与自身的观测值进行比较,消去大部分误差,得到一个比较准确的位置。实验表明,利用差GPS,定位精度可提高到5米。
热心网友
时间:2022-04-20 17:22
本文试图从编程人员的角度出发,以一种程序员易于理解的方式来简单介绍一下GPS定位的基本原理,希望对做GPS开发的朋友有所帮助。当然,本文并没有涉及具体的开发方面的技术。
一、GPS定位数学模型
之所以先介绍数学模型,是因为我认为这个数学模型可能是程序员比较关心的问题。当然事先声明,这个模型只是我根据一些GPS资料总专为程序员总结出来的一个简化模型,细节方面可能并不符合实际,想了解具体细节请参考专业的GPS讲解资料。
GPS定位,实际上就是通过四颗已知位置的卫星来确定GPS接收器的位置。
举例:GPS接收器为当前要确定位置的设备,卫星1、2、3、4为本次定位要用到的四颗卫星:
Position1、Position2、Position3、Position4分别为四颗卫星的当前位置(空间坐标),已知
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接收器的距离了。数据包是通过无线电波传送的,那么理想速度就是光速c,把传播时间记为Ti的话,用公式表示就是:
di=c*Ti(i=1,2,3,4);
这就是di(i=1,2,3,4)的来源了。
3.GetLocation()函数是如何执行的?
这个函数是我为了说明问题而虚构的,事实上未必存在,但是一定存在这样类似的运算逻辑。这些运算逻辑可以由软件来实现,但是事实上可能大都是由硬件芯片来完成的(这可能也是每一个GPS芯片的核心功能之一)。