GNSS 单点定位的程序实现及分析

2021-04-12 09:30冯鹏睿徐泮林高明超
科技与创新 2021年7期
关键词:单点坐标系观测

冯鹏睿,徐泮林,高明超

(山东科技大学测绘科学与工程学院,山东 青岛 266590)

1 引言

全球定位系统(GPS)为GNSS 最具代表性的部分,很多国内外学者都专注于此领域的研究,伪距单点定位技术发展已经相当成熟。但查阅已发表的文献发现,伪距单点定位程序的编写在相当多的文献中仅是一笔带过,许多文献都并未对程序进行详细的解读,这给学习GPS 编程中遇到问题的读者带来了很大的困扰,需要额外浪费大量的研究时间去摸索程序的编写。因此,自主开发改进程序设计,实现GPS单点定位的各项功能显得尤为重要。

2 GPS 定位的时间系统和坐标系统

2.1 GPS 时间系统

GPS 时是全球定位系统GPS 使用的一种时间系统。它是由GPS 的地面监控系统和GPS 卫星中的原子钟建立、维持的一种原子时,其起点为1980-01-06T00:00:00。在起始时刻,GPS 时与UTC 对齐,这两种时间系统所给出的时间是相同的。由于UTC 存在跳秒,经过一段时间后,这两种时间系统中就会相差n个整秒,n是这段时间内UTC 的积累跳秒数,随时间的变化而变化。由于在GPS 时的起始时刻1980-01-06,UTC 与国际原子时TAI 已相差19 s,因此GPS 时与国际原子时之间总会有19 s 的差异,即TAIGPST=19 s。GPS 已被广泛应用在时间对比,用户通过上述关系,即可获得高精度的UTC 或者TAI时间,国际上有专门的单位在测定并且公布了C0值,其数值一般可以保持在10 ns 以内。

2.2 WGS-84 大地坐标系统

WGS-84 坐标系统是一种国际上公认的地心坐标系统,在用广播星历的情况下,GPS 单点定位的坐标以及相对定位中解算的基线向量属于WGS-84 大地坐标系,GPS 卫星广播星历是以WGS-84 坐标系为依据而建立的。坐标系原点位于地球质心,X轴指向BIH1984.0 的零子午面和CTP 赤道的点,Z轴指向BIH198.40 定义的协议地球极(CTP),Y轴与Z轴、X轴构成右手坐标系,称为1984 年世界大地坐标系统。

3 GPS 伪距单点定位原理

GPS 卫星发射的信号由载波、测距码、导航电文三部分组成。

3.1 GPS 卫星位置计算

GPS 导航定位是以卫星为已知的基准点,通过测定站星间的距离,解算用户的位置。GPS 定位所采用的坐标系是由测轨跟踪站及其坐标值所定义的地心坐标系,该地心坐标系采用WGS-84(1984 年世界大地坐标系)。因此,用户接收机在取得导航电文的轨道参数后,要首先计算卫星的位置和速度。为了解算测站点的坐标,需要知道在同一坐标系中站星间的距离和GPS 卫星的信号与卫星星历卫星位置,所以需要多次计算卫星的位置。

根据广播星历中卫星电文提供的轨道参数,按一定的公式可计算出观测瞬间GSP 卫星在地固系的位置。按“二体问题”公式计算轨道参数;根据导航电文给出的轨道摄动参数进行摄动修正,计算修正后的轨道参数;计算卫星在轨道坐标系的坐标;考虑地球自转的影响,将轨道坐标系转换为WGS-84 坐标系。

3.2 地面点坐标计算

接上一过程,解算出每个历元内个卫星的位置坐标,再由卫星的已知坐标进行空间距离交会,进而解算出地面站的位置坐标。

3.3 单点定位的主要误差来源

GPS 定位中出现的各种误差,按性质可分为系统误差(偏差)和随机误差两大类。其中,系统误差无论从误差的大小还是对定位结果的危害性来讲,都比随机误差大得多,而且它们又有规律可循,可以采取一定的方法和措施来加以消除。

3.3.1 卫星星历误差

由卫星星历所给出的卫星位置和速度与卫星的实际位置和速度之差称为卫星星历误差。星历误差的大小主要取决于卫星定轨系统的质量。如定轨站的数量及其地理分布、观测值的数量及精度、定轨时所用的数学力学模型和定轨软件的完善程度等。此外,与星历的外推时间间隔(实测星历的外推时间间隔可视为零)也有直接关系。

3.3.2 卫星钟的钟误差

卫星上虽然使用了高精度的原子钟,但它们也不可避免地存在误差,这种误差既包含着系统性的误差(如钟差钟連频漂等偏差),也包含着随机误差。系统误差远较随机误差的值大,而且可以通过检验和比对来确定并通过模型来加以改正,而随机误差只能通过钟的稳定度来描述其统计特性,无法确定其符号和大小。

3.3.3 接收机的位置误差

在进行授时和定轨时,接收机的位置通常被认为是已知的,其误差将使授时和定轨的结果产生系统误差。该项误差对测码伪距观测值和载波相位观测值的影响是相同的。进行GPS 基线解算时,需已知其中一个端点在WGS-84 坐标系中的近似坐标,近似坐标的误差过大也会对解算结果产生影响。目前采用的对流折射改正模型很多,主要有霍普菲尔德模型、萨斯塔莫宁模型、勃兰克模型等,这些模型都有各自的适用范围,经过比对各种模型和测试各种模型的结果后,本程序采用霍普菲尔德模型,电离层改正主要采用主流的双频观测值进行消除。

4 单点定位的程序实现

4.1 C++程序实现

根据上述GPS 单点定位原理,使用Qt 开发环境,编写单点定位程序。在读取观测文件时,为了更方便地看出文件头的内容和构成,推荐使用Edit with Notepad++来查看。读取导航文件,计算测量时刻卫星瞬时坐标,提取伪距解算地面点近似坐标,建立误差方程确定误差系数,利用最小二乘原理计算坐标的改正值,最后即求得瞬时的WGS84 绝对坐标。在此过程中,需用到大量的矩阵计算,因此选用了成熟稳定的Eigen 矩阵库。

4.2 Matlab 交互实现

将O 文件和N 文件导入程序,根据时间匹配依次计算卫星钟差、坐标及速度,得出改正值,删除不符合要求的观测历元,生成地面点坐标结果文件,文件中包含的内容为各历元解算坐标与地面点预估坐标的差值。使用Matlab 中的plot命令,将文件中N、E、U 三个方向的数据分别成图,查看改正值的波动情况。各测站坐标改正值平均值如表1 所示。

通过较多实例表明,程序编写可以顺利地运行出结果,定位精度都在米级,结果精度均在标准范围之内,完全可以验证伪距单点定位解算结果的正确性,从而验证了该算法程序能够满足单点定位的精度要求。有极个别历元结算出来的坐标内符合精度精度较低,原因主要分为两个方面,①该历元观测时卫星数量较少,使得卫星结构不稳定而引起误差;②因为卫星高度角较小,对流层和电离层改正未完全消除,使误差增大。通过查看生成的.spp 文件,观测时卫星观测数正常,但卫星高度角较小,对流层和电离层的改正未完全消除,导致解算精度较差。

表1 各测站坐标改正值平均值

由于观测文件(*.O 文件)有不同格式,在不同格式的文件中伪距所在的位置不同,而且对每颗卫星的观测数据所占的行数也不同,因此给伪距读取带来了很大不便。为解决这个问题,在程序设计中对伪距的读取进行了精心设计,根据RENIX 文件版本和*.O 文件字头块内容进行判断,先确定需要获取的伪距所在的行和列,然后依次将卫星号及其伪距读入到动态数组。

5 结束语

GPS 单点定位计算过程需要用到大量矩阵计算,数值分析,使用C++语言处理这些问题较为复杂,而Matlab 包含大量高度集成的函数,可以方便地处理这些问题,因此将C++与Matlab 等可视化的语言交互,美化界面是很多程序常用的方法。但是这种C++与Matlab 相互交互的程序也存在不足,比如在进行程序编写过程中电脑必须同时安装C++开发环境和Matlab 软件才可以进行程序编辑,增加了程序书写的复杂性及可行性,使用Matlab 编程,对基于IGS 全球跟踪站的解算出来的各轴观测值改正数进行绘图,观察计算结果的波动情况。

猜你喜欢
单点坐标系观测
单点渐进无模成型的回弹特性
独立坐标系椭球变换与坐标换算
精密单点定位在网络RTK中的应用研究
国外智能化对地观测卫星发展研究
番禺油田某FPSO解脱与回接作业
极坐标系中的奇妙曲线
基于“地理实践力”的天文观测活动的探索与思考
三角函数的坐标系模型
单点的梦想
求坐标系内三角形的面积