CogniPilot

MODELICA LIBRARY · ENGINEERING REFERENCE

Estimation/MocapExternalOdometryErrorState/inject.mo

Download original .moGitHub source

Documentation: Estimation.MocapExternalOdometryErrorState.inject

within Estimation.MocapExternalOdometryErrorState;
function inject "Inject a tangent correction into the nominal state"
  input Estimation.MocapExternalOdometryErrorState.NominalState state;
  input TangentVector correction
    "{attitude error, velocity error, position error, angular velocity error}";
  output Estimation.MocapExternalOdometryErrorState.NominalState corrected;
protected
  Real attitudeDelta[4];
algorithm
  attitudeDelta := LieGroups.SO3.Quat.exp_map(correction[1:3]);
  corrected.attitude := LieGroups.SO3.Quat.normalize(
    LieGroups.SO3.Quat.product(state.attitude, attitudeDelta));
  corrected.velocity := state.velocity + correction[4:6];
  corrected.position := state.position + correction[7:9];
  corrected.angularVelocity := state.angularVelocity + correction[10:12];
end inject;