CogniPilot

MODELICA LIBRARY · ENGINEERING REFERENCE

Estimation/StrapdownINS/ESKF/holdCovariance.mo

Download original .moGitHub source

Documentation: Estimation.StrapdownINS.ESKF.holdCovariance

within Estimation.StrapdownINS.ESKF;

function holdCovariance
  "Grow covariance by one interval of process noise with the state held"
  input Covariance covariance;
  input Real dt(unit = "s");
  input Estimation.StrapdownINS.ProcessNoise processNoise;
  output Covariance grown;
protected
  Real A[TangentLength, TangentLength];
  Real G[TangentLength, ProcessNoiseLength];
  Real transition[TangentLength, TangentLength];
  Estimation.StrapdownINS.ProcessNoiseCovariance continuousNoise;
  Covariance discreteNoise;
algorithm
  A := continuousTransition(zeros(3), zeros(3));
  G := noiseInputMatrix();
  transition := discreteTransition(A, dt);
  continuousNoise := processNoiseMatrix(processNoise);
  discreteNoise := discreteProcessCovariance(A, G, continuousNoise, dt);
  grown := LinearAlgebra.symmetrize(
    LinearAlgebra.transformCovariance(transition, covariance) + discreteNoise);
end holdCovariance;