Changeset 10931 in ntrip for trunk/BNC/src


Ignore:
Timestamp:
Jun 16, 2026, 10:41:06 PM (11 days ago)
Author:
stuerze
Message:

PPP-AR Algorithm Description is added

File:
1 edited

Legend:

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

    r10925 r10931  
    45314531</p>
    45324532
     4533<p><h4 id="ppparmethod">2.13.2.10.0 Algorithm Description</h4></p>
     4534<p>
     4535The BNC PPP ambiguity resolution combines two classical methods: the
     4536<b>LAMBDA</b> (Least-squares AMBiguity Decorrelation Adjustment) algorithm for the integer search,
     4537and <b>BIE</b> (Best Integer Equivariant) weighting for the final estimate.
     4538The following describes the individual steps as implemented in <tt>src/PPP/ambres.cpp</tt> and <tt>src/PPP/lambda.cpp</tt>.
     4539</p>
     4540
     4541<p><b>Step 1 &ndash; Float ambiguity extraction</b><br>
     4542The Kalman filter state vector contains all estimated parameters (receiver position, receiver clock,
     4543troposphere, and carrier-phase ambiguities). The AR module extracts only the ambiguity entries
     4544into a reduced vector using a design matrix, together with the corresponding sub-block of the
     4545variance&ndash;covariance matrix.
     4546</p>
     4547
     4548<p><b>Step 2 &ndash; Resolvability filtering</b><br>
     4549Before entering the search, each ambiguity must pass the following quality gates:
     4550</p>
     4551<ul>
     4552  <li>A minimum number of epochs observed (see <a href="#ppparmin">Min # Epo</a>)</li>
     4553  <li>A minimum satellite elevation angle</li>
     4554  <li>At least 2 ambiguities available per GNSS group</li>
     4555  <li>A minimum number of satellites per constellation (see <a href="#ppparmin">Min # Sat</a>)</li>
     4556</ul>
     4557
     4558<p><b>Step 3 &ndash; Reference ambiguity selection</b><br>
     4559One ambiguity per constellation group is chosen as a reference (the one that minimises the sum of
     4560double-difference variances). It is tightly constrained to its nearest integer via a Kalman
     4561pseudo-observation update. This step effectively converts zero-difference to single-difference
     4562ambiguity space and ensures a stable basis for the search.
     4563</p>
     4564
     4565<p><b>Step 4 &ndash; LAMBDA decorrelation</b><br>
     4566The ambiguity covariance matrix is decomposed as <i>L&middot;D&middot;L</i><sup>T</sup>.
     4567An integer-preserving transformation matrix <i>Z</i> (with det(<i>Z</i>)&nbsp;=&nbsp;&plusmn;1) is
     4568applied to minimise the correlation between ambiguities. After this step the search is far more
     4569efficient because the transformed ambiguities are nearly uncorrelated.
     4570</p>
     4571
     4572<p><b>Step 5 &ndash; BIE candidate search</b><br>
     4573A sequential search-and-shrink algorithm (SSEARCH) finds the top 100 integer candidate vectors
     4574ranked by their squared Mahalanobis distance &chi;&sup2;. For each candidate <i>i</i> an
     4575exponential weight is computed:
     4576</p>
     4577<p>&nbsp;&nbsp;&nbsp;&nbsp;<i>w</i>(<i>i</i>) = exp(&minus;0.5 &middot; (&chi;&sup2;<sub><i>i</i></sub> &minus; &chi;&sup2;<sub>best</sub>))</p>
     4578<p>
     4579The <b>BIE estimate</b> is then the weighted average over all candidates:
     4580</p>
     4581<p>&nbsp;&nbsp;&nbsp;&nbsp;<i>a</i><sub>BIE</sub> = &sum; <i>w</i>(<i>i</i>) &middot; <i>a</i>(<i>i</i>) / &sum; <i>w</i>(<i>i</i>)</p>
     4582<p>
     4583This is the key difference from plain LAMBDA/ILS, which picks only the single best integer vector.
     4584BIE produces a real-valued weighted combination and is the minimum mean-square error estimator
     4585under a Gaussian distribution.
     4586</p>
     4587
     4588<p><b>Step 6 &ndash; BIE variance</b><br>
     4589Rather than adopting the optimistic variance of the single best candidate, BIE computes a
     4590conservative variance that reflects the probability mass spread across all candidates:
     4591</p>
     4592<p>&nbsp;&nbsp;&nbsp;&nbsp;&sigma;&sup2;<sub>BIE</sub>(<i>j</i>) = &sum; <i>w</i>(<i>i</i>) &middot; (<i>a</i><sub>BIE</sub>(<i>j</i>) &minus; <i>a</i>(<i>j</i>,<i>i</i>))&sup2;</p>
     4593
     4594<p><b>Step 7 &ndash; Fixability decision and constraint imposition</b><br>
     4595An ambiguity is considered fixable if both of the following criteria are met:
     4596</p>
     4597<ul>
     4598  <li>|<i>a</i><sub>BIE</sub> &minus; round(<i>a</i><sub>BIE</sub>)| &le; Max Frac (see <a href="#ppparmax">Max Frac and Sig</a>)</li>
     4599  <li>&sigma;<sub>BIE</sub> &le; Max Sig (see <a href="#ppparmax">Max Frac and Sig</a>)</li>
     4600</ul>
     4601<p>
     4602For all fixable ambiguities, Kalman equality constraints with a tight weight are applied to force
     4603the filter state vector to adopt the integer values. Subsequent filter updates treat these fixed
     4604ambiguities as pseudo-observations until a cycle-slip triggers a reset.
     4605</p>
     4606
     4607<p><b>Comparison with other PPP ambiguity resolution methods</b></p>
     4608<table border="1" rules="all" frame="box" bgcolor="#FFF5EE" style="font-size:13">
     4609  <tr bgcolor="#E0E0E0">
     4610    <td><b>&nbsp;Method&nbsp;</b></td>
     4611    <td><b>&nbsp;Integer choice&nbsp;</b></td>
     4612    <td><b>&nbsp;Output&nbsp;</b></td>
     4613  </tr>
     4614  <tr>
     4615    <td>&nbsp;Rounding&nbsp;</td>
     4616    <td>&nbsp;Nearest integer per ambiguity, independently&nbsp;</td>
     4617    <td>&nbsp;Hard fix, simple but fragile&nbsp;</td>
     4618  </tr>
     4619  <tr>
     4620    <td>&nbsp;Bootstrapping&nbsp;</td>
     4621    <td>&nbsp;Sequential conditional rounding&nbsp;</td>
     4622    <td>&nbsp;Hard fix, faster than ILS&nbsp;</td>
     4623  </tr>
     4624  <tr>
     4625    <td>&nbsp;ILS / LAMBDA&nbsp;</td>
     4626    <td>&nbsp;Single globally optimal integer vector&nbsp;</td>
     4627    <td>&nbsp;Hard fix, optimal under Gaussian noise&nbsp;</td>
     4628  </tr>
     4629  <tr>
     4630    <td>&nbsp;<b>BIE (BNC)</b>&nbsp;</td>
     4631    <td>&nbsp;Weighted combination of top-N candidates&nbsp;</td>
     4632    <td>&nbsp;Soft/weighted fix, minimum MSE estimator&nbsp;</td>
     4633  </tr>
     4634</table>
     4635<br>
     4636
    45334637<p><h4 id="ppparsys">2.13.2.10.1 Constellations - optional</h4></p>
    45344638<p>
Note: See TracChangeset for help on using the changeset viewer.