【GNSS】PPPH软件源码解析

news2024/9/20 14:56:18

注:

1)本人在学习PPP过程中,对PPPH软件内所有源码进行了注释,相关理论进行了解析,并通过本文记录,由于是学习记录有些地方注释在了源码上,所以部分理论可能不够详细,请见谅。

2)内容来源包含相关论文及其他CSDN博客,如有侵权请联系修正。

3)一些理论理解可能不够深入,如内容存在问题欢迎交流和讨论。

 软件论文、操作手册、带有注释版本源码链接如下:

PPPH软件论文翻译

PPPH软件操作手册翻译

PPPH软件注释版

 

 

目录

 

PPPH软件解析

一、数据读取(data_hand)

二、数据预处理(preprocess)

1、elm_badclk函数:

2、decimation函数

3、cal_sat函数

4、elv_mask函数

5、cs_detect函数

6、clk_jmp2函数用于钟跳探测与修复

7、outlier函数异常值检测并剔除

8、smoothing函数:相位平滑伪距(标准Hatch均值方法,其中电离层延迟用相位组合替换)

三、误差模型(nmodel)

1、相对论效应

2、时间系统说明

3、对流层天顶延迟(saastamoinen模型)

4、天线误差改正

4.1卫星天线相位中心偏差PCO改正(sat_apc)

4.2接收机天线相位中心偏差PCO改正(rec_apc)

4.3接收机天线高误差

4.4天线相位缠绕改正

四、滤波求解(MGNSS_filter)

1、dtr_satlist函数

2、dtr_satno函数

3、dtr_sys函数

4、滤波初始、过程参数设置

5、卡尔曼滤波公式

6、PPPH的抗差自适应卡尔曼滤波


PPPH软件解析

 

  • 一、数据读取(data_hand)

data_hand函数说明:

1、观测值文件(o文件)文件头存入data.inf,读取的dcb数据在读取伪距观测值时直接改正(仅改正了GPS),读取的双频观测数据存入data.obs且通过data.obs.st来判断该历元该卫星是否同时含有p1、p2、l1、l2数据。

2、可以读取四系统的精密星历数据,同时可以读取连续三天的精密星历文件,并取前一天的后五个历元和后一天的前五个历元进行合并,以便于后续插值。

3、支持四系统的钟差文件读取,若没有钟差文件可以利用精密星历的第四列数据赋值给钟差数据。

4、可以读取四系统双频接收机和卫星的天线数据NORTH / EAST / UP,只能进行PCO改正,并分别存入data.atx.sat.neu = sat_neu./1000,data.atx.rcv.neu = rcv_neu./1000。

二、数据预处理(preprocess)

preprocess函数说明:

1、elm_badclk函数:

        对读取的钟差数据进行检验:依次对每一列即每颗卫星进行检查(第 i 列数据既包含非 NaN 值,又包含 NaN 值或者值为 999999.999999时,执行相应的操作),对于含有NaN的历元卫星将data.obs.st对应位置赋值为0,后续不做处理。

2、decimation函数

        对所有历元进行判断,如果实际历元数大于或小于data.obs.st所记录的历元数,则将多于或少于的地方赋值为空,在读取文件体时已进行过该操作。

3、cal_sat函数


        根据精密星历文件、精密钟差文件计算卫星位置和卫星钟差(钟差和星历插值方法相同,使用9阶拉格朗日插值方法)拉格朗日插值方法   拉格朗日插值方法

  • 根据第一、二频点伪距/光速获得信号近似传输时间tof,再用data.obs.ep(用于存储当前历元的天内秒)减去tof获取卫星发射信号的时间nep。
  • 获取当前卫星的钟差数据data.clk(:,k);根据采样间隔、和nep插值获取当前历元卫星钟差dt。
  • 若卫星钟差dt为NaN,则当前历当前卫星不做处理,data.obs.st(i,k) = 0。
  • 根据卫星钟差修正卫星发射信号时刻,nep = nep - dt;。
  • 插值获取卫星位置,若有前后两天精密星历数据则使用entrp_orbt,否则entrp。
  • 得到卫星位置XYZ放在R数组,准备进行地球自转改正R = [ X ,Y, Z ]。
  • 地球自转改正链接
  • 卫星位置、速度和钟差保存在data.psat,信号传输时间保存在data.tofs。

4、elv_mask函数

用于判断卫星截止高度角:

  • local函数根据卫星位置和接收机概略位置计算出卫星方位角az和高度角elev。
  • xyz2plh将接收机概略位置xyz转换成blh再转换成enu最后计算卫星高度角方位角。

计算卫星高度角、方位角(XYZ转ENU,ENU转RAH)

卫星高度角和方位角的计算

RTKLIB——坐标系相互转换(ecef2pos,pos2ecef,ecef2enu,enu2ecef)

5、cs_detect函数

用于双频周跳探测与修复:

① 先通过[arc]=arc_dtr(data.obs);函数将每个卫星的连续段存储在一个cell数组中,每行代表一个段的开始和结束历元。

② 逐卫星进行周跳探测与修复。

③ MW和GF组合观测值如下:

④关于MW和GF组合:

GF组合周跳探测及后续钟跳探测论文:

Cycle Slip and Clock Jump Repair with Multi-Frequency Multi-Constellation GNSS data for Precise Point Positioning

6、clk_jmp2函数用于钟跳探测与修复

详解见《GNSS精密单点定位理论方法与研究》---张小红、李星星等P111,《多模GNSS融合精密单点定位理论与方法》---蔡昌盛P78。

7、outlier函数异常值检测并剔除

采用MW法进行检验!

最小二乘曲线拟合:在二维XOY平面上,曲线由多项式f(x)表示:

在ppph的outlier函数中横轴代表历元,纵轴为y值,即L

8、smoothing函数:相位平滑伪距(标准Hatch均值方法,其中电离层延迟用相位组合替换)

三、误差模型(nmodel)

E:\2024-7-17\多模卫星导航\误差改正_20231225.pptx

所有误差模型均存在model数组中:

model各列元素:

1、 年份

2、 年积日(一年中的第几天)

3、 日内秒data.obs.ep

4、 卫星编号

5、 卫星信号传输时间(天内秒)

6、 P1P2L1L2观测值

7、 误差总和

8、 卫星位置X

9、 卫星位置Y

10、卫星位置Z

11、卫星速度VX

12、卫星速度VY

13、卫星速度VZ

14、卫星接收机近似距离

15、卫星钟误差(m)

16、卫星天线相位中心改正PCO

17、接收机天线相位中心改正PCO

18、接收机天线高误差

19、狭义相对论误差(m)

20、相位缠绕误差

21、对流层干气总延迟

22、上一历元相位缠绕误差

23、广义相对论误差(m)

24、空

25、固体潮误差

26、卫星高度角

27、卫星方位角

28、对流层湿气映射函数

29、对流层湿气北梯度系数

30、对流层湿气东梯度系数

31、对流层干气天顶延迟

Xyz转经纬度原理:xyz转blh

1、相对论效应

rel_clk(model(t,19))-狭义相对论,rpath(model(t,23))-广义相对论,参考《多模GNSS融合精密单点定位理论与方法》---蔡昌盛P59。

2、时间系统说明

       cal2jul将年月日转换成儒略日期Julian Day,JD,指自公元4713年1月1日格林尼治子午线(UTC中午12:00)开始起算的累计天数,详情见书《卫星导航定位原理(白皮)》---黄丁发、张勤、张小红等P32。后为了简化得到简化儒略日MJD = JD – 2400000.5。

      此外,地球力学时TDT是相对地球质心的天体运动方程所采用的时间参数,基本单位是国际秒制SI,与原子时的尺度一致。国际天文联合会决定,于1977年1月1日原子时(TAI)0时与TDT的严格关系如下:

TDT = TAI +32.184″, 而TAI = GPST + 19″

3、对流层天顶延迟(saastamoinen模型)

标准大气层模型可以表示为:
­

4、天线误差改正

       GNSS观测值测量得是卫星至接收机之间的距离,对应卫星端为卫星天线相位中心。GNSS导航电文星历数据对应卫星位置为天线相位中心,而IGS提供的精密星历是基于卫星轨道力模型计算的,给出的是卫星质心的坐标。因此,当采用IGS精密星历进行数据处理时,需要考虑卫星质心与天线相位中心之间的差异。卫星天线相位中心与卫星质心之间的偏差称之为卫星天线偏差。同样在接收机端,GNSS观测值对应的是接收机的天线相位中心,而接收机的目标测量位置为天线参考点(Antenna Reference Point,ARP),数据处理时也需要考虑他们之间的差异。将接收机天线相位中心与接收机天线参考点之间的偏差称为接收机天线偏差

       天线相位中心会随着卫星信号的高度角和方位角不同而不同,因而测量时会产生多个瞬时相位中心,因此通常根据瞬时相位中心的大致位置定义一个平均相位中心点。平均相位中心与卫星质心或与接收机天线参考点之间的偏差称为天线相位中心偏差(PCO-Phase Center Offset)。瞬时天线相位中心(对应单个观测值)与平均相位中心间的差异称为天线相位中心变化(PCV-Phase Center Variation)。对GNSS观测值进行天线改正时,必须同时考虑天线相位中心偏差PCO和天线相位中心变化PCV。
      如下图所示,设a为PCO矢量(天线参考点指向平均天线相位中心),ρ0 为卫星至接收机的单位向量,则PCO对相位观测值的影响可表示为:

ΔPCO=a·ρ0

      天线相位中心变化PCV对相位的影响则与方位角α、天顶距z和载波频率f 有关,可用下式表示为,而总的天线偏差是PCO和PCV的综合影响,将观测值改正至ARP点。

ΔPCV=ΔPCV(α,z,f)

       为了给用户提供相应的天线偏差改正方法,IGS相继推出了相对天线相位中心改正模型和绝对天线相位中心改正模型。两种莫小姐均是根据天线的类型、信号频率、卫星天顶距等,确定各种天线在对应不同频率、不同天顶距、方位角的天线偏差的坐标改正值或距离改正值,并将测定数据编列成表,提供给用户,用户则根据卫星类型或接收机接收信号的参数内插确定对应的天线偏差改正值。

4.1卫星天线相位中心偏差PCO改正(sat_apc)

天线相位中心偏差改正可用通过下式进行计算:


        式中ex  ey  ez 分别为星固坐标系轴在惯性坐标系中的单位矢量,Xphase 、Xmass 分别为惯性坐标系中以相位为中心的卫星坐标和以质量为中心的卫星坐标,Xoffset 为卫星天线相位中心在星固系的偏差PCO。

PCO改正值在天线文件  NORTH / EAST / UP 读取:

对于PCO改正,由于IGS提供的是基于星固系下的PCO值,因此需要将其转换至地固系。

        星固系原点位于卫星质心,z轴平行于天线指向地心,y轴平行于太阳帆板平面,x轴构成右手系。如图所示,太阳矢量从卫星质心指向太阳,卫星运动过程中z轴始终指向地球,y轴始终垂直于太阳矢量即垂直于太阳、地球、卫星组成的平面。太阳帆板可绕轴旋转以保证其垂直于太阳光线方向来最好地收集太阳能。

形式一:太阳角 β 定义为z轴和太阳单位矢量 nsum 的夹角,在定轨时需要用 β 计算太阳光压。星固坐标系坐标轴单位矢量表示为(ex   ey   ez),则太阳单位矢量可表示为nsum=( sinβ,0,cosβ)。
r = [X Y Z]T为卫星质心坐标,rsun=[Xsun Ysun  Zsun ]T为太阳坐标。


形式二:ex   ey   ez)计算方式如下:


形式三:非矢量形式计算ex   ey   ez

4.2接收机天线相位中心偏差PCO改正(rec_apc)


        接收机天线相位中心矫正的过程与方法与卫星端类似(天线参考点位置 = 天线相位中心位置 - 天线相位中心偏差(PCO);几何距离 = 观测距离 - 天线PCV + 其他改正值)。需要说明的是,IGS天线文件中给出的PCO值是在测站地平坐标系下的三个分量,因此需要将其转换到地心地固系,再进行PCO改正。

 

4.3接收机天线高误差

由观测文件头文件读取:      0.0280   0.0000  0.0000    ANTENNA: DELTA H/E/N

与4.2接收机天线相位中心偏差改正算法相同。

4.4天线相位缠绕改正

RTKLIB 中的天线相位缠绕误差修正

GPS从入门到放弃(二十三)、相位缠绕

      GNSS卫星信号采用右极化方式,这种极化方式的信号使得观测到的载波相位与卫星、接收机天线的朝向有关。接收机和卫星天线任何一方的旋转将使载波相位产生最大一周的变化,也就是在距离上一个波长的变化,这种效应称为天线旋转相位增加效应。对该效应改正通常也称为天线相位缠绕改正(wind-up)。

      接收机天线除非在动态定位中它在运动,通常是指向一个固定方向(北方向),但对于卫星天线,由于它的太阳能面板需要始终朝向太阳,因而它在运动过程中会慢慢旋转,这就造成卫星和接收机之间的几何距离发生变化。除此之外,在日食期间,卫星为了能重定向太阳能板朝向太阳,将快速旋转,在半小时之内,旋转将达到一周,在此期间,需要对相位数据进行改正或者将这段数据去除。
       该误差对于差分定位通常忽略,而对于PPP影响十分显著能达半个波长。通常在动态定位或导航中接收机天线才会发生旋转,天线相位缠绕的误差将会转移到接收机钟差解中,改正公式如下:

完整的相位缠绕改正Δϕ 是由其上个历元和本历元的小数部分共同组成:


理解:

四、滤波求解(MGNSS_filter)

1、dtr_satlist函数

   生成一个历元数(行)*1列的cell数组,每个cell数组(1*n)记录着当前历元可用卫星号。

2、dtr_satno函数

生成一个历元行 * 1列的数组,每行记录着当前历元共多少个可用卫星。

3、dtr_sys函数

根据选择的卫星系统以及是否估计对流层水平梯度误差输出每颗卫星的待估参数个数bp以及选择系统的指数sit,后续根据这个指数确定所选卫星系统。

待估参数个数bp:三个方向xyz偏差量(3个) + 接收机钟差*gnss系统数量(1*n个) + 接收机天顶对流层(1个) + 对流层水汽梯度(2个)

系统指数sit:

GPS:1

GLO:2

GPS+GLO:3

GPS+GAL:4

GPS+BDS:5

GLO+GAL:6

GLO+BDS:7

GPS+GLO+GAL:8

GPS+GLO+BDS:9

GPs+GAL+BDS:10

GLO+GAL+BDS:11

GPS+GLO+GAL+BDS:12

4、滤波初始、过程参数设置

5、卡尔曼滤波公式

6、PPPH的抗差自适应卡尔曼滤波

参考文献:Adaptive robust Kalman filtering for precise point positioning---Guo F, Zhang X (2014b)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2125653.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Facebook的虚拟现实计划:未来社交的全新视角

随着科技的不断进步,虚拟现实(VR)正逐步成为我们日常生活的一部分。作为全球领先的社交平台,Facebook正在大力投入虚拟现实技术,以重新定义社交互动的方式。本文将深入探讨Facebook的虚拟现实计划,分析其如…

在IDEA中如何创建web项目?——不使用Archetype

二、不使用Archetype 1、创建Maven项目 (1)首先打开Project Structure:File——>Project Structure或者快捷键crtlaltshifts (2)Module——>New Module: (3)在新打开的页面下…

三数之和--力扣15

这里写目录标题 题目思路代码 题目 思路 题目要求三元组不能重复,如果使用哈希表来做,去重很复杂,而且需要额外的空间,我们这里使用双指针法直接针对数组操作。注意题目要求返回的是二维数组! 最重要的是,…

完整指南:CNStream流处理多路并发框架适配到NVIDIA Jetson Orin (四) 运行、调试、各种问题解决

目录 1 调试jetson-mpeg视频解码模块 1.1 修改config.json 1.2 Picture size 0x0 is invalid 1.3 Process(): Send package failed. Maximum number of attempts reached 1.4 Picture size 2239821608x65535 is invalid 1.5 保存h264文件解码之后的测试图片 1.6 保存RTS…

跨境电商热卖季:选品攻略与实战指南

下半年是跨境电商的旺季 促销节点接踵而至。从感恩节、万圣节、到黑色星期五、网络星期一,再到圣诞节、新年促销等,这些节日不仅激发了消费者的购买欲望,也为跨境电商卖家提供了巨大的市场机遇。那么在这些有望实现销量飞跃的黄金时期&#x…

【SLAM】稀疏矩阵的乘法优化小结

1. 思路小结 要优化你提供的稀疏矩阵乘法代码,我们可以引入CSR(压缩稀疏行)格式来避免遍历零元素,从而提高效率。CSR格式通过仅存储非零元素以及它们的行和列索引,可以有效减少稀疏矩阵计算时的时间复杂度。下面是对代…

讲解GPU 训练大模型步骤

GPU在训练大模型的工作过程中,扮演着至关重要的角色,其强大的并行计算能力能够显著提升训练速度和效率。以下是GPU训练大模型的详细步骤: 选择合适的GPU和云平台 1. 考虑计算能力 计算能力需求:大模型训练通常需要强大的计算能…

Qt实现登录界面

本文基于Qt实现一个简单的登录界面,主要使用到Widget、button、edit等控件,基于自定义的信号槽实现界面的跳转,使用绘图设备添加背景图等。 1. 创建主界面 设计主界面的样式,并添加相关的控件。如下显示: 代码如下&…

搜索功能技术方案

1. 背景与需求分析 门户平台需要实现对服务信息的高效查询,包括通过关键字搜索服务以及基于地理位置进行服务搜索。面对未来可能的数据增长和性能需求,选择使用 Elasticsearch 来替代 MySQL 的全文检索功能。这一选择的背景与需求可以总结为以下几点&am…

对标世界一流!望繁信科技受邀参加2023企业财务数智化转型论坛

2023年7月21日,由中国CFO发展中心联合浙江省总会计师协会、南京审计大学会计学院、安徽财经大学会计学院举办的“2023企业财务数智化转型论坛(长三角站)”在上海隆重举办。论坛现场座无虚席,全天候、多维度的话题探讨为广大CFO呈现…

[WEBPWN]BaseCTF week1 题解(新手友好教程版)

WEB A Dark Room 这道题的考点是查看网页源代码 网页源代码这里看到的是网页的html css js在用户浏览器上执行的代码 有时候很多铭感信息,或者关键信息。 查看网页源代码的几种方式 1 右键点击查看网页源代码 2 F12 3 Ctrl U 快捷键 HTTP是什么 HTTP&#x…

车路云一体化系统中的数据交互内容

车路云与相关支撑平台的数据交互是构建智能交通系统的重要组成部分,它涉及到车辆、道路基础设施(路侧单元RSU)与云端平台及其相关支撑平台之间的复杂信息流通与协同工作。以下是对这一过程的详细解析: 一、数据交互的组成部分 车…

DMDRS学习

DMDRS学习 产品介绍 达梦数据复制软件(简称DMDRS)是一种用于同构数据库、异构数据库以及各种数据管理系统之间的数据复制软件。DMDRS采用模块化的设计,通过灵活配置不同的功能模块,实现多功能的数据复制服务,以满足多…

Java虚拟机 - 实战篇

一、内存调优 1. 什么是内存泄漏 (1)内存溢出和内存泄漏 2. 监控Java内存的常用工具 (1)Top命令 (2)VisualVM (3)Arthas (4)Prometheus Grafana &#xff…

人工智能--模型评估指标

背景 1、分类回归模型的评估指标 分类模型的目标是将输入数据分配到一个离散类别中,常见的评估指标如下: 准确率 (Accuracy) 解释:表示模型预测正确的样本占总样本的比例。适用于类分布平衡的情况,但在类别不平衡时表现不佳。…

十张图“拿捏”MySQL中B+树的生成过程

hello,我是大都督周瑜,这篇文章带你用十张图“拿捏”MySQL中B树的生成过程。 更多干货技术文章、面试题,欢迎关注我的公众号:IT周瑜 当MySQL接收到一条以下SQL时,表示要从t1表中查询数据: select * from t…

基于java+springboot+vue实现的林业产品推荐系统(文末源码+Lw)135

基于SpringBootVue的实现的林业产品推荐系统(源码数据库万字Lun文流程图ER图结构图演示视频软件包) 系统功能: 林业产品推荐系统是在MySQL中建立数据表保存信息,运用SpringBoot框架和Java语言编写。 并按照软件设计开发流程进行…

新书宣传:《量子安全:信息保护新纪元》

《量子安全:信息保护新纪元》 前言本书的看点本书的目录结语 前言 你好! 这是我第一次发布类广告的博文,目的也很单纯,希望以作者的身份介绍一下自己出版的图书——《量子安全:信息保护新纪元》。此书于2024年7月出版…

【go】pprof 性能分析

前言 go pprof是 Go 语言提供的性能分析工具。它可以帮助开发者分析 Go 程序的性能问题,包括 CPU 使用情况、内存分配情况、阻塞情况等。 主要功能 CPU 性能分析 go pprof可以对程序的 CPU 使用情况进行分析。它通过在一定时间内对程序的执行进行采样&#xff0…

17个常见的电子邮件营销错误及避免方法

我们都在邮件营销中犯过错误。你点击发送,然后感到一阵沉重的感觉。你搞砸了,现在全世界都能看到你的错误。这就像把一封信放在瓶子里扔进无边的互联网海洋,你无法把它收回来。 有些邮件营销错误显而易见,可能会让你所有的努力化…