Skip to content

Self-contained offline demo

The demo is the shortest way to verify the published runtime can run a positioning pipeline without a dataset download, network service, or credentials.

Public image (no build)

Pull the public image once, then run the tracked demo with only an output mount:

docker pull ghcr.io/rsasaki0109/gnssplusplus-library:v0.2.0
mkdir -p output
docker run --rm \
  -v "$PWD/output:/workspace/output" \
  ghcr.io/rsasaki0109/gnssplusplus-library:v0.2.0 \
  demo --output-dir /workspace/output/self-contained-demo

The image contains the same tracked, project-authored synthetic PPP fixture as the source checkout. A successful run has eight processed and eight valid PPP solutions and writes the .pos, KML, and JSON artifacts listed below. The run itself is offline after the image is present; the synthetic fixture validates CLI/build/artifact plumbing, not field accuracy, real-world satellite geometry, or RTK fix performance.

Artifacts

Both the public image and native command run the built gnss_ppp executable against the three tracked files in demo/fixtures/ (or the installed prefix) and write:

output/self-contained-demo/demo_solution.pos
output/self-contained-demo/demo_solution.kml
output/self-contained-demo/demo_summary.json

The .pos file is the libgnss++ RTKLIB-compatible position format, the KML is the solver's track output, and the JSON combines the native PPP counters with the demo's self-contained-demo.v1 provenance block. A successful run has eight processed and eight valid PPP solutions. The output directory can be changed with --output-dir PATH.

Native checkout

If this checkout has not been built yet:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --target gnss_ppp --parallel 2
python3 apps/gnss.py demo

The demo command only opens local files. It does not call fetch-products, NTRIP, HTTP, or any other network/credential source. A missing binary is reported with the build command rather than silently falling back to a fake solution.

Local Docker image

Build the existing runtime image, then run the same command with the output directory mounted for easy inspection:

docker build -t libgnsspp:demo .
docker run --rm \
  -v "$PWD/output:/workspace/output" \
  libgnsspp:demo demo --output-dir /workspace/output/self-contained-demo

The image installs the same fixture under /opt/libgnsspp/share/libgnsspp/demo; the container run itself needs no network or credentials. The image build may use the package mirrors required by the repository's existing Dockerfile when the base image/dependencies are not already cached.

Fixture provenance and limits

demo/fixtures/ is a project-authored, deterministic fixture: six GPS satellites are placed at known positions around a receiver at 35°N, 139°E, 45 m ellipsoidal height; pseudorange and carrier-phase values are computed from geometric range, and two precise-product epochs are provided. The equations and formatting are shared with the existing build_synthetic_ppp_inputs test helper in tests/cli_cases/_support.py.

The three inputs are small, tracked text files distributed under this repository's MIT license. No third-party raw observation or precise-product file is bundled. Because the measurements are synthetic, this demo proves CLI/build/artifact plumbing only; it is not evidence of field accuracy, real-world satellite geometry, or RTK fix performance.