Changeset 10931 in ntrip for trunk/BNC/src
- Timestamp:
- Jun 16, 2026, 10:41:06 PM (11 days ago)
- File:
-
- 1 edited
-
trunk/BNC/src/bnchelp.html (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/bnchelp.html
r10925 r10931 4531 4531 </p> 4532 4532 4533 <p><h4 id="ppparmethod">2.13.2.10.0 Algorithm Description</h4></p> 4534 <p> 4535 The BNC PPP ambiguity resolution combines two classical methods: the 4536 <b>LAMBDA</b> (Least-squares AMBiguity Decorrelation Adjustment) algorithm for the integer search, 4537 and <b>BIE</b> (Best Integer Equivariant) weighting for the final estimate. 4538 The 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 – Float ambiguity extraction</b><br> 4542 The Kalman filter state vector contains all estimated parameters (receiver position, receiver clock, 4543 troposphere, and carrier-phase ambiguities). The AR module extracts only the ambiguity entries 4544 into a reduced vector using a design matrix, together with the corresponding sub-block of the 4545 variance–covariance matrix. 4546 </p> 4547 4548 <p><b>Step 2 – Resolvability filtering</b><br> 4549 Before 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 – Reference ambiguity selection</b><br> 4559 One ambiguity per constellation group is chosen as a reference (the one that minimises the sum of 4560 double-difference variances). It is tightly constrained to its nearest integer via a Kalman 4561 pseudo-observation update. This step effectively converts zero-difference to single-difference 4562 ambiguity space and ensures a stable basis for the search. 4563 </p> 4564 4565 <p><b>Step 4 – LAMBDA decorrelation</b><br> 4566 The ambiguity covariance matrix is decomposed as <i>L·D·L</i><sup>T</sup>. 4567 An integer-preserving transformation matrix <i>Z</i> (with det(<i>Z</i>) = ±1) is 4568 applied to minimise the correlation between ambiguities. After this step the search is far more 4569 efficient because the transformed ambiguities are nearly uncorrelated. 4570 </p> 4571 4572 <p><b>Step 5 – BIE candidate search</b><br> 4573 A sequential search-and-shrink algorithm (SSEARCH) finds the top 100 integer candidate vectors 4574 ranked by their squared Mahalanobis distance χ². For each candidate <i>i</i> an 4575 exponential weight is computed: 4576 </p> 4577 <p> <i>w</i>(<i>i</i>) = exp(−0.5 · (χ²<sub><i>i</i></sub> − χ²<sub>best</sub>))</p> 4578 <p> 4579 The <b>BIE estimate</b> is then the weighted average over all candidates: 4580 </p> 4581 <p> <i>a</i><sub>BIE</sub> = ∑ <i>w</i>(<i>i</i>) · <i>a</i>(<i>i</i>) / ∑ <i>w</i>(<i>i</i>)</p> 4582 <p> 4583 This is the key difference from plain LAMBDA/ILS, which picks only the single best integer vector. 4584 BIE produces a real-valued weighted combination and is the minimum mean-square error estimator 4585 under a Gaussian distribution. 4586 </p> 4587 4588 <p><b>Step 6 – BIE variance</b><br> 4589 Rather than adopting the optimistic variance of the single best candidate, BIE computes a 4590 conservative variance that reflects the probability mass spread across all candidates: 4591 </p> 4592 <p> σ²<sub>BIE</sub>(<i>j</i>) = ∑ <i>w</i>(<i>i</i>) · (<i>a</i><sub>BIE</sub>(<i>j</i>) − <i>a</i>(<i>j</i>,<i>i</i>))²</p> 4593 4594 <p><b>Step 7 – Fixability decision and constraint imposition</b><br> 4595 An ambiguity is considered fixable if both of the following criteria are met: 4596 </p> 4597 <ul> 4598 <li>|<i>a</i><sub>BIE</sub> − round(<i>a</i><sub>BIE</sub>)| ≤ Max Frac (see <a href="#ppparmax">Max Frac and Sig</a>)</li> 4599 <li>σ<sub>BIE</sub> ≤ Max Sig (see <a href="#ppparmax">Max Frac and Sig</a>)</li> 4600 </ul> 4601 <p> 4602 For all fixable ambiguities, Kalman equality constraints with a tight weight are applied to force 4603 the filter state vector to adopt the integer values. Subsequent filter updates treat these fixed 4604 ambiguities 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> Method </b></td> 4611 <td><b> Integer choice </b></td> 4612 <td><b> Output </b></td> 4613 </tr> 4614 <tr> 4615 <td> Rounding </td> 4616 <td> Nearest integer per ambiguity, independently </td> 4617 <td> Hard fix, simple but fragile </td> 4618 </tr> 4619 <tr> 4620 <td> Bootstrapping </td> 4621 <td> Sequential conditional rounding </td> 4622 <td> Hard fix, faster than ILS </td> 4623 </tr> 4624 <tr> 4625 <td> ILS / LAMBDA </td> 4626 <td> Single globally optimal integer vector </td> 4627 <td> Hard fix, optimal under Gaussian noise </td> 4628 </tr> 4629 <tr> 4630 <td> <b>BIE (BNC)</b> </td> 4631 <td> Weighted combination of top-N candidates </td> 4632 <td> Soft/weighted fix, minimum MSE estimator </td> 4633 </tr> 4634 </table> 4635 <br> 4636 4533 4637 <p><h4 id="ppparsys">2.13.2.10.1 Constellations - optional</h4></p> 4534 4638 <p>
Note:
See TracChangeset
for help on using the changeset viewer.
