Changeset 10940 in ntrip for trunk/BNC


Ignore:
Timestamp:
Jun 19, 2026, 1:19:37 PM (4 days ago)
Author:
stuerze
Message:

PPP-AR Algorithm Description is extended

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/bnchelp.html

    r10934 r10940  
    208208&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2.13.2.10.3 <a href=#ppparmax>Max Frac and Sig</a><br>
    209209&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2.13.2.10.4 <a href=#ppparyaw>Yaw Usage</a><br>
     210&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2.13.2.10.5 <a href=#ppparfix>Per-epoch fix percentage</a><br>
    210211&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2.13.3 <a href=#pppStation><b>PPP (3): Processed Stations</b></a><br>
    211212&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2.13.3.1 <a href=#pppsite>Station</a><br>
     
    46374638<p><h4 id="ppparmin">2.13.2.10.2 Min # Epo and Sat - optional</h4></p>
    46384639<p>
    4639 Using 'Min # Epo you can specify the number of epochs for which the unknown ambiguity parameter has to be observed at least,
     4640Using 'Min # Epo' you can specify the number of epochs for which the unknown ambiguity parameter has to be observed at least,
    46404641to be included into the search.
    46414642</p>
     
    46604661If 'Use Yaw' is set, the information about the satellite attitude (yaw angle) is taken from the corresponding
    46614662SSR correction (phase bias message). Otherwise a standard satellite attitude model is used.
    4662 </p>
    4663 
     4663</p>
     4664
     4665<p><h4 id="ppparfix">2.13.2.10.5 Per-epoch fix percentage</h4></p>
     4666<p>
     4667The number printed in the log (... fix XX %) is a fixRatio computed as follows:
     4668<ol>
     4669  <li>A copy of the float filter state is taken — the real recursive filter state is never touched by AR.</li>
     4670  <li>Ambiguities are grouped per system/LC into zero-difference sets if minimum number of tracked epochs (see <a href="#ppparmin">Min # Epo</a>) and the minimum elevation (see <a href=#pppmineleva>Minimum Elevation</a>) is exceeded.</li>
     4671  <li>One reference ambiguity per group is hard-constrained to its rounded value with a tiny σ (sigCon = 1e-4 cycles, turning the rest into single-differences (SD).</li>
     4672  <li>A LAMBDA/BIE (Best Integer Equivariant) search produces xBie/covBie — a probability-weighted blend over candidate integer vectors, not a hard integer.</li>
     4673  <li>isFixable() flags an SD ambiguity as fixed if |frac(xBie)| ≤ arMaxFrac and sqrt(covBie) ≤ arMaxSig (see <a href=#ppparmax>Max Frac and Sig</a>).</li>
     4674  <li>fixRatio = numFixSdAll / numSdAmbs — fixed SD ambiguities divided by all SD ambiguities in groups that already passed step 2's pre-filter.</li>
     4675</ol>
     4676Some remarks:
     4677<ul>
     4678  <li>It's a statistical sharpness test, not a validated fix. Unlike classical LAMBDA AR (ratio test against the second-best candidate), isFixable() only checks that the BIE estimate is close to an integer with small posterior variance. BIE will confidently "fix" a self-consistent but wrong combination if the underlying float ambiguities carry a systematic, unmodeled bias — there's no independent validation step.</li>
     4679  <li> The fix is a per-epoch snapshot, not a recursive hold. Since AR runs on a copy of the filter state and the result is never fed back into _xFlt/_QFlt, each epoch's "fix" is recomputed from scratch from whatever the float ambiguity looks like that epoch. A satellite can be reported "fixed" to slightly different integer realizations epoch-to-epoch, which shows up as scatter in the AR-constrained coordinate even though the printed percentage stays high.</li>
     4680  <li>Everything hinges on the phase-bias corrections. Ambiguity resolution only works because incoming SSR phase-bias corrections with fixIndicator set are applied per satellite/frequency before this stage; satellites lacking valid biases are dropped entirely when AR is on (useObsWithBiasesOnly). If that correction stream is stale, low-quality, or inconsistent with the orbit/clock product (different AC, different update interval), the float ambiguities will still sharpen and "fix" statistically — just around the wrong integer — degrading rather than improving the position.</li>
     4681  <li> Small denominator effect: 'numSdAmbs' only counts already pre-filtered, resolvable ambiguities in groups of ≥2; with a thin satellite/group count it's easy to get 100% from very few satellites, which isn't representative of overall solution strength.</li>
     4682</ul>
     4683 If the per-epoch fix percentage values look too high in comparison with the resulting coordinate displacements,
     4684 try:
     4685  <ul>
     4686  <li>tightening 'Max Frac' / 'Max Sig' and </li>
     4687  <li>raising 'Min # Sat' / 'Min # Epo' </li>
     4688  </ul>
     4689to see if the percentage drops to something  more consistent with the achieved coordinate repeatability — if it doesn't, the bias-correction quality/consistency
     4690 is the more likely root cause than the AR logic itself.
     4691</p>
    46644692<p><h4 id="pppStation">2.13.3 PPP (3): Processed Stations</h4></p>
    46654693<p>
Note: See TracChangeset for help on using the changeset viewer.