Skip to content

PPC Reproduction Commands

PPC-Dataset can be verified directly from an extracted dataset tree:

python3 apps/gnss.py ppc-demo \
  --dataset-root /datasets/PPC-Dataset \
  --city tokyo \
  --run run1 \
  --solver rtk \
  --require-realtime-factor-min 1.0 \
  --summary-json output/ppc_tokyo_run1_rtk_summary.json

Current Sign-Off Profile

Use ppc-rtk-signoff for the deployable status profile:

python3 apps/gnss.py ppc-rtk-signoff \
  --dataset-root /datasets/PPC-Dataset \
  --city tokyo \
  --realtime-profile sigma-demote \
  --rtklib-bin /path/to/rnx2rtkp \
  --summary-json output/ppc_tokyo_run1_rtk_signoff.json

Use ppc-coverage-matrix to replay the full six-run sigma-demote nis2-ratio4 profile:

python3 apps/gnss.py ppc-coverage-matrix \
  --config-toml configs/ppc_sigma_demote_nis2_ratio4.toml

Override --dataset-root after --config-toml when your PPC checkout is not under data/PPC-Dataset.

Local MADOCALIB RTKLIB Smoke

If a standard RTKLIB rnx2rtkp is not installed but external/madocalib is available locally, build its console app and use the PPC RTK config for the fork-specific option enum:

make -C external/madocalib/app/consapp/rnx2rtkp/gcc

python3 apps/gnss.py ppc-coverage-matrix \
  --config-toml configs/ppc_sigma_demote_nis2_ratio4.toml \
  --max-epochs 20 \
  --rtklib-bin external/madocalib/app/consapp/rnx2rtkp/gcc/rnx2rtkp \
  --rtklib-config scripts/madocalib_ppc_rtk.conf \
  --output-dir output/ppc_rtklib_baseline_smoke \
  --summary-json output/ppc_rtklib_baseline_smoke/summary.json \
  --markdown-output output/ppc_rtklib_baseline_smoke/table.md

ppc-demo passes -p 2 to rnx2rtkp for RTK comparisons. The MADOCALIB config intentionally omits pos1-posmode because that fork's config enum does not accept relative kinematic, while the CLI option does.

Coverage Matrix

Use this for the README RTKLIB demo5 comparison table:

python3 apps/gnss.py ppc-coverage-matrix \
  --dataset-root /datasets/PPC-Dataset \
  --rtklib-root output/benchmark \
  --ratio 2.4 \
  --summary-json output/ppc_coverage_matrix/summary.json \
  --markdown-output output/ppc_coverage_matrix/table.md

python3 scripts/update_ppc_coverage_readme.py \
  --summary-json output/ppc_coverage_matrix/summary.json

Historical Diagnostics

Older selector, residual-reset, IMU bridge, and tail-cleanup sweeps are kept as benchmark diagnostics rather than README sign-off commands. See Benchmarks for the scorecards and reproduction commands, and PPC realtime gate outputs for the accepted/rejected runtime status-demotion profiles.

Provenance

The PPC summary records receiver_observation_provenance for the bundled survey-grade rover/base RINEX streams. Proprietary receiver-engine solutions are not assumed to be part of the PPC benchmark target.

RTK ionosphere sweeps can be run through ppc-demo, ppc-rtk-signoff, or ppc-coverage-matrix with --iono auto|off|iflc|est; PPC summaries record the requested value as rtk_iono. Ambiguity-ratio sweeps use --ratio <value>; PPC summaries record the requested value as rtk_ratio_threshold.

Dataset source: taroz/PPC-Dataset