CogniPilot

MODELICA LIBRARY · ENGINEERING REFERENCE

Estimation/MocapExternalOdometryErrorState/initialize.mo

Download original .moGitHub source

Documentation: Estimation.MocapExternalOdometryErrorState.initialize

within Estimation.MocapExternalOdometryErrorState;
function initialize "Initialize the geometric error-state EKF from a pose measurement"
  input Real position[3] "Initial position in world ENU coordinates [m]";
  input Real attitude[4] "Initial scalar-first Hamilton quaternion";
  input Estimation.MocapExternalOdometryErrorState.InitialVariances variances;
  output Estimation.MocapExternalOdometryErrorState.State state;
algorithm
  state.attitude := LieGroups.SO3.Quat.normalize(attitude);
  state.velocity := zeros(3);
  state.position := position;
  state.angularVelocity := zeros(3);
  state.covariance := zeros(
    Estimation.MocapExternalOdometryErrorState.TangentLength,
    Estimation.MocapExternalOdometryErrorState.TangentLength);
  for axis in 1:3 loop
    state.covariance[axis, axis] := variances.attitude;
    state.covariance[axis + 3, axis + 3] := variances.velocity;
    state.covariance[axis + 6, axis + 6] := variances.position;
    state.covariance[axis + 9, axis + 9] := variances.angularVelocity;
  end for;
end initialize;