Skip to content
Guillaume W. Bres edited this page May 13, 2024 · 10 revisions

Single Point Positioning (SPP)

SPP is the "simplest" resolution method, is it Pseudo Range (PR) code based, it will not consider carrier phase and will only consider a single carrier signal. SPP also relaxes the requirement on the provided data compared to PPP.

While all of this applies, it still does not mean you cannot achieve decent result with SPP, it all depends on the final accuracy you want to achieve and what decent means. SPP will hardly output PVT solutions below 1 meter of accuracy (so about 5 to 10ns timing accuracy).

RINEX-Cli and RTK-rs are powerful enough to be able cross this barrier under specific conditions:

  • by tolerating longer averaging (providing say 48 hours of observations)
  • providing very high quality data and applying appropriate criteria

Like any position solving strategies, SPP can be converted to CGGTTS, for remote clock comparison.
In this case, the CGGTTS resolution will be limit itself to single carrier pseudo range.

Navigation Filter

Our Navigation filter ecosystem is independent from the solving strategy.
This allows you to set the navigation filter to Kalman while working with SPP (Single carrier PR).

SPP versus PPP

  • Single carrier method: need to gather fewer signals
  • Providing L2 or L5 observations will enable more candidates but will not improve overall performances
  • Phase observation is not required
  • No Ionosphere contribution cancellation, can only be modeled
  • Troposphere is modeled and currently impossible to add to the Kalman filter, even when Filter is set to Kalman
  • Precise products like SP3 and Clock RINEX are originally not intended to be loaded, but you can do it and it severly helps the solving process.

Examples

(1) Basic SPP

TODO: add example of SPP without SP3 and Clock

(2) GPS metric positioning

By providing good quality data and PPP compliant format, it is possible to obtain very good results, while still using a code based resolution method.

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 rinex-cli/config/rtk/gpst_spp_basic.json \
    | tee logs.txt

(3) Galilao and Advanced tuning

In this example, we switch to Kalman filter (most advanced filter), add more data quality criteria

cat conf.json

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 conf.json \
    | tee logs.txt

What's next

Clone this wiki locally