Skip to content
Snippets Groups Projects
Commit 006d3411 authored by Rainer Kartmann's avatar Rainer Kartmann
Browse files

Fix decay and its settings, stream confidences to debug observer

parent 6cca2a4e
No related branches found
No related tags found
1 merge request!171Periodic merge of armem/dev into master
...@@ -130,7 +130,6 @@ namespace armarx::armem::server::obj ...@@ -130,7 +130,6 @@ namespace armarx::armem::server::obj
{ {
attachmentSegment.init(); attachmentSegment.init();
}); });
} }
void ObjectMemory::onConnectComponent() void ObjectMemory::onConnectComponent()
...@@ -146,6 +145,9 @@ namespace armarx::armem::server::obj ...@@ -146,6 +145,9 @@ namespace armarx::armem::server::obj
getProxyFromProperty(kinematicUnitObserver, "cmp.KinematicUnitObserverName", false, "", false); getProxyFromProperty(kinematicUnitObserver, "cmp.KinematicUnitObserverName", false, "", false);
// Create first to use the original values.
createRemoteGuiTab();
instance::SegmentAdapter::connect( instance::SegmentAdapter::connect(
robotStateComponent, robotStateComponent,
robot, robot,
...@@ -169,9 +171,7 @@ namespace armarx::armem::server::obj ...@@ -169,9 +171,7 @@ namespace armarx::armem::server::obj
ArVizComponentPluginUser::getArvizClient() ArVizComponentPluginUser::getArvizClient()
); );
createRemoteGuiTab();
RemoteGui_startRunningTask(); RemoteGui_startRunningTask();
} }
void ObjectMemory::onDisconnectComponent() void ObjectMemory::onDisconnectComponent()
......
...@@ -47,7 +47,7 @@ namespace armarx::armem::server::obj::instance ...@@ -47,7 +47,7 @@ namespace armarx::armem::server::obj::instance
float Decay::calculateConfidence(IceUtil::Time localization, IceUtil::Time now) const float Decay::calculateConfidence(IceUtil::Time localization, IceUtil::Time now) const
{ {
float duration = (now - localization).toSeconds(); const float duration = static_cast<float>((now - localization).toSecondsDouble());
if (duration < delaySeconds) if (duration < delaySeconds)
{ {
return maxConfidence; return maxConfidence;
...@@ -88,17 +88,17 @@ namespace armarx::armem::server::obj::instance ...@@ -88,17 +88,17 @@ namespace armarx::armem::server::obj::instance
} }
{ {
maxConfidence.setRange(0, 1); maxConfidence.setRange(0, 1);
maxConfidence.setSteps(20); maxConfidence.setSteps(100);
maxConfidence.setValue(decay.maxConfidence); maxConfidence.setValue(decay.maxConfidence);
} }
{ {
minConfidence.setRange(0, 1); minConfidence.setRange(0, 1);
minConfidence.setSteps(20); minConfidence.setSteps(100);
minConfidence.setValue(decay.minConfidence); minConfidence.setValue(decay.minConfidence);
} }
{ {
removeObjectsBelowConfidence.setRange(0, 1); removeObjectsBelowConfidence.setRange(0, 1);
removeObjectsBelowConfidence.setSteps(20); removeObjectsBelowConfidence.setSteps(100);
removeObjectsBelowConfidence.setValue(decay.removeObjectsBelowConfidence); removeObjectsBelowConfidence.setValue(decay.removeObjectsBelowConfidence);
} }
...@@ -128,6 +128,7 @@ namespace armarx::armem::server::obj::instance ...@@ -128,6 +128,7 @@ namespace armarx::armem::server::obj::instance
decay.durationSeconds = durationSeconds.getValue(); decay.durationSeconds = durationSeconds.getValue();
decay.maxConfidence = maxConfidence.getValue(); decay.maxConfidence = maxConfidence.getValue();
decay.minConfidence = minConfidence.getValue(); decay.minConfidence = minConfidence.getValue();
decay.removeObjectsBelowConfidence = removeObjectsBelowConfidence.getValue();
} }
} }
...@@ -406,6 +406,8 @@ namespace armarx::armem::server::obj::instance ...@@ -406,6 +406,8 @@ namespace armarx::armem::server::obj::instance
void SegmentAdapter::visualizeRun() void SegmentAdapter::visualizeRun()
{ {
ObjectFinder objectFinder;
CycleUtil cycle(static_cast<int>(1000 / visu.frequencyHz)); CycleUtil cycle(static_cast<int>(1000 / visu.frequencyHz));
while (visu.updateTask && !visu.updateTask->isStopped()) while (visu.updateTask && !visu.updateTask->isStopped())
{ {
...@@ -414,33 +416,45 @@ namespace armarx::armem::server::obj::instance ...@@ -414,33 +416,45 @@ namespace armarx::armem::server::obj::instance
if (visu.enabled) if (visu.enabled)
{ {
TIMING_START(Visu); TIMING_START(tVisu);
objpose::ObjectPoseSeq objectPoses; objpose::ObjectPoseSeq objectPoses;
ObjectFinder objectFinder;
visu.minConfidence = -1; visu.minConfidence = -1;
{ {
std::scoped_lock lock(memoryMutex); std::scoped_lock lock(memoryMutex);
const IceUtil::Time now = TimeUtil::GetTime(); const IceUtil::Time now = TimeUtil::GetTime();
// Also include decayed objects in result
// Store original setting.
const float minConf = segment.decay.removeObjectsBelowConfidence;
segment.decay.removeObjectsBelowConfidence = -1;
// Get result.
objectPoses = segment.getObjectPoses(now); objectPoses = segment.getObjectPoses(now);
// Restore original setting.
segment.decay.removeObjectsBelowConfidence = minConf;
objectFinder = segment.objectFinder; objectFinder = segment.objectFinder;
if (segment.decay.enabled) if (segment.decay.enabled)
{ {
visu.minConfidence = segment.decay.removeObjectsBelowConfidence; visu.minConfidence = segment.decay.removeObjectsBelowConfidence;
} }
} }
const std::vector<viz::Layer> layers = visu.visualizeCommit(objectPoses, objectFinder); const std::vector<viz::Layer> layers = visu.visualizeCommit(objectPoses, objectFinder);
arviz.commit(layers); arviz.commit(layers);
TIMING_END_STREAM(Visu, ARMARX_VERBOSE); TIMING_END_STREAM(tVisu, ARMARX_VERBOSE);
if (debugObserver) if (debugObserver)
{ {
debugObserver->setDebugChannel(getName(), armarx::StringVariantBaseMap debugValues;
debugValues["t Visualize [ms]"] = new Variant(tVisu.toMilliSecondsDouble());
for (const auto& [id, pose] : objectPoses)
{ {
{ "t Visualize [ms]", new Variant(Visu.toMilliSecondsDouble()) }, debugValues["confidence(" + id.str() + ")"] = new Variant(pose.confidence);
}); }
debugObserver->setDebugChannel(getName(), debugValues);
} }
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment