function
SLAM.LoopClosure.RGBDKeyframes.Empty
Public declarations
Explicit source declarations; dimensions, modifications and defaults are shown as written, without evaluation.
| Role | Name | Type | Dimensions / attributes / default | Description |
|---|---|---|---|---|
| input | generation | Integer | = 1 | |
| input | vocabularyVersion | Integer | = 1 | |
| output | state | Catalog | |
Modelica declarations and implementation
Show parameters, interfaces and source
Parameters, inputs, outputs, defaults and equations from the source file.
function Empty
input Integer generation = 1;
input Integer vocabularyVersion = 1;
output Catalog state;
protected
Frame emptyFrame;
algorithm
state.generation := generation;
state.vocabularyVersion := vocabularyVersion;
state.nextId := 1;
state.nextSlot := 1;
state.lastEpoch := -1;
state.lastTime := 0.0;
// Copy one canonical frame into each array slice. This initializes every
// field once, including inactive payload, without a separate catalog-sized
// zero initializer followed by overwriting each frame's metadata.
emptyFrame := EmptyFrame();
for slot in 1:keyframeCapacity loop
state.occupied[slot] := false;
state.generations[slot] := emptyFrame.generation;
state.ids[slot] := emptyFrame.id;
state.epochs[slot] := emptyFrame.epoch;
state.imageTimes[slot] := emptyFrame.imageTime;
state.counts[slot] := emptyFrame.count;
state.featureEnabled[slot,:] := emptyFrame.enabled;
state.descriptors[slot,:,:] := emptyFrame.descriptor;
state.opticalPoints[slot,:,:] := emptyFrame.opticalPoint;
state.pixelCoordinates[slot,:,:] := emptyFrame.pixels;
state.rgbSizes[slot,:] := emptyFrame.rgbSize;
state.depthSizes[slot,:] := emptyFrame.depthSize;
state.rgbCalibrations[slot,:] := emptyFrame.rgbCalibration;
state.depthCalibrations[slot,:] := emptyFrame.depthCalibration;
state.opticalToBodyRotations[slot,:,:] := emptyFrame.opticalToBody;
state.cameraOriginsBody[slot,:] := emptyFrame.cameraOriginBody;
state.disparityNoises[slot] := emptyFrame.disparityNoise;
state.noiseReferenceFocals[slot] := emptyFrame.noiseReferenceFx;
state.baselines[slot] := emptyFrame.baseline;
state.bodyRotations[slot,:,:] := emptyFrame.bodyRotation;
state.bodyPositions[slot,:] := emptyFrame.bodyPosition;
state.poseCovariances[slot,:,:] := emptyFrame.poseCovariance;
state.vocabularyVersions[slot] := emptyFrame.vocabularyVersion;
state.histograms[slot,:] := emptyFrame.histogram;
end for;
end Empty;