CogniPilot

MODELICA LIBRARY · ENGINEERING REFERENCE

block

Tests.VisualLandmarkReplay

RGB-D observation and Lie injection qualification

Public declarations

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

RoleNameTypeDimensions / attributes / defaultDescription
inputquaternionWorldBodyReal[4] = {1.0, 0.0, 0.0, 0.0}
inputpositionWorld_mReal[3] = zeros(3)
inputlandmarkWorld_mReal[3] = {0.0, 0.0, 5.0}
inputrotationBodyCameraReal[3, 3] = 1.0 * identity(3)
inputcameraPositionBody_mReal[3] = zeros(3)
inputintrinsicsReal[4] = {400.0, 400.0, 320.0, 240.0}
inputcorrectionReal[15] = zeros(15)
outputexpectedReal[3]
outputnavigationJacobianReal[3, 15]
outputlandmarkJacobianReal[3, 3]
outputvalidBoolean

Modelica declarations and implementation

Show parameters, interfaces and source

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

block VisualLandmarkReplay "RGB-D observation and Lie injection qualification"
  input Real quaternionWorldBody[4] = {1.0, 0.0, 0.0, 0.0};
  input Real positionWorld_m[3] = zeros(3);
  input Real landmarkWorld_m[3] = {0.0, 0.0, 5.0};
  input Real rotationBodyCamera[3, 3] = 1.0 * identity(3);
  input Real cameraPositionBody_m[3] = zeros(3);
  input Real intrinsics[4] = {400.0, 400.0, 320.0, 240.0};
  input Real correction[15] = zeros(15);
  output Real expected[3];
  output Real navigationJacobian[3, 15];
  output Real landmarkJacobian[3, 3];
  output Boolean valid;
protected
  Estimation.StrapdownINS.ESKF.NominalState nominal(
    positionWorldEnu_m=positionWorld_m, velocityWorldEnu_m_s=zeros(3),
    quaternionWorldBody=quaternionWorldBody,
    gyroscopeBiasBodyFlu_rad_s=zeros(3), accelerometerBiasBodyFlu_m_s2=zeros(3));
  Estimation.StrapdownINS.ESKF.NominalState corrected;
algorithm
  when sample(0.0, 0.01) then
    corrected := Estimation.StrapdownINS.ESKF.inject(nominal, correction);
    (expected, navigationJacobian, landmarkJacobian, valid) :=
      Estimation.StrapdownINS.ESKF.Visual.linearizeLandmark(corrected,
        landmarkWorld_m, rotationBodyCamera, cameraPositionBody_m, intrinsics);
  end when;
end VisualLandmarkReplay;