CogniPilot

MODELICA LIBRARY · ENGINEERING REFERENCE

record

Estimation.StrapdownINS.ESKF.Tuning

Fixed filter tuning held constant across every estimator tick

Public declarations

Explicit source declarations; dimensions, modifications and defaults are shown as written, without evaluation.

RoleNameTypeDimensions / attributes / defaultDescription
fieldinitialStateNominalStateNominal state used when no aiding source can seed initialization
fieldinitialVariancesEstimation.StrapdownINS.InitialVariances
fieldprocessNoiseEstimation.StrapdownINS.ProcessNoise
fieldvarianceLimitsVarianceLimits
fieldinnovationGateRealPer-degree-of-freedom NIS gate; non-positive disables
fieldlocalMagneticFieldWorldEnu_TReal[3]
fielduseEquivariantMagnetometerBoolean= false
fielduseGeometricAlignmentBoolean= false
fieldbarometerBias_mReal
fieldbarometerBiasVariance_m2Real
fielduseBarometerBiasConsiderBoolean= false
fielduseJointBarometerBiasBoolean= false
fieldbarometerBiasProcessNoise_m2_sReal= 0.0
fieldmaximumAidingDelay_sReal
fieldminimumOpticalFlowQualityReal
fieldminimumOpticalFlowGroundDistance_mReal
fieldcovarianceInflateWindow_sRealWall-clock time the anchor source has been unable to move the state after which the position and velocity covariance begins ramping toward the mission envelope
fieldcovarianceInflateTimeConstant_sReale-folding time of that ramp; bounds how far one tick can widen the gate, and so how far one correction can move the state
fieldaidingDivergentWindow_sRealWall-clock time after which the anchor is reported divergent; a status signal only, never a withdrawal of estimate.valid
fieldaidingStaleTimeout_sRealHow long a source may go without a fresh sample before it stops counting as available for anchor selection. Bridges pulsed sensor wiring, where `valid` is asserted only on the ticks that carry a fix, and demotes a source that is permanently valid but never fresh
fieldaidingReseedWindow_sRealWall-clock time the anchor source has been unable to move the state after which, on the next fresh finite anchor sample, the estimator re-seeds position (and velocity from a GPS sample that reports it) from that sample and restores the position and velocity covariance to the initial variances. Non-positive disables re-seeding; when enabled it must exceed aidingDivergentWindow_s, and any unusable value disables only the re-seed while leaving the rest of the ladder in force
fieldinitialAlignmentWindow_sRealUnbroken quasi-static time required before the filter aligns its initial attitude from the IMU; non-positive aligns on the first usable sample
fieldinitialAlignmentTimeout_sRealTime with a usable IMU after which a pending alignment is taken on the current sample even though the vehicle never held still for the window; non-positive waits indefinitely
fieldquietSpecificForceTolerance_m_s2RealHow far the specific-force magnitude may differ from gravity while the vehicle still counts as quasi-static
fieldquietAngularRateLimit_rad_sRealAngular-rate magnitude below which the vehicle counts as quasi-static
fieldquietFilterTimeConstant_sRealTime constant of the first-order low-pass the quasi-static test and the accelerometer alignment read the IMU through, so a noisy sensor still shows a resting vehicle; non-positive reads the raw samples
fieldpseudoPositionVariance_m2RealPer-axis variance of the synthetic hold-position measurement fused while no anchor source is live; non-positive disables it
fieldzeroVelocityVariance_m2_s2RealPer-axis variance of the synthetic zero-velocity measurement fused while quasi-static and unaided; non-positive disables it
fieldstationaryVelocityVariance_m2_s2Real= 0.01
fielduseSemiDirectBiasBoolean= false
fielduseStationaryImuBoolean= false
fielduseSquareRootCovarianceBoolean= false

Modelica declarations and implementation

Show parameters, interfaces and source

Parameters, inputs, outputs, defaults and equations from the source file.

record Tuning
  "Fixed filter tuning held constant across every estimator tick"
  NominalState initialState
    "Nominal state used when no aiding source can seed initialization";
  Estimation.StrapdownINS.InitialVariances initialVariances;
  Estimation.StrapdownINS.ProcessNoise processNoise;
  VarianceLimits varianceLimits;
  Real innovationGate
    "Per-degree-of-freedom NIS gate; non-positive disables";
  Real localMagneticFieldWorldEnu_T[3];
  Boolean useEquivariantMagnetometer = false;
  Boolean useGeometricAlignment = false;
  Real barometerBias_m;
  Real barometerBiasVariance_m2;
  Boolean useBarometerBiasConsider = false;
  Boolean useJointBarometerBias = false;
  Real barometerBiasProcessNoise_m2_s = 0.0;
  Real maximumAidingDelay_s;
  Real minimumOpticalFlowQuality;
  Real minimumOpticalFlowGroundDistance_m;
  Real covarianceInflateWindow_s
    "Wall-clock time the anchor source has been unable to move the state
     after which the position and velocity covariance begins ramping
     toward the mission envelope";
  Real covarianceInflateTimeConstant_s
    "e-folding time of that ramp; bounds how far one tick can widen the
     gate, and so how far one correction can move the state";
  Real aidingDivergentWindow_s
    "Wall-clock time after which the anchor is reported divergent; a
     status signal only, never a withdrawal of estimate.valid";
  Real aidingStaleTimeout_s
    "How long a source may go without a fresh sample before it stops
     counting as available for anchor selection. Bridges pulsed sensor
     wiring, where `valid` is asserted only on the ticks that carry a
     fix, and demotes a source that is permanently valid but never fresh";
  Real aidingReseedWindow_s
    "Wall-clock time the anchor source has been unable to move the state
     after which, on the next fresh finite anchor sample, the estimator
     re-seeds position (and velocity from a GPS sample that reports it)
     from that sample and restores the position and velocity covariance
     to the initial variances. Non-positive disables re-seeding; when
     enabled it must exceed aidingDivergentWindow_s, and any unusable
     value disables only the re-seed while leaving the rest of the ladder
     in force";
  Real initialAlignmentWindow_s
    "Unbroken quasi-static time required before the filter aligns its
     initial attitude from the IMU; non-positive aligns on the first usable
     sample";
  Real initialAlignmentTimeout_s
    "Time with a usable IMU after which a pending alignment is taken on the
     current sample even though the vehicle never held still for the
     window; non-positive waits indefinitely";
  Real quietSpecificForceTolerance_m_s2
    "How far the specific-force magnitude may differ from gravity while the
     vehicle still counts as quasi-static";
  Real quietAngularRateLimit_rad_s
    "Angular-rate magnitude below which the vehicle counts as quasi-static";
  Real quietFilterTimeConstant_s
    "Time constant of the first-order low-pass the quasi-static test and the
     accelerometer alignment read the IMU through, so a noisy sensor still
     shows a resting vehicle; non-positive reads the raw samples";
  Real pseudoPositionVariance_m2
    "Per-axis variance of the synthetic hold-position measurement fused while
     no anchor source is live; non-positive disables it";
  Real zeroVelocityVariance_m2_s2
    "Per-axis variance of the synthetic zero-velocity measurement fused while
     quasi-static and unaided; non-positive disables it";
  Real stationaryVelocityVariance_m2_s2 = 0.01;
  Boolean useSemiDirectBias = false;
  Boolean useStationaryImu = false;
  Boolean useSquareRootCovariance = false;
end Tuning;