前言
以下内容来自以下网站
Calculating Position from Raw GPS Data
第一部分
坐标系统的定义
需要满足的条件:
- 为了便于数学计算,需要坐标之间的单位差表示恒定的物理距离
- 由于地球是旋转的,需要一个惯性坐标系统来表达加速度、位置和速度向量
下面介绍几种坐标系。
1、经纬度
两个经度之间的单位差表示的物理距离不是恒定的,取决于位置。例如,两个经度相距一度的距离在赤道最大,在两极接近0。
2、ECEF(WGS 1984系统)
“ECEF”(地球中心,地球固定)。这些坐标系统能够很好地表达用户在与地球旋转时在地球上的位置,而固定用户在地球表面的位置是恒定的。
定义如下:
- 地球质量中心的起源 z轴穿过CTP(常规陆地极)。CTP 是 1900 年至 1905
- 年间地球极点位置的平均值。平均需要使用,因为极点的位置不是固定的,在半径约15米的圆圈中徘徊。 x 轴穿过 CTP
- 赤道平面和参考子午线的交叉点,通常称为平均格林威治子午线
高度的定义
高度是相对的,在ECEF坐标中,我们可以知道某物体到地心的距离,但这不是我们通常所关心的。我们关心的是某物体在地面上的高度,所以这个“地面”的定义就至关重要。
通常有两种模式,如下。
1、地理
大地水准面是具有物理意义的测量高度的水准面。这是有道理的,海洋覆盖了地球表面,海洋的形状将接近地球。
2、参考椭圆形
以地球中心为中心,革命轴与ECEF框架的z轴重合。半主轴和半小轴的长度(表示a为和b)是a = 6378137m和。 b = 6357002m不出所料,通常用于地球半径(以地球为模球)的价值为6371Km,位于半主轴和小轴之间。参考椭圆形只是对地球形状的抽象。它没有任何物理意义。地球表面的实际点通常位于参考椭圆形的上方或下方。
在此基础上,我们可以得到P 点的位置如下:
- 大地测量纬度(ф):子午线平面中测量的角度通过椭圆体赤道平面之间的点 P 和垂直于 P 的椭圆体表面的线(从赤道向北为正,负向南)
- 大地测量经度(λ):在参考子午线和经络平面通过 P 之间的等价平面中测量的角度 (从零子午线向东呈正向)
- 大地测量高度(h):通过 P 测量到椭圆体的正常值。
PS:当且仅当地球是球形时,ф=ф’
大地坐标系转换为平面坐标
第二部分
由两个球相交可以确定一个形状为圆的交线,三个球相交可以确定两个点。实际上,我们只要知道如果已知用户与三颗或三颗以上卫星的距离,就可以通过三角测量计算 3D 位置。
因此,定位用户的问题可以分为两个子问题:
- 查找用户与每颗卫星的距离
- 确定该卫星在用户坐标系统中的位置
确定卫星的位置
在理想情况下,下图的5个参数即可决定椭圆的大小和形状以及轨道平面相对于固定恒星的方向。然而实际中存在各种干扰,GPS需要通过传输一组扩展的16个轨道参数来解释这些扰动,这些参数可用于在给定时间瞬间准确计算卫星的位置。这里不作过多说明。
计算用户与卫星的距离
pseudorange伪距离:全球定位系统接收机接收的卫星信号带有从卫星发送信号的时间戳。通过测量其自身时间与GPS信号时间戳的差异,并乘以光速,接收机计算出接收机与卫星之间距离的粗略测量。
然而现实中存在许多误差,我们需要对此进行处理。其中卫星时钟偏差是非常重要的的参数,GPS 接口规范文档第 96 页描述了计算卫星时钟偏差的程序。而用户时钟偏差时未知参数,将随用户位置一起估算。
然而,传播速度的变化可能很大,并可能导致几米或数米以上的定位误差。这种速度变化有两个组成部分——Iρ由信号通过电离层传播产生,Tρ由通过对流层传播信号引起的。所以,公式如下。
用户位置和时钟偏差估算
一旦对卫星时钟偏差进行了核算,并应用了所有可用的更正,卫星k的更正伪测定可以写成
我们的任务是确定x和b,使得是ε^k对所有卫星来说是最小的。
即设定x0和b0,使得差趋近于0
由于有K个卫星,所以可以表达为以下形式