function
SLAM.Localization.RGBDLocalizationCatalog.ValidHeader
Public declarations
Explicit source declarations; dimensions, modifications and defaults are shown as written, without evaluation.
| Role | Name | Type | Dimensions / attributes / default | Description |
|---|---|---|---|---|
| input | state | State | | |
| output | valid | Boolean | |
Modelica declarations and implementation
Show parameters, interfaces and source
Parameters, inputs, outputs, defaults and equations from the source file.
function ValidHeader
input State state;
output Boolean valid;
algorithm
valid := state.generation >= 1 and state.generation <= identifierLimit
and state.sourceRevision >= 1 and state.sourceRevision <= identifierLimit
and state.steps >= 0 and state.steps < identifierLimit
and state.predictionTime >= 0.0 and state.predictionTime <= 1e9
and state.lastProcessedImageEpoch >= -1 and state.lastProcessedImageEpoch <= identifierLimit
and state.lastProcessedImageTime >= 0.0 and state.lastProcessedImageTime <= state.predictionTime
and RGBDKeyframes.ValidHeader(state.catalog)
and state.catalog.generation == state.generation and state.graph.generation == state.generation
and state.map.generation == state.generation
and state.graph.revision >= 0 and state.graph.revision < identifierLimit
and state.graph.lastCaptureId == state.catalog.nextId-1
and state.graph.nextEdgeId >= 1 and state.graph.nextEdgeId <= identifierLimit
and state.map.catalogRevision >= 0 and state.map.catalogRevision <= state.graph.revision
and state.catalog.lastEpoch <= state.lastProcessedImageEpoch
and state.map.imageEpoch >= -1 and state.map.imageEpoch <= state.lastProcessedImageEpoch
and state.catalog.lastTime <= state.predictionTime and state.map.imageTime >= 0.0 and state.map.imageTime <= state.predictionTime
and state.map.frame >= 0.0 and state.map.frame < identifierLimit
and SLAMExactRealEqual(state.map.frame,floor(state.map.frame))
and abs(state.map.worldFrame) <= 1e9
and state.referenceBirth.generation == state.generation;
if state.initialized then
valid := valid and state.steps >= 1;
else
valid := valid and state.steps == 0 and SLAMExactRealEqual(state.predictionTime,0.0)
and state.lastProcessedImageEpoch == -1 and state.catalog.nextId == 1
and state.graph.revision == 0 and SLAMExactRealEqual(state.map.frame,0.0)
and SLAMExactRealEqual(state.estimator.referenceAvailable,0.0)
and SLAMExactRealEqual(state.estimator.lastUsedEpoch,-1.0);
end if;
if SLAMExactRealEqual(state.estimator.referenceAvailable,1.0) then
valid := valid and state.referenceBirth.sequence >= 1 and state.referenceBirth.sequence <= state.steps
and state.referenceBirth.epoch >= 0 and state.referenceBirth.epoch <= state.lastProcessedImageEpoch
and SLAMExactRealEqual(state.estimator.referenceEpoch,state.referenceBirth.epoch)
and state.referenceBirth.catalogId >= 0 and state.referenceBirth.catalogId < state.catalog.nextId;
else
valid := valid and state.referenceBirth.sequence == 0 and state.referenceBirth.epoch == -1
and state.referenceBirth.catalogId == 0;
end if;
end ValidHeader;