CogniPilot

MODELICA LIBRARY · ENGINEERING REFERENCE

function

Estimation.FusionHorizon.predictPose

Advance a packed pose with a bias-corrected buffered delta

Public declarations

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

RoleNameTypeDimensions / attributes / defaultDescription
inputposeVectorReal[10]
inputdeltaRowReal[DeltaLength]
inputgyroscopeBiasMove_rad_sReal[3]
inputaccelerometerBiasMove_m_s2Real[3]
inputgravityWorldEnu_m_s2Real[3]
inputcorrectBiasBoolean= true
outputpredictedVectorReal[10]

Modelica declarations and implementation

Show parameters, interfaces and source

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

function predictPose
  "Advance a packed pose with a bias-corrected buffered delta"
  input Real poseVector[10];
  input Real deltaRow[DeltaLength];
  input Real gyroscopeBiasMove_rad_s[3];
  input Real accelerometerBiasMove_m_s2[3];
  input Real gravityWorldEnu_m_s2[3];
  input Boolean correctBias = true;
  output Real predictedVector[10];
protected
  Estimation.FusionHorizon.Delta delta;
  Estimation.FusionHorizon.Delta corrected;
  Estimation.FusionHorizon.Pose pose;
  Estimation.FusionHorizon.Pose predicted;
algorithm
  delta := Estimation.FusionHorizon.unpackDelta(deltaRow);
  corrected := if correctBias then Estimation.FusionHorizon.rebiasDelta(
    delta, gyroscopeBiasMove_rad_s, accelerometerBiasMove_m_s2) else delta;
  pose := Estimation.FusionHorizon.Pose(
    positionWorldEnu_m=poseVector[1:3],
    velocityWorldEnu_m_s=poseVector[4:6],
    quaternionWorldBody=poseVector[7:10]);
  predicted := Estimation.FusionHorizon.composePose(pose, corrected, gravityWorldEnu_m_s2);
  predictedVector := cat(1, predicted.positionWorldEnu_m,
    predicted.velocityWorldEnu_m_s, predicted.quaternionWorldBody);
  annotation(Inline = false);
end predictPose;