Skip to main content

CDGNSS

The CDGNSS block tunes the carrier-phase/Attitude2D measurement subsystem used by dual-antenna heading and IMU-aided pose. It only matters when ESTIMATOR_PROFILE is set to STANDARD_DUAL_ANTENNA_HEADING or STANDARD_IMU_DUAL_ANTENNA_HEADING. For any other profile, the [CDGNSS] block is ignored.

The [CDGNSS] block is optional. When it is omitted, PpRx emits a startup warning and uses internal defaults for every CDGNSS parameter.

This block covers satellite and measurement selection, differential measurement noise, process noise, sphere grid construction, integer least-squares behavior, and integer aperture testing for the Attitude2D filter. The sigma-point filter parameters that consume these measurements (ATTITUDE_2D_SPF_*) are configured in the "Dual-antenna heading" section of [ESTIMATOR], not here.

Below is an example of the CDGNSS block, used with ESTIMATOR_PROFILE = STANDARD_DUAL_ANTENNA_HEADING or STANDARD_IMU_DUAL_ANTENNA_HEADING:

[CDGNSS]
ELEVATION_MASK_ANGLE_DEG = 14.3
SQRT_Q_TILDE_POS = 0.2
UNDIFFERENCED_ZENITH_PSEUDORANGE_STD = 1.0
UNDIFFERENCED_ZENITH_PHASE_STD = 0.004
SPHERE_GRID_SPACING_MULT = 0.95
ILS_NUM_THREADS = 1
IA_TEST_TYPE = IALS
INNOVATIONS_TEST_PF = 1e-5
note

This block is shared with PpRx's (not-yet-implemented) RTK profiles internally. Some parameters accepted by the underlying estimator only affect RTK operation and are not documented here, since they have no effect on the currently implemented STANDARD_DUAL_ANTENNA_HEADING and STANDARD_IMU_DUAL_ANTENNA_HEADING profiles.

The CDGNSS block can be configured with the following parameters.

Atmospheric corrections

USE_IONO_CORR

Default: True
Parameter Class: Tunable
Impact of Change: Low
Technical Info: Enables ionospheric delay correction when forming CDGNSS measurement predictions.
Practical Tuning Info: Leave enabled for normal operation. For very short baseline dual-antenna operation, ionospheric differences will be negligible, but leaving the correction enabled is still appropriate.

USE_TROPO_CORR

Default: True
Parameter Class: Tunable
Impact of Change: Low
Technical Info: Enables tropospheric delay correction when forming CDGNSS measurement predictions.
Practical Tuning Info: Leave enabled for normal operation. For very short baseline dual-antenna operation, tropospheric differences will be negligible, but leaving the correction enabled is still appropriate.

Baseline geometry & measurement selection

NUM_BASELINES

Default: 1
Parameter Class: Tunable
Technical Info: Number of baselines that participate in the CDGNSS solution.
Practical Tuning Info: Leave at 1 for a standard dual-antenna (PRIMARY/ALT1) setup.

ELEVATION_MASK_ANGLE_DEG

Default: ~14.3 degrees (0.25 radians)
Parameter Class: Tunable
Technical Info: Minimum satellite elevation angle allowed into the CDGNSS solution. Signals below this angle are excluded. Set to -90 to disable elevation masking.
Practical Tuning Info: Leave at the default for most cases. This mirrors the equivalent ELEVATION_MASK_ANGLE_DEG parameter in [ESTIMATOR], but applies only to the CDGNSS/Attitude2D measurement subsystem.

BORESIGHT_ELEVATION_MASK_ANGLE_RAD

Default: -Infinity (disabled)
Parameter Class: Tunable
Technical Info: Boresight-relative elevation mask angle, in radians. Only used when vehicle attitude information is provided in the incoming GBX stream.
Practical Tuning Info: Leave at the default (disabled) unless boresight-relative masking is specifically needed.

ENFORCE_STRICT_SELECTION

Default: True
Parameter Class: Tunable
Technical Info: When enabled, carrier phase and pseudorange measurements with a phase lock statistic below STRICT_SELECTION_PHASE_LOCK_STAT_THRESHOLD or a C/N0 below STRICT_SELECTION_CN0_THRESHOLD are excluded from the CDGNSS solution.
Practical Tuning Info: If navigation solution precision is desired, set to True. If operating in a challenging RF environment, set to False.

STRICT_SELECTION_CN0_THRESHOLD

Default: 37.5
Parameter Class: Tunable
Technical Info: Carrier-to-noise ratio threshold, in dB-Hz, used by ENFORCE_STRICT_SELECTION.
Practical Tuning Info: Leave at the default for most cases. Lower to admit weaker signals in degraded RF environments.

STRICT_SELECTION_PHASE_LOCK_STAT_THRESHOLD

Default: 0.55
Parameter Class: Tunable
Technical Info: Phase lock statistic threshold used by ENFORCE_STRICT_SELECTION.
Practical Tuning Info: Leave at the default for most cases.

ELEVATION_DEPENDENT_WEIGHTING

Default: True
Parameter Class: Tunable
Technical Info: Weights undifferenced observables by 1/sin(el), where el is the elevation angle. This de-weights multipath-corrupted low-elevation signals. When disabled, all observables are weighted equally.
Practical Tuning Info: Leave enabled for most real RF environments.

ADMISSIBLE_GENERIC_TYPES

Default: GPS_L1_CA SBAS_L1_I GALILEO_E1_BC GPS_L2_CLM
Parameter Class: Operational Configuration
Technical Info: To avoid mismatched double differences, only one GenericType is admissible per system at each center frequency (for example, at L2 only one of GPS_L2_CL, GPS_L2_CM, or GPS_L2_CLM is allowed). This list defines which GenericTypes are admissible.
Practical Tuning Info: Leave at the default unless a specific GenericType needs to be excluded or substituted.

TXID_EXCLUDE_LIST

Default: (empty)
Parameter Class: Operational Configuration
Technical Info: List of TxIds and frequencies to exclude from the CDGNSS solution. Each entry uses the RINEX-style format [System][Number][Frequency], for example G23L2 (GPS PRN 23, L2 only) or E13L1 (Galileo PRN 13, L1 only).
Practical Tuning Info: Use to exclude specific known-bad transmitters or frequencies from the solution.

FORCE_PIVOT_LIST

Default: (empty)
Parameter Class: Operational Configuration
Technical Info: List of TxIds and frequencies (same format as TXID_EXCLUDE_LIST) that are forced to be used as pivots in double differencing. If empty, pivots are chosen by the default internal algorithm.
Practical Tuning Info: Leave empty for most cases.

Measurement noise

UNDIFFERENCED_ZENITH_PSEUDORANGE_STD

Default: 1.0
Parameter Class: Tunable
Technical Info: Standard deviation of undifferenced pseudorange measurements, in meters, assuming a transmitter at zenith. Applies to all frequencies.
Practical Tuning Info: Leave at the default for most cases.

UNDIFFERENCED_ZENITH_PHASE_STD

Default: 0.004
Parameter Class: Tunable
Technical Info: Standard deviation of undifferenced carrier phase measurements, in meters, assuming a transmitter at zenith. Applies to all frequencies.
Practical Tuning Info: Leave at the default for most cases.

UNDIFFERENCED_ZENITH_STATIONARY_PSEUDORANGE_STD

Default: Same as UNDIFFERENCED_ZENITH_PSEUDORANGE_STD if unset
Parameter Class: Tunable
Technical Info: Undifferenced pseudorange standard deviation at zenith, in meters, used while the rover is stationary (as determined by the standard navigation solution's velocity). Can be set higher than UNDIFFERENCED_ZENITH_PSEUDORANGE_STD to account for increased multipath a stationary antenna experiences.
Practical Tuning Info: Leave unset unless stationary-specific multipath behavior is being tuned.

UNDIFFERENCED_ZENITH_TRANSIENT_PSEUDORANGE_STD

Default: 2.0
Parameter Class: Tunable
Technical Info: Undifferenced pseudorange standard deviation at zenith, in meters, used during the tracking loop's initial transient period after a signal is first tracked.
Practical Tuning Info: Leave at the default for most cases.

SQRT_Q_TILDE_POS

Default: 0.2
Parameter Class: Tunable
Technical Info: Square root of the position process noise intensity used by the CDGNSS/Attitude2D filter, in meters/√s. Represents the standard deviation of error induced by process noise over a 1-second propagation step; for a T-second step this is approximately sqrt(T) × SQRT_Q_TILDE_POS.
Practical Tuning Info: Leave at the default for most cases. Higher values make the filter more responsive to real motion at the cost of noisier solutions.

Innovations testing & outlier rejection

INNOVATIONS_TEST_PF

Default: 1e-5
Parameter Class: Tunable
Technical Info: False-alarm probability for the double-difference pseudorange ("float") innovations test, a chi-squared test on the normalized innovations squared (NIS) statistic. If this test fails for a batch of observables, the Attitude2D estimator reinitializes.
Practical Tuning Info: Leave at the default for most cases. Lower values make the estimator more tolerant of noisy measurements before reinitializing; higher values make it reinitialize more readily.

FIX_INNOVATIONS_TEST_PF

Default: 1e-5
Parameter Class: Tunable
Technical Info: False-alarm probability for the double-difference carrier phase ("fix") innovations test. If this test fails for a batch of observables, the estimator falls back to a float (non-integer-fixed) solution.
Practical Tuning Info: Leave at the default for most cases. Set to a very small value (for example 1e-100) to effectively disable this test.

DD_PSEUDORANGE_SCALAR_OUTLIER_THRESH_STD

Default: +Infinity (disabled)
Parameter Class: Tunable
Technical Info: Threshold, in standard deviations, for scalar double-difference pseudorange outlier rejection. If a DD pseudorange measurement's normalized innovation exceeds this threshold, the corresponding satellite is excluded on all frequencies.
Practical Tuning Info: Leave at the default (disabled) unless outlier rejection on individual satellites is specifically needed.

OUTLIER_EXCLUSION

Default: False
Parameter Class: Tunable
Technical Info: Enables N-minus-1 (single-signal-with-replacement) outlier exclusion when integer fixing fails.
Practical Tuning Info: Enable in environments where occasional single-satellite outliers are expected to block integer fixing.

OUTLIER_EXCLUSION_DEPTH

Default: 0
Parameter Class: Tunable
Technical Info: Depth of the OUTLIER_EXCLUSION search. Signals are ordered from most to least likely to be causing fixing failure, and single-signal exclusion is attempted on each in turn, up to this depth. A value of 0 disables outlier exclusion regardless of OUTLIER_EXCLUSION.
Practical Tuning Info: Set above 0 to enable outlier exclusion once OUTLIER_EXCLUSION is enabled.

MINIMUM_NUMBER_DD_SIGNALS

Default: 1
Parameter Class: Tunable
Technical Info: Minimum number of double-differenced signal pairs required to promote a float solution to a fixed solution. Ignored if the previous solution was already fixed, unless FORCE_NDD_REQUIREMENT is enabled.
Practical Tuning Info: Raise to require more redundancy before accepting an integer fix.

FORCE_NDD_REQUIREMENT

Default: False
Parameter Class: Tunable
Technical Info: When disabled, a fixed solution with fewer double-differenced signals than MINIMUM_NUMBER_DD_SIGNALS can still be accepted if the previous solution was fixed and other criteria are met. When enabled, MINIMUM_NUMBER_DD_SIGNALS is strictly enforced on every epoch.
Practical Tuning Info: Leave at the default for most cases.

Sphere grid & integer least-squares

SPHERE_GRID_SPACING_MULT

Default: 0.95
Parameter Class: Tunable
Technical Info: The spherical grid used in constrained-baseline integer least-squares requires grid points spaced no more than half the smallest signal wavelength (the L1 wavelength). This value multiplies that spacing goal; it cannot exceed 1 or be less than or equal to 0. Only relevant to the Attitude2D estimator.
Practical Tuning Info: Leave near the default for most cases.

USE_POINT_REPELLING_MODEL

Default: False
Parameter Class: Tunable
Technical Info: Refines the spherical grid used in constrained-baseline integer least-squares by making grid points more uniformly spaced. This can take significant time to run for baselines longer than 1 meter. Only relevant to the Attitude2D estimator.
Practical Tuning Info: Leave disabled unless grid uniformity is specifically limiting performance, since this can be slow for longer baselines.

ILS_NUM_THREADS

Default: 1
Parameter Class: Tunable
Technical Info: Number of threads the integer least-squares solver is allowed to use for parallelizable operations (for example, grid search). The benefit of parallelization is platform-dependent, and requesting too many threads can make switching overhead outweigh the benefit.
Practical Tuning Info: Leave at the default for most cases.

Integer aperture testing

IA_TEST_TYPE

Default: IALS
Parameter Class: Tunable
Options:

  • IALS   [integer aperture least-squares test; the optimal test for integer least squares]
  • RATIO
  • DIFFERENCE

Technical Info: Selects the integer aperture test used to validate an integer-fixed solution before accepting it.
Practical Tuning Info: Leave at the default (IALS) for most cases.

IA_OVERRIDE_TEST_RESULT

Default: False
Parameter Class: Tunable
Technical Info: When enabled, the integer aperture test still runs (so its statistics remain visible), but its result is overridden by IA_OVERRIDE_VALUE rather than gating the fix. Useful for viewing all-fixed or all-float output for evaluation.
Practical Tuning Info: Leave disabled for normal operation.

IA_OVERRIDE_VALUE

Default: False
Parameter Class: Tunable
Technical Info: The fixed/float result used in place of the real test result when IA_OVERRIDE_TEST_RESULT is enabled.
Practical Tuning Info: Only relevant when IA_OVERRIDE_TEST_RESULT is enabled.

IA_USE_FIXED_FAILURE_RATE

Default: True
Parameter Class: Tunable
Technical Info: Enables fixed-failure-rate testing for the selected IA_TEST_TYPE. When disabled, the test parameter is held at IA_DEFAULT_TEST_PARAM instead.
Practical Tuning Info: Leave at the default for most cases.

IA_DEFAULT_TEST_PARAM

Default: 0.8
Parameter Class: Tunable
Technical Info: The test parameter used when IA_USE_FIXED_FAILURE_RATE is disabled.
Practical Tuning Info: Leave at the default unless fixed-failure-rate testing has been specifically disabled and a different static threshold is needed.

IA_MINIMUM_TEST_PARAM

Default: -Infinity (disabled)
Parameter Class: Tunable
Technical Info: Minimum test statistic allowed under fixed-failure-rate testing. Protects against the fixed-failure-rate test setting a very low or zero threshold when model strength is overly optimistic, such as from unmodeled multipath bias.
Practical Tuning Info: Leave at the default (disabled) unless the fixed-failure-rate test is producing implausibly permissive thresholds.

IA_ALLOWABLE_FAILURE_PROBABILITY

Default: 1e-3
Parameter Class: Tunable
Technical Info: Maximum allowable failure probability for fixed-failure-rate testing. Some integer aperture tests look up model coefficients from a table indexed partly by this value; if the specified rate is below every table entry, PpRx raises a configuration error.
Practical Tuning Info: Leave at the default for most cases.

Attitude2D solution constraints

A2D_MAX_ELEVATION_FOR_INTEGER_INITIAL_GUESS_DEG

Default: -1 (disabled)
Parameter Class: Tunable
Technical Info: Confines the initial relative-position guess to within plus/minus this elevation value. A value of -1 disables the elevation constraint on the initial guess.
Practical Tuning Info: Leave at the default (disabled) for most cases.

A2D_SOLUTION_ELEVATION_MASK_RAD

Default: π/2 (disabled)
Parameter Class: Tunable
Technical Info: If the Attitude2D solution lies outside plus/minus this elevation threshold, the integrity-check-passed flag is lowered. A value of -1 disables this threshold.
Practical Tuning Info: Leave at the default for most cases.

DISABLE_AFTER_PPOSE_INIT

Default: False
Parameter Class: Tunable
Technical Info: When enabled, this estimator stops consuming incoming GBX reports once the attached fused-pose estimator reports it has initialized. Reduces CPU usage when CDGNSS/Attitude2D is only needed to initialize the fused pose solution.
Practical Tuning Info: Enable to save CPU once fused pose initialization is no longer needed from this estimator.

Differential code bias & data validity

GALILEO_E1_BC_TO_GPS_L1_CA_DD_DCB

Default: 0
Parameter Class: Tunable
Technical Info: Differential code bias, in the double-difference pseudorange observation, between a GPS L1 C/A pivot satellite and a Galileo E1 BC non-pivot satellite. If pivot/non-pivot roles are reversed, the negated value is applied. This bias arises when the rover and reference receivers have dissimilar front ends or code replica generator configurations.
Practical Tuning Info: Leave at 0 unless a known DCB between dissimilar front ends needs to be corrected.

SBAS_L1_I_TO_GPS_L1_CA_DD_DCB

Default: 0
Parameter Class: Tunable
Technical Info: Same as GALILEO_E1_BC_TO_GPS_L1_CA_DD_DCB, for an SBAS L1 non-pivot satellite.
Practical Tuning Info: Leave at 0 unless a known DCB between dissimilar front ends needs to be corrected.

FORCE_VALID_REFERENCE_OBSERVABLES

Default: False
Parameter Class: Tunable
Technical Info: Observables are normally marked invalid if the transmitter is unhealthy or its health status is unknown. When enabled, all processed reference-stream observables are considered valid regardless of health status. Rover-stream observables are unaffected.
Practical Tuning Info: Leave disabled for normal operation.

FORCE_VALID_GALILEO_14_AND_18_OBSERVABLES

Default: False
Parameter Class: Tunable
Technical Info: Galileo TxIds 14 and 18 were launched into incorrect orbits; their signals are usable but still marked unhealthy by some receivers. When enabled, observables from these two satellites are treated as valid despite the unhealthy flag.
Practical Tuning Info: Enable if Galileo 14/18 availability is needed and their observables are otherwise being excluded due to health status.

MAXIMUM_AGE_OF_VALID_REFERENCE_DATA_SEC

Default: 0.5
Parameter Class: Tunable
Technical Info: Maximum allowed age, in seconds, of reference data relative to the current rover epoch for the reference data to be considered valid.
Practical Tuning Info: Set below the reference stream's inter-epoch interval to ensure an acceptably small age of data.

BACKWARD

Default: False
Parameter Class: Tunable
Technical Info: Configures the estimator to expect and operate on a time-reversed data stream. Does not itself reverse a normal data stream.
Practical Tuning Info: Leave disabled for normal, forward-time operation.