# OpenGNSSLab Double Difference teaching package — v1.0.0

Stable lesson: https://opengnsslab.org/advanced/double-difference
Package release: 2026-10-01. Observation epoch: 2024-11-14 09:00:00 **GPST**.
Prepared by OpenGNSSLab from the Qelaro double_difference_training exports.

## Reproduce

Unzip the package, open a terminal in its directory and run:

```sh
python3 reproduce.py
```

Python 3.9+ is sufficient; no third-party dependencies or network access are required.
The program verifies every manifest checksum and recomputes observations, elevation
weights, DD covariance, Cholesky whitening, Householder QR float and constrained
solutions, residual chi-square statistics and objectives of the supplied integer
candidates. A changed file or numerical mismatch exits with an error.

## Conventions and expected results

- Base observation source: 36.24O; rover: 15.24O; GPS L1 C1C (metres), L1C (cycles).
- Common satellites: G04, G07, G09, G16, G30. Reference: G09.
- DD = (Base_target − Base_reference) − (Rover_target − Rover_reference).
- Baseline **b = base − rover** in ECEF metres; rover header coordinates held fixed.
- Unknowns: [dX, dY, dZ, N04, N07, N16, N30], ambiguities in cycles.
- Rows: G04 phase/code, G07 phase/code, G16 phase/code, G30 phase/code.
- Float baseline: [329.96449120681626, 331.82978936717865, −661.7168607071129] m.
- Supplied best integer candidate: [13, 7, 27, 1].
- Candidate-fixed baseline: [329.63936360562184, 331.5113699139712, −661.9064873228442] m.
- Second/best squared-objective ratio: 1.445276488480616.
- Float/fixed chi-square: 0.0004832536841015236 / 0.06780891982717298;
  both fall below their respective two-sided lower bounds.

## Files and provenance

lesson.json contains the normalized full-precision trace, raw observation values,
selected RINEX excerpts, satellite states, model matrices and solver exports.
The three CSV files expose DD rows, H/y and sampled orbit tracks. manifest.json
records their SHA-256 checksums and the original source-export hashes. CITATION.cff
provides a citation with the stable lesson URL. Display rounding is separate from
export precision; QR implementations may differ in their last decimal places.

## Scope and limitations

This is reproduction **from exported satellite states and a frozen-LOS teaching
model**. It does not contain the complete source RINEX sessions, broadcast orbit
processor or the original Qelaro solver. It does not independently rerun a full
LAMBDA integer search; it recomputes the objectives of supplied candidates.
No complete raw-observation-to-position implementation is claimed.

The constrained result is **candidate-fixed, not validated-fixed**. Conditional
formal precision is not external accuracy. One epoch and fixed approximate rover
coordinates do not establish operational RTK reliability. Consult the lesson's
model and diagnostic limitations before interpreting these results.

These files retain their original provenance. This package does not add a licence
grant for the original observations, external research or third-party source code.
For methodology and primary references: https://opengnsslab.org/methodology and
https://opengnsslab.org/references.
