Skip to main content

ESTIMATOR

The ESTIMATOR block configures PpRx's navigation solution engine. It controls how GNSS measurements are corrected, weighted, accepted or rejected, and how the receiver position, velocity, clock, and related state are propagated over time.

Below is an example of the ESTIMATOR block:

[ESTIMATOR]
USE_IONO_CORR = TRUE
USE_TROPO_CORR = TRUE
ELEVATION_MASK_ANGLE_DEG = 15
ENFORCE_STRICT_SELECTION = TRUE
ALLOW_DELTR_FIXUPS = TRUE
MAX_ABS_DELTR_SEC = 0.0001
DYNAMICS_MODEL = STATIC
SQRT_Q_TILDE = 0.5
CLOCK_TYPE = TCXO
ZENITH_PSEUDORANGE_STD = 0.9
ZENITH_DOPPLER_STD = 0.7
SISRE_DEFAULT_STD = 1.0
SISRE_STD_INFLATION_FACTOR = 1.0
ZERO_VELOCITY_UPDATE_THRESHOLD_MPS = 0.15
ELEVATION_DEPENDENT_WEIGHTING = TRUE
ELEVATION_WEIGHTING_KNEE_DEG = 9
INNOVATIONS_TEST_PF = 1e-3

The ESTIMATOR block can be configured with the following parameters.

Initialization & startup robustness

These parameters control when the estimator is allowed to form its first navigation solution and how strict it is during startup.

MIN_UNIQUE_TXS_FOR_UNINITIALIZED_SOLUTION

Default: 4
Parameter Class: Tunable
Impact of Change: Medium
Technical Info: Minimum number of distinct transmitters required before the estimator attempts to form an initial solution without a valid prior state. This protects initialization from relying on too few satellites, even if multiple measurements are available from the same transmitter.
Practical Tuning Info: Leave at 4 for most cases. Raising this value requires more satellite diversity before startup and can improve robustness at the cost of longer time-to-first-fix. Note that MIN_MEASUREMENTS_FOR_UNINITIALIZED_SOLUTION may gate estimator startup even if this value is low.

MIN_MEASUREMENTS_FOR_UNINITIALIZED_SOLUTION

Default: 5
Parameter Class: Tunable
Impact of Change: Medium
Technical Info: Minimum number of usable measurement rows required before the estimator attempts to form an initial solution without a valid prior state. This protects initialization from using a barely constrained measurement set, even when enough distinct transmitters are available.
Practical Tuning Info: Leave at 5 for most cases. A value of 5 rather than 4 allows consistency checking in addition to solving a unique solution. Raising this value requires more total observables before startup and can improve robustness at the cost of longer time-to-first-fix.

INITIALIZATION_TEST_PF

Default: 1e-5
Parameter Class: Tunable
Impact of Change: Medium
Technical Info: Target false-alarm probability for rejecting a good set of measurements while forming an initial estimator solution. The estimator compares the startup pseudorange/Doppler residuals against their expected uncertainty and only accepts the initial solution if the measurement set is statistically self-consistent.
Practical Tuning Info: Leave at the default for most cases. Higher values make initialization stricter and can delay the first solution by rejecting usable startup measurement sets; lower values make initialization more permissive but increase the risk of accepting a biased or low-quality initial solution.

INITIALIZATION_TEST_THRESHOLD_FACTOR

Default: 0
Parameter Class: Tunable
Impact of Change: Medium
Technical Info: Maximum allowed initialization NIS ratio when forming an initial estimator solution. If set, this fixed threshold is used instead of INITIALIZATION_TEST_PF; the estimator rejects the initialization attempt if the NIS, used as a measure of statistical self-consistency, exceeds this value.
Practical Tuning Info: Leave unset in most cases. If set, values around 1.5–3 are reasonable starting points, with lower values making startup stricter and higher values making startup more permissive. This value overrides INITIALIZATION_TEST_PF.

Baseline measurement noise

These parameters define the estimator's baseline assumptions about pseudorange and Doppler measurement quality.

ZENITH_PSEUDORANGE_STD

Default: 3
Parameter Class: Tunable
Impact of Change: Medium
Technical Info: Assumed pseudorange measurement standard deviation, in meters, for a satellite directly overhead, before elevation weighting, atmospheric uncertainty, and SISRE effects are applied. Larger values reduce pseudorange influence in the estimator; smaller values make pseudorange measurements more trusted.
Practical Tuning Info: The default should be a safe value for most applications, but additional performance may be possible by reducing this value down to the 1 meter range. Setting this value lower will increase the estimator's trust in measurements, making it more responsive to dynamics but also potentially increasing noise in position and velocity estimates.

ZENITH_DOPPLER_STD

Default: 1
Parameter Class: Tunable
Impact of Change: Medium
Technical Info: Assumed Doppler measurement standard deviation, in Hz, for a satellite directly overhead, before elevation weighting, atmospheric uncertainty, and SISRE effects are applied. Larger values reduce Doppler influence on the estimator solution.
Practical Tuning Info: The default should be a safe value for most applications, but additional performance may be possible by reducing this value down to the 0.3 Hz range. Setting this value lower will increase the estimator's trust in measurements, making it more responsive to dynamics but also potentially increasing noise in position and velocity estimates.

Measurement acceptance & consistency checks

These parameters control whether candidate measurements are allowed to participate in an estimator update.

ENFORCE_STRICT_SELECTION

Default: True
Parameter Class: Tunable
Impact of Change: Medium
Technical Info: When enabled, allows only signals with a healthy phase lock to participate in the estimation solution.
Practical Tuning Info: If navigation solution precision is desired, set to True. If operating in a challenging RF environment, set to False.

INNOVATIONS_TEST_PF

Default: 1e-3
Parameter Class: Tunable
Impact of Change: Medium
Technical Info: Target false-alarm probability for excluding a good set of measurements during an estimator update. The estimator compares the measured pseudorange/Doppler residuals against their expected uncertainty and attempts not to use suspect measurements when updating the navigation solution.
Practical Tuning Info: Leave at the default for most cases. Higher values make the test stricter and can cause good measurements to be excluded during normal noise variation; lower values make excluding good measurements less likely but can allow low-quality measurements to more easily remain in the solution.

INNOVATIONS_TEST_THRESHOLD_FACTOR

Default: 0
Parameter Class: Tunable
Impact of Change: Medium
Technical Info: Maximum allowed NIS ratio for a measurement set during an estimator update. If the NIS of a group of measurements (nominally 1.0) exceeds this value, the estimator treats the set as inconsistent and attempts not to use suspect measurements when updating the navigation solution.
Practical Tuning Info: Leave unset in most cases. If set, values of 3–6 are reasonable. This value overrides INNOVATIONS_TEST_PF, which is an alternate statistical method for setting the measurement exclusion threshold.

Elevation-based weighting & exclusion

These parameters reduce or remove the influence of low-elevation measurements, which are more likely to be affected by multipath, blockage, or atmospheric modeling error.

ELEVATION_MASK_ANGLE_DEG

Default: ~14.3 degrees (0.25 radians)
Parameter Class: Tunable
Impact of Change: Medium
Technical Info: Minimum satellite elevation angle allowed into the estimator solution. Signals below this angle are excluded, reducing use of low-elevation measurements that are more likely to suffer multipath, blockage, or atmospheric modeling error.
Practical Tuning Info: Typical values are 5–15 degrees, with higher values often working better in more occluded environments. Higher values produce cleaner but fewer measurements, while lower values increase satellite availability at the cost of admitting more potentially low-quality, low-elevation measurements.

ELEVATION_DEPENDENT_WEIGHTING

Default: True
Parameter Class: Tunable
Impact of Change: Medium
Technical Info: Enables elevation-based measurement uncertainty inflation. Low-elevation signals are assigned larger pseudorange and Doppler uncertainty, reducing their influence in the estimator.
Practical Tuning Info: Leave enabled for most real RF environments because low-elevation signals are more likely to suffer multipath and atmospheric modeling error.

ELEVATION_WEIGHTING_KNEE_DEG

Default: ~9.7 degrees (0.17 radians)
Parameter Class: Tunable
Impact of Change: Medium
Technical Info: Sets the elevation angle at which the elevation weighting "bends" significantly when using ELEVATION_DEPENDENT_WEIGHTING. At this elevation angle, the measurement standard deviation is inflated by about 4.7×, and increases toward the horizon.
Practical Tuning Info: Leave near the default for most cases. Using higher values may slightly improve performance in occluded environments.

Satellite signal-in-space error

These parameters control how satellite-side orbit and clock uncertainty contributes to the estimator's assumed measurement uncertainty.

SISRE_DEFAULT_STD

Default: 0.00
Parameter Class: Tunable
Impact of Change: Low
Technical Info: Default Signal-in-Space Range Error (SISRE) standard deviation, in meters, used when the ephemeris record does not provide a SISRE value. This term is the expected 1-sigma pseudorange error from satellite-side orbit/clock model inaccuracies, and contributes to assumed pseudorange measurement uncertainty.
Practical Tuning Info: Only relevant for unusual cases where SISRE information is not available from satellite transmissions. If needed, 0.5 meters would likely be a good conservative setting.

SISRE_STD_INFLATION_FACTOR

Default: 1.0
Parameter Class: Tunable
Impact of Change: Low
Technical Info: Global multiplier applied to SISRE standard deviation before it is included in the pseudorange measurement variance assumption. Increasing this value reduces the estimator's confidence in pseudorange values.
Practical Tuning Info: Leave at 1.0 for almost all cases. Tune only if ephemeris quality estimates are known to be under- or over-confident.

Receiver motion model

These parameters control how the estimator propagates receiver position, velocity, and related motion states between measurement updates.

DYNAMICS_MODEL

Default: NEARLY_CONSTANT_VELOCITY
Parameter Class: Tunable
Impact of Change: High \

Options:

  • STATIC   [recommended for static usage]
  • NEARLY_CONSTANT_VELOCITY   [recommended for typical dynamic usage]
  • NEARLY_CONSTANT_ACCELERATION
  • LOW_EARTH_ORBIT

Technical Info: Selects the motion model used to propagate the receiver state between measurement updates. STATIC assumes fixed position, NEARLY_CONSTANT_VELOCITY assumes velocity changes slowly, NEARLY_CONSTANT_ACCELERATION assumes acceleration changes slowly, and LOW_EARTH_ORBIT uses an orbital propagation model.
Practical Tuning Info: Use STATIC for stationary receivers and NEARLY_CONSTANT_VELOCITY for all moving ground/air platforms. NEARLY_CONSTANT_ACCELERATION and LOW_EARTH_ORBIT should be used for space-based applications.

SQRT_Q_TILDE

Default: 5
Parameter Class: Tunable
Impact of Change: High
Technical Info: Controls how much the estimator allows the receiver state to change between measurement updates beyond what the selected DYNAMICS_MODEL predicts. Higher values make the estimator more willing to follow new measurements; lower values make it trust the propagated motion model more strongly.
Practical Tuning Info: For NEARLY_CONSTANT_VELOCITY, this value should be somewhat greater than the average expected vehicle acceleration, in m/s². Tuning higher will make the estimator more responsive to real motion, but can make the solution noisier.

For all other DYNAMICS_MODEL settings, this value should often be much smaller, typically 0.001 to 0.1. Tune toward the higher end of the range when unmodeled acceleration, atmospheric variation, multipath, or other slowly changing bias sources are expected.

MAX_OPEN_LOOP_PROP_SEC

Version Introduced: v5.1.0
Default: -1
Parameter Class: Tunable
Impact of Change: Medium
Technical Info: Maximum amount of time, in seconds, the estimator is allowed to propagate the state forward open-loop, without any measurements. Values less than 0 disable this feature.
Practical Tuning Info: Set a finite value when stale propagated solutions are undesirable; shorter values force faster reset/reinitialization after signal loss, while longer values tolerate brief outages but may result in incorrectly propagating state forward. Recommended ranges: -1 (disabled) or 10–20 seconds.

ZERO_VELOCITY_UPDATE_THRESHOLD_MPS

Default: 0.0
Parameter Class: Tunable
Impact of Change: Low
Technical Info: Speed threshold, in m/s, below which the estimator treats the receiver as stationary and sets estimated velocity to zero. When active, near-zero velocity updates are prevented from propagating the position forward during estimator prediction.
Practical Tuning Info: Leave at 0 to disable. For receivers where stationary periods are expected, values around 0.03–0.15 m/s can reduce slow position drift caused by noisy velocity estimates. Tune higher to more aggressively enforce stationary position during stops, but avoid values near expected real motion speeds to avoid suppression of slow movement.

INIT_ACCELERATION_STD

Default: 1000.0
Parameter Class: Tunable
Impact of Change: Low
Technical Info: Initial acceleration uncertainty, in m/s², used for NEARLY_CONSTANT_ACCELERATION and LOW_EARTH_ORBIT dynamics models.
Practical Tuning Info: Only relevant for space-based NEARLY_CONSTANT_ACCELERATION and LOW_EARTH_ORBIT dynamics models. Leave at the default for almost all cases.

Clock & receiver time behavior

These parameters control how the estimator models receiver clock behavior and manages receiver-time bookkeeping. Except for ensuring that the CLOCK_TYPE is correct for the receiver, these parameters should normally be set to defaults.

CLOCK_TYPE

Default: TCXO_LOW_QUALITY
Parameter Class: Tunable
Impact of Change: Medium
Options:

  • TCXO_LOW_QUALITY
  • TCXO   [recommended for RadioLion]
  • OCXO_LOW_QUALITY
  • OCXO

Technical Info: Selects the receiver clock stability model used to propagate receiver clock bias and clock drift uncertainty between estimator updates. Lower-quality clock models allow the estimated clock state to wander more freely, while higher-quality models constrain clock evolution more tightly.
Practical Tuning Info: TCXO should be used for RadioLion. For other front-ends, match this to the receiver oscillator's short-term stability: roughly TCXO_LOW_QUALITY for clocks with Allan deviation near 5e-10 at 1 second, TCXO near 1e-10, OCXO_LOW_QUALITY near 2e-11, and OCXO near 5e-12. Use a more conservative/lower-quality model if the oscillator is poorly characterized.

ALLOW_DELTR_FIXUPS

Default: True
Parameter Class: Tunable
Impact of Change: Low
Technical Info: Enables estimator-controlled receiver-time fixups that keep receiver time within MAX_ABS_DELTR_SEC of true GNSS time. This is only a bookkeeping mechanism and does not affect time measurement quality; it only prevents large receiver time-bias values from accumulating over time.
Practical Tuning Info: Leave enabled for normal operation. Disable for external timing workflows where receiver time discontinuities, even coordinated ones, are undesirable and clock bias is allowed to grow in the estimator state.

MAX_ABS_DELTR_SEC

Default: 0.032
Parameter Class: Tunable
Impact of Change: Low
Technical Info: Maximum absolute receiver clock bias allowed before the estimator performs a receiver-time fixup. When the estimated clock bias exceeds this threshold, receiver time, observables, and channel phase/timing state are adjusted together so the receiver clock remains close to true GNSS time.
Practical Tuning Info: Leave at the default for almost all cases. Smaller values cause more frequent clock fixups; larger values reduce fixup frequency but allow receiver time to drift farther before correction. This value must be at least DELTR_FIXUP_RESOLUTION_SEC.

DELTR_FIXUP_RESOLUTION_SEC

Default: 0.0001
Parameter Class: Tunable
Impact of Change: Low
Technical Info: Time quantization used when applying receiver clock-bias fixups. Any fixup applied by the estimator is rounded to an integer multiple of this value before receiver time and channel observables are adjusted.
Practical Tuning Info: Leave at the default for almost all cases. If changed, its value must be chosen such that for any carrier frequency used, multiplying that frequency by DELTR_FIXUP_RESOLUTION_SEC results in an integer value.

Atmospheric corrections

These parameters control whether the estimator applies standard atmospheric delay corrections when modeling GNSS measurements.

USE_IONO_CORR

Default: True
Parameter Class: Tunable
Impact of Change: High
Technical Info: Enables ionospheric-delay correction in the estimator measurement model. When enabled, predicted pseudorange and related modeled quantities include the receiver's available ionospheric correction; when disabled, ionospheric delay is left unmodeled.
Practical Tuning Info: Leave enabled for nearly all use cases. Disable for simulations or cases where ionospheric correction sources are known to be inappropriate.

USE_TROPO_CORR

Default: True
Parameter Class: Tunable
Impact of Change: High
Technical Info: Enables tropospheric delay correction in the estimator measurement model.
Practical Tuning Info: Leave enabled for nearly all use cases. Disable for simulations known to lack tropospheric modeling or non-terrestrial applications.

Fixed-position operation

These parameters configure operation when the receiver position should be constrained to a known, fixed location.

CONSTRAIN_ECEF_POSITION

Default: False
Parameter Class: Tunable
Impact of Change: High
Technical Info: Constrains the receiver position estimate instead of estimating it as a free state. This is useful for fixed receivers with a surveyed or otherwise trusted position.
Practical Tuning Info: Enable only for static receivers in a known position specified by KNOWN_ECEF_POSITION, with DYNAMICS_MODEL set to STATIC. This setting can be useful for improved time estimation or measurement quality observations.

KNOWN_ECEF_POSITION

Default: [0 0 0]
Parameter Class: Tunable
Impact of Change: High, when CONSTRAIN_ECEF_POSITION = TRUE
Technical Info: ECEF receiver position, in meters, used as the fixed position when CONSTRAIN_ECEF_POSITION is enabled. The coordinates should refer to the relevant antenna phase center.
Practical Tuning Info: Set only when using a surveyed or otherwise trusted fixed receiver position.

Dual-antenna operation

These parameters configure which antenna groups contribute observations to the estimator and how multiple antenna groups are modeled.

GROUPS

Default: PRIMARY
Parameter Class: Tunable
Impact of Change: High
Technical Info: Specifies which antennas are allowed to contribute observations to the estimator.
Practical Tuning Info: Leave as PRIMARY for normal single-input/single-antenna operation. Add ALT1 if an alternate antenna is connected and its signals have been registered in the [BANK] block.

ASSUME_COINCIDENT_GROUPS

Default: False
Parameter Class: Tunable
Impact of Change: Medium
Technical Info: Controls whether signal groups are estimated as separate receiver positions or as one common receiver state.
Practical Tuning Info: Only relevant in dual-antenna setups. Set true to treat all antennas specified in GROUPS as coincident and estimate only a single, common position (and velocity, acceleration, etc.). The final position estimate is at the midpoint of the two antennas. Set false to estimate independent positions for each antenna.

INTERCHANNEL_BIAS_STD

Default: 0.0
Parameter Class: Tunable
Impact of Change: Medium
Technical Info: Controls whether two antenna sources are assumed to share one receiver clock or use separate clocks. A value of 0 uses a common receiver clock bias for both antennas, while positive values allow clock biases to drift relative to each other.
Practical Tuning Info: Only applicable to multi-antenna operation. Leave at 0 for multi-antenna operation with RadioLion. Use a small positive value only for front-ends in which multiple antennas do not share a common clock, approximately equal to the expected drift between the two clocks, in seconds of drift per second.