diff --git a/scenarios/ArMemObjectMemory/config/ObjectPoseProviderExample.cfg b/scenarios/ArMemObjectMemory/config/ObjectPoseProviderExample.cfg index 45075e6114eae82fe89f50317c0bced824c96b46..76fbf317102eb56ab01bfd0037544c69f85c6c27 100644 --- a/scenarios/ArMemObjectMemory/config/ObjectPoseProviderExample.cfg +++ b/scenarios/ArMemObjectMemory/config/ObjectPoseProviderExample.cfg @@ -135,6 +135,15 @@ # ArmarX.ObjectPoseProviderExample.Objects = KIT/Amicelli, KIT/YellowSaltCylinder +# ArmarX.ObjectPoseProviderExample.SingleShot: If true, publishes only one snapshot. +# Attributes: +# - Default: false +# - Case sensitivity: yes +# - Required: no +# - Possible values: {0, 1, false, no, true, yes} +# ArmarX.ObjectPoseProviderExample.SingleShot = false + + # ArmarX.ObjectPoseProviderExample.tpc.pub.DebugObserver: Name of the `DebugObserver` topic to publish data to. # Attributes: # - Default: DebugObserver diff --git a/source/RobotAPI/components/ObjectPoseProviderExample/ObjectPoseProviderExample.cpp b/source/RobotAPI/components/ObjectPoseProviderExample/ObjectPoseProviderExample.cpp index c0ef77b2f4b728d245c446b9782336843157d9e6..a87d465a301b423defc89260a52cb15164bcd37d 100644 --- a/source/RobotAPI/components/ObjectPoseProviderExample/ObjectPoseProviderExample.cpp +++ b/source/RobotAPI/components/ObjectPoseProviderExample/ObjectPoseProviderExample.cpp @@ -42,6 +42,8 @@ namespace armarx defs->optional(initialObjectIDs, "Objects", "Object IDs of objects to be tracked.") .map(simox::alg::join(initialObjectIDs, ", "), initialObjectIDs); + defs->optional(singleShot, "SingleShot", "If true, publishes only one snapshot."); + return defs; } @@ -172,6 +174,11 @@ namespace armarx ARMARX_VERBOSE << "Reporting " << poses.size() << " object poses"; objectPoseTopic->reportObjectPoses(getName(), poses); + if (singleShot) + { + break; + } + cycle.waitForCycleDuration(); } } diff --git a/source/RobotAPI/components/ObjectPoseProviderExample/ObjectPoseProviderExample.h b/source/RobotAPI/components/ObjectPoseProviderExample/ObjectPoseProviderExample.h index 7ed814eb06c219f3280f1d5d4e9473ef56344fb0..8de0dac4589f9ab3333becd9a464a0ef236231f5 100644 --- a/source/RobotAPI/components/ObjectPoseProviderExample/ObjectPoseProviderExample.h +++ b/source/RobotAPI/components/ObjectPoseProviderExample/ObjectPoseProviderExample.h @@ -102,6 +102,8 @@ namespace armarx armarx::ObjectFinder objectFinder; std::vector<std::string> initialObjectIDs = { "KIT/Amicelli", "KIT/YellowSaltCylinder" }; + bool singleShot = false; + armarx::SimpleRunningTask<>::pointer_type poseEstimationTask;