Changeset 10943 in ntrip


Ignore:
Timestamp:
Jun 22, 2026, 3:50:26 PM (4 weeks ago)
Author:
stuerze
Message:

handling of ionospheric constraints described/updated

Location:
trunk/BNC/src
Files:
2 edited

Legend:

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

    r10942 r10943  
    43984398</p>
    43994399
     4400<p>
     4401The choice between an uncombined ('Pi&amp;Li', 'Pi', 'P1&amp;L1', 'P1') and an ionosphere-free ('P3&amp;L3', 'P3',
     4402'L3') linear combination does not just change which observations are read - it changes the set of parameters
     4403estimated by BNC's Kalman filter and how each observation enters the filter:
     4404</p>
     4405
     4406<p><b>Uncombined PPP</b><br>
     4407Each frequency's code and/or phase observation enters the filter on its own, without forming the
     4408ionosphere-free combination first. The state vector therefore carries, in addition to receiver position, one
     4409receiver clock per GNSS system and troposphere zenith delay (if estimated):
     4410<ul>
     4411  <li>one carrier-phase ambiguity per satellite and per phase frequency,</li>
     4412  <li>one slant ionospheric delay (ION) per satellite, and</li>
     4413  <li>one differential code/phase bias per frequency and GNSS system (common to all satellites of that
     4414      system), mainly needed to absorb hardware delays and to remove the rank deficiency between receiver
     4415      clock, ambiguities and biases.</li>
     4416</ul>
     4417Receiver clock, biases and the per-satellite ionospheric delay are re-estimated fresh every epoch (no Kalman
     4418process noise carried over), while position, troposphere and ambiguities accumulate over time. This means each
     4419epoch's ionospheric delay per satellite is, by default, determined from that epoch's code-minus-phase
     4420combination alone - exactly the weakly observable quantity that the optional ionospheric pseudo-observations
     4421(see <a href=#pppconstraints>Section 2.13.2.9</a>) are meant to stabilize.
     4422</p>
     4423<p>
     4424Uncombined PPP is not limited to two frequencies. For GPS, Galileo and BDS the custom band selection (e.g.
     4425'P125&amp;L125', see above) adds a third, fourth, etc. frequency the same way: one more code and phase
     4426observation, one more carrier-phase ambiguity, and one more per-frequency bias parameter, all referring to the
     4427very same single per-satellite ionospheric delay (ION) parameter, scaled to each frequency through the usual
     44281/f&sup2; ionospheric mapping. The optional ionospheric pseudo-observations of
     4429<a href=#pppconstraints>Section 2.13.2.9</a> are added for any uncombined band selection this way, predefined
     4430('Pi&amp;Li', 'Pi', 'P1&amp;L1', 'P1') or custom, as long as at least one code or phase observation is configured
     4431for the affected GNSS system.
     4432</p>
     4433
     4434<p><b>Ionosphere-free PPP</b><br>
     4435The dual-frequency ionosphere-free linear combination is formed from code and/or phase data before it enters
     4436the filter, which removes the first-order ionospheric delay from the observation equation. The state vector
     4437therefore needs no per-satellite ionospheric delay parameter at all; it carries only receiver position, one
     4438receiver clock per system, troposphere (if estimated), and one combined (non-integer) ambiguity-like parameter
     4439per satellite that absorbs the carrier-phase ambiguity together with the satellite/receiver hardware delays of
     4440the combination. Because this combined parameter is not an integer number of cycles, ambiguity resolution
     4441(<a href=#pppar>Section 2.13.2.10</a>) is not applicable in this mode, and the optional ionospheric
     4442pseudo-observations of <a href=#pppconstraints>Section 2.13.2.9</a> do not apply either, since there is no
     4443per-satellite ionospheric state left to constrain.
     4444</p>
     4445
    44004446<p><h4 id="pppcodeobs">2.13.2.2 Code Observations - mandatory</h4></p>
    44014447<p>
  • trunk/BNC/src/pppOptions.cpp

    r10791 r10943  
    290290      }
    291291    }
    292   }
    293 }
     292    if (_pseudoObsIono && !LCs->empty()) {
     293      LCs->push_back(t_lc(t_lc::GIM, t_frequency::dummy));
     294    }
     295  }
     296}
Note: See TracChangeset for help on using the changeset viewer.