一、基础知识
1、《多系统GNSS非差非组合精密单点定位相关理论和方法研究》周锋 博士论文
2、《BDS/GPS 非差非组合抗差自适应PPP》 纪超
3、《GPS 非差相位精密单点定位理论与实现》 叶世榕
4、《BDS/GPS精密单点定位收敛时间与定位精度比较》张小红
5、《精密单点定位收敛时间的确定方法研究》周承松
6、《基于GPS双频原始观测值的精密单点定位算法及应用》 张宝成
7、《Precise point positioning for the efficient and robust analysis of GPS data from large networks》 J.F.Zumberge
8、《无电离层组合、Uofc和非组合精密单点定位观测模型比较》李博峰
9、《精密单点定位理论与方法研究》 郑彬
- 非差模糊度整数特性恢复
- 电离层延迟提取
- 伪距多径误差消除
10、《GPS接收机码间偏差(DCB)的确定》 宋小勇
- 如何求解接收机码偏差
11、《GPS/BDS精密单点定位算法及其应用研究》范磊
二、常见的术语缩写
APC | Antenna Phase Center | 天线相位中心 |
CCL | Carrier-to-Code Leveling | 相位平滑伪距 |
CoM | Center of Mass | 质量中心 |
DCB | Differential Code Bias | 差分码偏差 |
GF | Geometry-Free | 几何距离无关 |
GIM | Global Ionosphere Map | 全球电离层图 |
GMF | Global Mapping Function | 全球投影函数 |
IFB | Inter-Frequency Bias | 频间偏差 |
ISB | Inter-System Bias | 系统间偏差 |
LID | Leveling Ionospheric Delay | 平滑电离层延迟 |
MGEX | Multi-GNSS Experiment | 多系统GNSS实验 |
PCO | Phase Center Offset | 相位中心偏移 |
PCV | Phase Center Variation | 相位中心变化 |
UCD | Uncalibrated Code Delay | 非校正伪距硬件延迟 |
UPD | Uncalibrated Phase Delay | 非校正相位硬件延迟 |
VTEC | Vertical Total Electron Content | 垂直总电子含量 |
STEC | Slant Total Electron Content | 斜向总电子含量 |
TECU | Total Electron Content Unit | 总电子含量单位/1×10^16 |
ZTD | Zenith Total Delay | 天顶总延迟 |
ZWD | Zenith Wet Delay | 天顶湿延迟 |
MGEX分析中心可向全球用户提供多系统GNSS精密卫星轨道和钟差改正等产品;7个MEGX分析中心分别为:
- 法国空间研究中心/CNES; 产品代号:GRM
- 欧洲定轨中心/CODE; 产品代号:COM
- 德国地学研究中心/GFZ;产品代号:GBM/GFM
- 德国慕尼黑工业大学/TUM; 产品代号:TUM
- 武汉大学/WHU; 产品代号:WHM
- 日本宇航空间探测局/JAXA;
- 欧洲空间局/ESA;
三、PPP基本算法/原理
函数模型描述了观测量与相应的待估参数之间的函数关系;
随机模型反应了观测值的统计特性;
知识点:
精密钟差的估计采用是无电离层组合估计得到,因此,得到的精密卫星钟差包括如下三项:
- 1、真实的卫星钟差;
- 2、包含无电离层组合的硬件延迟偏差;其中下式两项分别为卫星端P1、P2硬件延迟偏差,经过频率变换后:
- 3、参考基准误差;
因此,在PPP定位中,采用精密钟差时,需要将精密钟差中的后两项去除;第三项被接收机钟差吸收;
1、双频无电离层组合PPP
对于双频无电离层组合PPP来说;首先通过三种DCB产品(P2-C2、P1-P2、P1-C1)之一,将其中一个伪距观测值改为P1/P2;
举例:如果双频伪距观测量为:C1、P2,则需要P1-C1 DCB产品,将C1伪距观测改正到P1,而后P1-P2构成无电离层观测量,进行参数估计:
- 因此组合后的无电离层伪距观测量包含卫星端DCB,同时估计的卫星精密钟差也含有卫星端DCB,因此抵消掉了。接收机端无电离层DCB,被接收机钟差吸收了;
- 无电离层载波相位观测方程中,精密钟差引入的卫星端无电离层DCB,被模糊度吸收;接收机端无电离层DCB,被接收机钟差吸收; (无论是伪距还是载波,一个接收机只有一个接收机钟差!)
无电离层PPP,估计参数为:三维坐标、接收机钟差、天顶对流层湿延迟、模糊度,即 n+5;
2、非差非组合PPP
首先通过三种DCB产品(P2-C2、P1-P2、P1-C1)之一,将其中一个伪距观测值改为P1/P2;
举例:如果双频伪距观测量为:C1、P2,则需要P1-C1 DCB产品,将C1伪距观测改正到P1,而后P1、P2、L1、L2构成非差非组合观测量,进行参数估计:
精密钟差包含的无电离层卫星端DCB(一颗卫星一个钟差,对于参数估计来说,相当于多了一项,需要被参数吸收):在伪距观测方程中,被电离层参数吸收;在载波相位方程中,被电离层、模糊度吸收;
接收机钟差包含:真实的接收机钟差、接收机硬件延迟偏差
非差非组合PPP,估计参数为:三维坐标、接收机钟差、天顶对流层湿延迟、模糊度、站星电离层延迟,即3n+5;
非差非组合PPP参数估计为:
接收机坐标增量、接收机钟差、天顶对流层湿延迟、L1电离层斜延迟(包含接收机与卫星端DCB)、L1和L2上载波相位模糊度;
当连续观测n颗卫星时,对应的观测方程个数为4n,待估参数为5+3n,观测冗余(自由度)为n-5,则初始化参数至少需要5颗可观测卫星。
IFB:伪距、载波频间偏差;
CDMA技术的导航卫星系统,其系统内所有卫星使用相同的频率,通常接收机端的硬件延迟是相同的;
FDMA技术的导航卫星系统,不同卫星一般采用不同的频率,因此,不同卫星信号在接收机内部产生的通道延迟也不一样。
因此,星间单差一般无法消除
ISB:系统间偏差;
多系统GNSS伪距单点定位中的ISB可以解释为GNSS系统时间差(如GPS时和BDS时的差异)与不同GNSS系统对应接收机伪距硬件延迟差异的综合。
1 TECU/total electron content unit 相当于对应GPS L1频率上0.16米的测距误差;
电离层总电子含量/TEC:
含义是指以底面面积为一个单位面积,沿信号传播路径从接收机到卫星贯穿整个电离层的一个柱体中所包含的总电子数,
码偏差与差分码偏差:
码偏差(又称硬件延迟),是GNSS信号在卫星或者接收机硬件通道内的时延偏差,数值大小与信号通道相关。
- 对于卫星码偏差,可以理解为从信号生成到天线相位中心(GNSS观测量以天线相位中心为计算基准)的延迟,过程包括信号生成、解调、上变频、发射机到卫星天线相位中心;
- 对于接收机码偏差,可以理解为从接收机天线相位中心到信号捕获跟踪的延迟,过程包括射频前端和基带数字信号处理
差分码偏差是指不同类型的GNSS信号的码偏差之间的一次差,按照频率相同或者不同又可以细分为频内偏差和频间偏差。
由此可知,码偏差是绝对量而差分码偏差是相对量。由于GNSS卫星钟差参数基准通常定义在一个指定观测量(如BDS B31)或某两个频率的消电离层组合观测量(如GPS P1P2与Galileo E1+ESa)上,使用不同卫星钟差参数基准的观测量时,需引入DCB参数进行卫星硬件延迟偏差改正。因此,差分码偏差DCB参数是卫星导航定位中最基本的参数之一,广播星历播发参数中与之相关联的参数包括时间群延迟(Timing Group Delay, TGD)、广播群延迟(Broadcast Group Delay, BGD)和信号间偏差改正(Inter-Signal Correction, ISC) 。随着多模多频GNSS的发展,与GPS新增的民用导航信号以及BDS, Galileo播发的新信号相关的电离层及精密定位研究中需要对应的DCB改正信息,一方面原有的GPS及GLONASS DCB产品难以满足多模GNSS精密应用的需要,另一方面现有的多模GNSS DCB产品种类不一,相互间无法耦合,因此有必要针对当前多模多频GNSS的应用需求,开展多模多频GNSS DCB参数的统一处理研究。
DCB/硬件延迟偏差:
分为卫星端、接收机端硬件偏差
对于伪距单点定位中,采用单频伪距观测值,需要tgd/群延迟进行校正!
Differential Code Bias/差分码偏差:
主要有两种:
- 频内偏差:即相同频率不同码之间存在的偏差(如P1-C1、P2-C2等);
- 频间偏差:不同频率之间存在的偏差(如P1-P2)。
FCB/ Fractional Cycle Bias/小数相位偏差:
精密星历均以卫星质心作为参考;
星固坐标系:
X轴始终指向或背向太阳,Z轴指向地球质心,Y轴沿太阳能帆板的旋转轴方向与X轴和Z轴形成右手坐标系。其中,PCO是基于星固坐标系进行定义的。
无电离层组合,DCB表达形式:
实际中,卫星端和接收机端的偏差参数会被卫星钟和接收机钟吸收!
四、GAMP在Win下编译
1、生成解决方案—项目:
2、将下载文件夹里面的 gamp_src 文件夹拷贝到项目文件夹!
GAMP\mannual_GAMP\GAMP_src\Windows\gamp_c\gamp_src
3、在新建项目中,添加现有项,头文件和源文件分别添加!
4、针对此项目进行一些设置:
- 添加预处理器定义 :项目右键找属性、C/C++、 预处理器
WIN32;_DEBUG;_CONSOLE;
_CRT_SECURE_NO_WARNINGS;
ENAGLO;ENACMP;ENAGAL;ENAQZS;
NFREQ=3
- 项目右键找属性、链接器、调试、生成调试信息
- 项目右键找属性、C/C++、常规、调试信息格式:C7
5、设置pthread,将下载文件路径中的 Pre-built.2 ,放到项目文件夹中
GAMP\mannual_GAMP\GAMP_src\Windows\pthreads-w32-2-9-1-release\Pre-built.2
- 项目右键找属性、C/C++、常规、附加包含目录:.\Pre-built.2\include
- 项目右键找属性、链接器、常规、附加库目录:.\Pre-built.2\lib\x64
- 项目右键找属性、链接器、输入、附加依赖项:pthreadVC2.lib
6、将路径 GAMP\mannual_GAMP\GAMP_src\Windows 中的:dirent.h、unistd.h放入到VS20XX安装目录中:
对于VS2017版本:Visual studio 2017\SDK\ScopeCppSDK\VC\include
对于VS2019版本:Visual Studio 2019\VC\Tools\MSVC\14.26.28801\include
7、main函数中,设置配置文件路径
char cfgfile[1000]="E:\\GAMP_data\\2017244\\gamp.cfg";
并在gamp.cfg中,更改文件路径:
obs file/folder = 1 %(0:file 1:folder)
= E:\GAMP_data\2017244
参考: