CogniPilot

MODELICA LIBRARY · ENGINEERING REFERENCE

model

SLAM.Localization.RGBDVisualRelativeObservation

Base classes

RGBDVisualObservation

Follow base classes for inherited declarations; this page lists explicit declarations only.

Public declarations

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

RoleNameTypeDimensions / attributes / defaultDescription
inputreferenceRgbFocalReal[2]
inputreferenceNoiseReferenceFxReal
parameterlocalizationSigmaReal= 0.5
parameterdepthInflationReal= 1.0
parameteruncertaintyCoordinateLimitReal= 100.0
parameteruncertaintyMinimumPivotReal= 1e-10
outputcurrentFromReferenceReal[3,3]
outputcurrentFromReferenceTranslationReal[3]
outputrelativeCovarianceReal[6,6]Optical translation and optical left-angle perturbation; use with Schmidt update
outputconditionalObservationCovarianceReal[6,6]Conditional on retained reference pose; not independent absolute noise
outputrelativeValidReal
outputuncertaintyRejectionReasonReal
outputuncertaintyValidCountReal
outputuncertaintyInvalidCountReal

Modelica declarations and implementation

Show parameters, interfaces and source

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

model RGBDVisualRelativeObservation
  import RGBDRegistrationSandwich = SLAM.Localization.RGBDRegistrationSandwich;
  import RGBDVisualObservation = SLAM.Localization.RGBDVisualObservation;

  extends RGBDVisualObservation;
  // Retain these with the reference image rather than substituting the current
  // image calibration. The noise model assumes a common stereo baseline and
  // disparity sigma for the pair; changing those requires a new noise model.
  input Real referenceRgbFocal[2];
  input Real referenceNoiseReferenceFx;
  parameter Real localizationSigma = 0.5;
  parameter Real depthInflation = 1.0;
  parameter Real uncertaintyCoordinateLimit = 100.0;
  parameter Real uncertaintyMinimumPivot = 1e-10;
  output Real currentFromReference[3,3];
  output Real currentFromReferenceTranslation[3];
  output Real relativeCovariance[6,6]
    "Optical translation and optical left-angle perturbation; use with Schmidt update";
  output Real conditionalObservationCovariance[6,6]
    "Conditional on retained reference pose; not independent absolute noise";
  output Real relativeValid;
  output Real uncertaintyRejectionReason;
  output Real uncertaintyValidCount;
  output Real uncertaintyInvalidCount;
protected
  // Registration and uncertainty consume exactly the same complete sparse
  // pair domain. matching.count is not a prefix extent.
  Real uncertaintyValid;
  Real normalMatrix[6,6];
  Real noiseMatrix[6,6];
  Real observationJacobian[6,6];
  Real minimumScaledPivot;
equation
  // Call the existing function so per-frame calibrated noise remains a runtime
  // input; it must not initialize a parameter from a varying input binding.
  (uncertaintyValid,uncertaintyRejectionReason,uncertaintyValidCount,
    uncertaintyInvalidCount,relativeCovariance,conditionalObservationCovariance,
    normalMatrix,noiseMatrix,observationJacobian,minimumScaledPivot) =
    RGBDRegistrationSandwich(matching.sourcePoint,matching.targetPoint,
      matching.pairEnabled,featureCapacity,valid,registration.rotation,
      registration.translation,referenceBodyRotation,opticalToBody,
      cameraOriginBody,referenceRgbFocal,{rgbCalibration[1],rgbCalibration[2]},
      referenceNoiseReferenceFx,noiseReferenceFx,baseline,localizationSigma,
      disparityNoise,depthInflation,uncertaintyCoordinateLimit,uncertaintyMinimumPivot);
  currentFromReference = registration.rotation;
  currentFromReferenceTranslation = registration.translation;
  relativeValid = if noEvent(valid > 0.5 and uncertaintyValid > 0.5) then 1.0 else 0.0;
end RGBDVisualRelativeObservation;