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

  • Code based calculations, no phase to be considered means less data to provide and it's easier to present candidate vehicles
  • The Ionospheric delay is modeled, not measured (when set in the Modeling section of the config script)
  • The Tropospheric delay is by default Modeled. We will soon have the ability to use the Kalman Filter to postfit the model. That is currently unavailable.
  • Providing L2 or L5 observations will enable more solutions possilibities (more candidates) but will not improve overall performances.
  • 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.

Basic SPP

TODO: add example of SPP without SP3 and Clock

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

Advanced SPP on Galileo

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