主函数: pppos
1 申请变量,初始化标志位
2 更新状态
状态更新函数: udstate_ppp
1 位置更新
2 时钟更新
3 对流层参数更新(如果配置为对流层参数估计模式)
4 电离层参数更新(如果配置为电离层参数估计模式)
5 更新L5接收机硬件延迟参数(如果频点配置大于等于3,包含L5)
6 整周模糊度更新
PPP位置更新函数: udpos_ppp
1 如果是PMODE_PPP_FIXED模式,则直接初始化,用已知的固定点坐标
2 检测状态量的值,如果是首次进入,则进行位置和在台赋初值(spp的位置和速度信息 或者前一历元的位置和速度信息??????)
(动态模式,则还需要额外对速度和加速度赋值)
3 如果是PMODE_PPP_STATIC 模式,状态量不变,只更新p阵,赋初值
4 如果是PMODE_PPP_KINEMA模式,但是运动模型不是动态,则直接初始化位置和方差
5 F阵设置
6 状态转移
7 Q阵更新
PPP时钟更新函数: udpos_ppp
1 循环遍历每一模式
2 检测是否为精密星历EPHOPT_PREC(精密星历的时间是基于gps时间,忽略系统间的偏差)
3 否则利用前一秒的结果,并考虑系统间时差信息
4 初始化时钟信息和方差值
PPP对流层更新函数:udtrop_ppp
需要对对流层的模型估计做一个详细的了解???
1 判断状态量是否为0,需要进行赋初值
(sbstropcorr 对应 TROPOPT_SBAS修正还是????)
(如果模型大于TROPOPT_ESTG,则赋初值不一致?????)
2 如果已经有初值,则直接更新p阵
(如果模型大于TROPOPT_ESTG,则P阵更新的方式不一致?????)
ppp电离层更新函数:udiono_ppp
1 检测相位中断是否超过门限,重置电离层参数
2 遍历各个卫星的电离层参数:
3 如果检测为0, 根据伪距计算电离层初值,并进行初始化
(用到ionmapf,ionosphere mapping function ????)
4 否则,根据高度角,更新P阵
ppp硬件延迟参数更新函数:uddcb_ppp
1 如果检测为0,直接赋初值
(认为是稳定的,没有噪声驱动,固定的)
PPP整周模糊度更新函数:udbias_ppp
1 检测边界时间翻转(?????)
2 清除卫星周跳标志位
3 检测周跳:LLI
4 检测周跳:几何无关gf
5 检测周跳:MW组合
6 前一时刻位置转化:ECEF->LLA
7 遍历各个频点,更新模糊度量:
8 遍历各个卫星,如果检测到相位中断大于门限,或单历元模式,或检测到
时钟跳变,则重新赋值模糊度参数
9 遍历各个卫星:
9.1 观测量量修正,得到修正后的观测量和修正后的无电离层组合观测量(天线相位中心修正, 相位缠绕修正,卫星硬件延迟修正)
9.2 无电离层组合,bias赋值
9.3 否则,根据单个观测量的载波相位,减去伪距,在补偿根据双频伪距估算出来的电离层延迟,得到模糊度初值。
9.4 检测值是否有效,是否周跳,如果正常,统计初始模糊度和状态量之间的整体偏差(反映载波相位和伪距的一致性)
9 根据9.4得到的计算结果,判断如果满足补偿门限,进行补偿(门限值挺大的??)
10 遍历各个卫星,进行P阵更新
(如果状态量无效,或有周跳发生,则用bias进行重置)
重置模糊度固定标志位
LLI周跳检测函数:detslp_ll
gf周跳检测函数:detslp_gf
根据双频观测量相减,剩余电离层残差以及整周模糊度,稳定项,前后做差检测周跳
mw周跳检测函数:detslp_mw
主要受伪距噪声和多路径的影响