公务员期刊网 论文中心 正文

GNSS单点定位程序实现分析

GNSS单点定位程序实现分析

摘要:在全球卫星导航系统(GNSS)数据处理领域,伪距单点定位是经常涉及的问题,并广泛应用于实时位置导航、提供RTK实时卫星位置及钟差等场合。基于MicrosoftVisualstudio编程环境,自主开发了具有单点定位基本功能的程序算法,该程序可以计算观测时段内任意时刻的卫星瞬时坐标,可根据精度强弱度(PDOP)值对参与单点定位的卫星进行预处理,获取尽可能准确的批历元或某特定历元的单点定位坐标,并验证了问题解决的正确性和程序编写的合理性。

关键词:GNSS;单点定位;广播星历;程序实现

1引言

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

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

2.1GPS时间系统

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

2.2WGS-84大地坐标系统

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

3GPS伪距单点定位原理

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

3.1GPS卫星位置计算

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.1C++程序实现

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

4.2Matlab交互实现

将O文件和N文件导入程序,根据时间匹配依次计算卫星钟差、坐标及速度,得出改正值,删除不符合要求的观测历元,生成地面点坐标结果文件,文件中包含的内容为各历元解算坐标与地面点预估坐标的差值。使用Matlab中的plot命令,将文件中N、E、U三个方向的数据分别成图,查看改正值的波动情况。各测站坐标改正值平均值如表1所示。通过较多实例表明,程序编写可以顺利地运行出结果,定位精度都在米级,结果精度均在标准范围之内,完全可以验证伪距单点定位解算结果的正确性,从而验证了该算法程序能够满足单点定位的精度要求。有极个别历元结算出来的坐标内符合精度精度较低,原因主要分为两个方面,①该历元观测时卫星数量较少,使得卫星结构不稳定而引起误差;②因为卫星高度角较小,对流层和电离层改正未完全消除,使误差增大。通过查看生成的.spp文件,观测时卫星观测数正常,但卫星高度角较小,对流层和电离层的改正未完全消除,导致解算精度较差。由于观测文件(*.O文件)有不同格式,在不同格式的文件中伪距所在的位置不同,而且对每颗卫星的观测数据所占的行数也不同,因此给伪距读取带来了很大不便。为解决这个问题,在程序设计中对伪距的读取进行了精心设计,根据RENIX文件版本和*.O文件字头块内容进行判断,先确定需要获取的伪距所在的行和列,然后依次将卫星号及其伪距读入到动态数组。

5结束语

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

参考文献:

[1]廖华.GPS伪距单点定位算法的综合比较[J].测绘科学,2011,36(1):20-21.

[2]陈艺军,杨善婷,郑加柱.GPS单点定位程序开发几点思考[J].无线通信技术,2010,19(1):53-56,61.

[3]李征航,黄劲松.GPS测量与数据处理[M].2版.武汉:武汉大学出版社,2010:20-22.

作者:冯鹏睿 徐泮林 高明超 单位:山东科技大学测绘科学与工程学院