diff --git a/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp b/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp index a7640731b27231b276fa1c2fb92c284f0b990a18..7e06319069204052b6988c1bb7bb94af3e259495 100644 --- a/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp +++ b/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp @@ -690,7 +690,11 @@ namespace armarx { object.fileByObjectFinder(id); } - if (visu.alpha < 1) + if (visu.alphaByConfidence && objectPose.confidence < 1.0f) + { + object.overrideColor(simox::Color::white().with_alpha(objectPose.confidence)); + } + else if (visu.alpha < 1) { object.overrideColor(simox::Color::white().with_alpha(visu.alpha)); } @@ -831,6 +835,7 @@ namespace armarx tab.visu.inGlobalFrame.setValue(visu.inGlobalFrame); tab.visu.alpha.setRange(0, 1.0); tab.visu.alpha.setValue(visu.alpha); + tab.visu.alphaByConfidence.setValue(visu.alphaByConfidence); tab.visu.oobbs.setValue(visu.oobbs); tab.visu.objectFrames.setValue(visu.objectFrames); { @@ -849,6 +854,8 @@ namespace armarx row++; grid.add(Label("Alpha"), {row, 0}).add(tab.visu.alpha, {row, 1}, {1, 3}); row++; + grid.add(Label("Alpha By Confidence"), {row, 0}).add(tab.visu.alphaByConfidence, {row, 1}); + row++; grid.add(Label("OOBB"), {row, 0}).add(tab.visu.oobbs, {row, 1}); row++; grid.add(Label("Object Frames"), {row, 0}).add(tab.visu.objectFrames, {row, 1}); @@ -918,6 +925,7 @@ namespace armarx defs->optional(enabled, prefix + "enabled", "Enable or disable visualization of objects."); defs->optional(inGlobalFrame, prefix + "inGlobalFrame", "If true, show global poses. If false, show poses in robot frame."); defs->optional(alpha, prefix + "alpha", "Alpha of objects (1 = solid, 0 = transparent)."); + defs->optional(alphaByConfidence, prefix + "alphaByConfidence", "If true, use the pose confidence as alpha (if < 1.0)."); defs->optional(oobbs, prefix + "oobbs", "Enable showing oriented bounding boxes."); defs->optional(objectFrames, prefix + "objectFrames", "Enable showing object frames."); defs->optional(objectFramesScale, prefix + "objectFramesScale", "Scaling of object frames."); diff --git a/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.h b/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.h index bf693a18dfb9f52a159891ee107c41b256cb44dc..be40690bed158978ff73de2a4bbdc6ed87f37135 100644 --- a/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.h +++ b/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.h @@ -199,6 +199,7 @@ namespace armarx bool enabled = false; bool inGlobalFrame = true; float alpha = 1.0; + bool alphaByConfidence = false; bool oobbs = false; bool objectFrames = false; float objectFramesScale = 1.0; @@ -224,6 +225,7 @@ namespace armarx RemoteGui::Client::CheckBox enabled; RemoteGui::Client::CheckBox inGlobalFrame; RemoteGui::Client::FloatSlider alpha; + RemoteGui::Client::CheckBox alphaByConfidence; RemoteGui::Client::CheckBox oobbs; RemoteGui::Client::CheckBox objectFrames; RemoteGui::Client::FloatSpinBox objectFramesScale;