function
SLAM.LoopClosure.RGBDCatalogLoopVerification.ProposeCapture
Public declarations
Explicit source declarations; dimensions, modifications and defaults are shown as written, without evaluation.
| Role | Name | Type | Dimensions / attributes / default | Description |
|---|---|---|---|---|
| input | catalog | RGBDKeyframes.Catalog | | |
| input | measurement | RGBDKeyframes.Frame | | |
| input | vocabulary | Real | [RGBDKeyframes.wordCapacity,RGBDKeyframes.descriptorSize] | |
| input | vocabularyEnabled | Real | [RGBDKeyframes.wordCapacity] | |
| input | requested | Boolean | | |
| input | seeds | Integer | [RGBDKeyframeRetrieval.proposalCapacity] | |
| input | maximumWordDistanceSquared | Real | = 0.8 | |
| input | minimumAssignments | Integer | = 8 | |
| input | minimumSimilarity | Real | = 0.35 | |
| input | minimumAge | Real | = 5.0 | |
| input | trials | Integer | = 96 | |
| input | refinements | Integer | = 4 | |
| input | minimumInliers | Integer | = 12 | |
| input | minimumFraction | Real | = 0.5 | |
| input | inlierDistance | Real | = 0.08 | |
| input | maximumRms | Real | = 0.03 | |
| input | descriptorRatio | Real | = 0.8 | |
| input | maximumDescriptorDistance | Real | = 0.8 | |
| input | coordinateLimit | Real | = 100.0 | |
| input | rankTolerance | Real | = 1e-8 | |
| input | localizationSigma | Real | = 0.5 | |
| input | depthInflation | Real | = 1.0 | |
| input | minimumPivot | Real | = 1e-10 | |
| output | result | Batch | | |
| input | calibratedResiduals | Boolean | = true | |
| input | maximumNormalizedSquared | Real | = 9.0 | |
| input | poseConsistentLoops | Boolean | = false | |
| input | maximumPoseInnovation | Real | = 2.0 | |
| input | poseConsistencySquared | Real | = 9.0 |
Modelica declarations and implementation
Show parameters, interfaces and source
Parameters, inputs, outputs, defaults and equations from the source file.
function ProposeCapture
input RGBDKeyframes.Catalog catalog;
input RGBDKeyframes.Frame measurement;
input Real vocabulary[RGBDKeyframes.wordCapacity,RGBDKeyframes.descriptorSize];
input Real vocabularyEnabled[RGBDKeyframes.wordCapacity];
input Boolean requested;
input Integer seeds[RGBDKeyframeRetrieval.proposalCapacity];
input Real maximumWordDistanceSquared = 0.8; input Integer minimumAssignments = 8;
input Real minimumSimilarity = 0.35; input Real minimumAge = 5.0;
input Integer trials = 96; input Integer refinements = 4;
input Integer minimumInliers = 12; input Real minimumFraction = 0.5;
input Real inlierDistance = 0.08; input Real maximumRms = 0.03;
input Real descriptorRatio = 0.8; input Real maximumDescriptorDistance = 0.8;
input Real coordinateLimit = 100.0; input Real rankTolerance = 1e-8;
input Real localizationSigma = 0.5; input Real depthInflation = 1.0; input Real minimumPivot = 1e-10;
output Batch result;
input Boolean calibratedResiduals = true;
input Real maximumNormalizedSquared = 9.0;
input Boolean poseConsistentLoops = false;
input Real maximumPoseInnovation = 2.0;
input Real poseConsistencySquared = 9.0;
algorithm
(result.prepared,result.retrievalAccepted,result.retrievalRejectionReason,result.wordIndex,result.candidateId,result.candidateSlot,result.candidateScore,
result.candidateCount,result.assignmentCount) := RGBDKeyframeRetrieval.PrepareCapture(catalog,measurement,
vocabulary,vocabularyEnabled,requested,maximumWordDistanceSquared,minimumAssignments,minimumSimilarity,minimumAge);
result.verifiedCount := 0;
for rank in 1:RGBDKeyframeRetrieval.proposalCapacity loop
result.proposals[rank] := VerifyCandidate(catalog,result.prepared,result.candidateId[rank],result.candidateSlot[rank],result.candidateScore[rank],
result.retrievalAccepted and rank <= result.candidateCount,seeds[rank],trials,refinements,minimumInliers,
minimumFraction,inlierDistance,maximumRms,minimumAge,minimumSimilarity,descriptorRatio,
maximumDescriptorDistance,coordinateLimit,rankTolerance,localizationSigma,depthInflation,minimumPivot,
calibratedResiduals=calibratedResiduals,maximumNormalizedSquared=maximumNormalizedSquared,
poseConsistentLoops=poseConsistentLoops,maximumPoseInnovation=maximumPoseInnovation,poseConsistencySquared=poseConsistencySquared);
result.nextSeeds[rank] := result.proposals[rank].nextSeed;
result.verifiedCount := result.verifiedCount+(if result.proposals[rank].verified then 1 else 0);
end for;
end ProposeCapture;