


适用对象:GNSS 数据处理初学者、PPP/PPP-AR 算法开发人员、实时定位系统工程师 本文主线:预处理边界 → 数据与产品检查 → 信号质量控制 → 钟跳与周跳 → 粗差与鲁棒估计 → 状态管理 → 工程实现 1. 结论 实时 PPP 预处理不只是周跳探测。 完整的预处理至少包括: 时间标签、数据完整性和单位检查;卫星系统、频率和信号映射;卫星健康、姿态和产品可用性检查;高度角、C/N₀、锁定时间和 LLI 检查;数据间断、接收机钟跳和系统间偏差跳变检测;GF、MW、多普勒和创新联合周跳探测;伪距、相位和多普勒粗差检查;多路径、NLOS 和码观测质量检查;观测协方差和鲁棒权构造;相位弧段、模糊度和协方差重置;PPP-AR 相位偏差基准连续性检查;实时数据延迟、乱序、丢包和产品切换处理。 预处理的输出不应只有“有效”或“无效”,而应区分三类动作: 观测明显错误 → 剔除 观测质量下降但仍有信息 → 降权 相位连续性或整数基准被破坏 → 新建弧段并重置模糊度 2. 为什么实时 PPP 必须严格预处理 PPP 使用非差伪距和载波相位。 一个未处理的异常可能被滤波器吸收到: 接收机钟差;系统间偏差;对流层延迟;电离层延迟;模糊度;接收机坐标。 设正常创新为: νk0\boldsymbol{\nu}_k^{0}νk0 当前历元存在观测粗差: bk\mathbf b_kbk 则实际创新为: νk=νk0+bk\boldsymbol{\nu}_k = \boldsymbol{\nu}_k^{0} + \mathbf b_kνk=νk0+bk 卡尔曼更新为: x^k+=x^k−+Kkνk\widehat{\mathbf x}_k^{+} = \widehat{\mathbf x}_k^{-} + \mathbf K_k \boldsymbol{\nu}_kxk+=xk−+Kkνk 粗差引起的状态污染为: Δxk=Kkbk\boxed{ \boldsymbol{\Delta x}_k = \mathbf K_k \mathbf b_k }Δxk=Kkbk 式中: k:历元编号;x⁻:量测更新前的预测状态;x⁺:量测更新后的状态;K:卡尔曼增益;ν:创新;b:观测粗差;Δx:粗差引起的状态偏移。 实时滤波具有记忆性。异常一旦进入状态,影响可能延续多个历元。 3. 预处理、误差改正和滤波质量控制的边界 环节主要问题典型内容预处理观测能否使用、怎样使用时间、钟跳、周跳、粗差、筛选、降权确定性改正正常观测应减去哪些物理效应轨道钟差、天线、潮汐、相位缠绕滤波估计怎样估计未知参数坐标、钟差、大气、模糊度后验质量控制更新后的解是否可信后验残差、状态跳变、位置一致性例如: 相位缠绕没有改正 → 观测模型错误 → 不能只当成周跳删除 低C/N₀ → 随机模型或筛选问题 → 不一定直接剔除 检测到周跳 → 相位连续性破坏 → 必须处理模糊度状态 4. 推荐的总体流程 #mermaid-svg-wSSVDwVb7CK4ShVY{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-wSSVDwVb7CK4ShVY #mermaid-svg-wSSVDwVb7CK4ShVY #mermaid-svg-wSSVDwVb7CK4ShVY #mermaid-svg-wSSVDwVb7CK4ShVY #mermaid-svg-wSSVDwVb7CK4ShVY #mermaid-svg-wSSVDwVb7CK4ShVY #mermaid-svg-wSSVDwVb7CK4ShVY #mermaid-svg-wSSVDwVb7CK4ShVY #mermaid-svg-wSSVDwVb7CK4ShVY #mermaid-svg-wSSVDwVb7CK4ShVY #mermaid-svg-wSSVDwVb7CK4ShVY #mermaid-svg-wSSVDwVb7CK4ShVY .marker#mermaid-svg-wSSVDwVb7CK4ShVY svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-wSSVDwVb7CK4ShVY p{margin:0;}#mermaid-svg-wSSVDwVb7CK4ShVY #mermaid-svg-wSSVDwVb7CK4ShVY .cluster-label text{fill:#333;}#mermaid-svg-wSSVDwVb7CK4ShVY .cluster-label span{color:#333;}#mermaid-svg-wSSVDwVb7CK4ShVY .cluster-label span p{background-color:transparent;}#mermaid-svg-wSSVDwVb7CK4ShVY .label text,#mermaid-svg-wSSVDwVb7CK4ShVY span{fill:#333;color:#333;}#mermaid-svg-wSSVDwVb7CK4ShVY .node rect,#mermaid-svg-wSSVDwVb7CK4ShVY .node circle,#mermaid-svg-wSSVDwVb7CK4ShVY .node ellipse,#mermaid-svg-wSSVDwVb7CK4ShVY .node polygon,#mermaid-svg-wSSVDwVb7CK4ShVY .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-wSSVDwVb7CK4ShVY .rough-node .label text,#mermaid-svg-wSSVDwVb7CK4ShVY .node .label text,#mermaid-svg-wSSVDwVb7CK4ShVY .image-shape .label,#mermaid-svg-wSSVDwVb7CK4ShVY .icon-shape #mermaid-svg-wSSVDwVb7CK4ShVY .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-wSSVDwVb7CK4ShVY .rough-node .label,#mermaid-svg-wSSVDwVb7CK4ShVY .node .label,#mermaid-svg-wSSVDwVb7CK4ShVY .image-shape .label,#mermaid-svg-wSSVDwVb7CK4ShVY .icon-shape #mermaid-svg-wSSVDwVb7CK4ShVY .node#mermaid-svg-wSSVDwVb7CK4ShVY .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-wSSVDwVb7CK4ShVY #mermaid-svg-wSSVDwVb7CK4ShVY .edgePath #mermaid-svg-wSSVDwVb7CK4ShVY #mermaid-svg-wSSVDwVb7CK4ShVY #mermaid-svg-wSSVDwVb7CK4ShVY .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-wSSVDwVb7CK4ShVY .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-wSSVDwVb7CK4ShVY #mermaid-svg-wSSVDwVb7CK4ShVY .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-wSSVDwVb7CK4ShVY .cluster text{fill:#333;}#mermaid-svg-wSSVDwVb7CK4ShVY .cluster span{color:#333;}#mermaid-svg-wSSVDwVb7CK4ShVY div#mermaid-svg-wSSVDwVb7CK4ShVY #mermaid-svg-wSSVDwVb7CK4ShVY rect#mermaid-svg-wSSVDwVb7CK4ShVY .icon-shape,#mermaid-svg-wSSVDwVb7CK4ShVY #mermaid-svg-wSSVDwVb7CK4ShVY .icon-shape p,#mermaid-svg-wSSVDwVb7CK4ShVY .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-wSSVDwVb7CK4ShVY .icon-shape .label rect,#mermaid-svg-wSSVDwVb7CK4ShVY .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-wSSVDwVb7CK4ShVY #mermaid-svg-wSSVDwVb7CK4ShVY .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-wSSVDwVb7CK4ShVY :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}