Skip to content
Guillaume W. Bres edited this page May 29, 2024 · 7 revisions

Code based Precise Positioning (CPP)

Like SPP, we only consider Pseudo Range (PR) observations, but we now consider those on two separate frequencies (L2 or L5). We still do not consider Phase Range (PH) observations, unlike PPP.

CPP is a little harder than SPP to comply with, because you will have to sample two carrier signals.

The combination allows accurate Ionosphere delay compensation. This means that the iono_delay field of the Modeling section of the config script is irrelevant in CPP (like in PPP). It also means that the Ionosphere Delay exposed in the CGGTTS solution is now measued, not modeled.

CPP versus SPP

  • Requires secondary carrier signal: harder to comply with
  • Will not generate a single solution if your observations come from a single signal
  • Ionosphere is not modeled, this option becomes irrelevant and processing is actually faster (no modelling)
  • Reach high end SPP results much more easily

Note that this framework supports any RINEX code, and so, allows working with any signal in theory.

CPP versus PPP

  • Similar Ionosphere bias cancellation
  • No phase observation required: less signal observations required, easier to comply with
  • Troposphere can only be modeled. Soon we will have the ability to inject it in a Kalman filter, but that is not the case as of today
  • Hard to cross the metric barrier

CPP on GPS

Ionosphere modeling is disregarded since it is now measured directly.
With fewer computations, we obtain similar results to our best SPP example:

rinex-cli \
    -f test_resources/CRNX/V3/ESBC00DNK_R_20201770000_01D_30S_MO.crx.gz \
    -f test_resources/CLK/V3/GRG0MGXFIN_20201770000_01D_30S_CLK.CLK.gz \
    -f test_resources/NAV/V3/ESBC00DNK_R_20201770000_01D_MN.rnx.gz \
    -f test_resources/SP3/GRG0MGXFIN_20201770000_01D_15M_ORB.SP3.gz \
    -P GPS \
    -p -c config/survey/cpp_lsq.json \
    | tee logs.txt

When working with CPP, make sure that L2 or L5 signal is available, otherwise we cannot obtain a solution.

CPP on Galileo

We use -P Gal to retain this constellation, navigation is therefore only based on this Constellation. Working with Galileo gives x10 direct improvements (higher precision codes).

rinex-cli \
    -f test_resources/CRNX/V3/ESBC00DNK_R_20201770000_01D_30S_MO.crx.gz \
    -f test_resources/CLK/V3/GRG0MGXFIN_20201770000_01D_30S_CLK.CLK.gz \
    -f test_resources/NAV/V3/ESBC00DNK_R_20201770000_01D_MN.rnx.gz \
    -f test_resources/SP3/GRG0MGXFIN_20201770000_01D_15M_ORB.SP3.gz \
    -P GAL \
    -p -c config/survey/survey/cpp_kf.json \
    | tee logs.txt

What's next

Clone this wiki locally