diff --git a/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp b/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp index 71021ee3ddfd84030f1b2b6a06a457ed87e1d779..13e240f38cf471e85c6782d6ee3e6bdce38c00c4 100644 --- a/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp +++ b/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp @@ -55,19 +55,9 @@ namespace armarx defs->defineOptionalProperty<std::string>("KinematicUnitObserverName", "KinematicUnitObserver", "Name of the kinematic unit observer."); defs->topic(debugObserver); - defs->optional(visu.enabled, "visu.enabled", "Enable or disable visualization of objects."); - defs->optional(visu.inGlobalFrame, "visu.inGlobalFrame", "If true, show global poses. If false, show poses in robot frame."); - defs->optional(visu.alpha, "visu.alpha", "Alpha of objects (1 = solid, 0 = transparent)."); - defs->optional(visu.oobbs, "visu.oobbs", "Enable showing oriented bounding boxes."); - defs->optional(visu.objectFrames, "visu.objectFrames", "Enable showing object frames."); - defs->optional(visu.objectFramesScale, "visu.objectFramesScale", "Scaling of object frames."); - - defs->optional(calibration.robotNode, "calibration.robotNode", "Robot node which can be calibrated."); - defs->optional(calibration.offset, "calibration.offset", "Offset for the node to be calibrated."); - - defs->optional(robotHead.checkHeadVelocity, "head.checkHeadVelocity", "If true, check whether the head is moving and discard updates in the meantime."); - defs->optional(robotHead.maxJointVelocity, "head.maxJointVelocity", "If a head joint's velocity is higher, the head is considered moving."); - defs->optional(robotHead.discardIntervalAfterMoveMS, "head.discardIntervalAfterMoveMS", "For how long new updates are ignored after moving the head."); + visu.defineProperties(defs, "visu."); + calibration.defineProperties(defs, "calibration."); + robotHead.defineProperties(defs, "head."); return defs; } @@ -923,6 +913,22 @@ namespace armarx } } + void ObjectPoseObserver::Visu::defineProperties(PropertyDefinitionsPtr defs, const std::string& prefix) + { + 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(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."); + } + + void ObjectPoseObserver::Calibration::defineProperties(PropertyDefinitionsPtr defs, const std::string& prefix) + { + defs->optional(robotNode, prefix + "robotNode", "Robot node which can be calibrated."); + defs->optional(offset, prefix + "offset", "Offset for the node to be calibrated."); + } + } diff --git a/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.h b/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.h index 09c839d298fc7018c7aa14cf80e65c43e0811540..bf693a18dfb9f52a159891ee107c41b256cb44dc 100644 --- a/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.h +++ b/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.h @@ -202,6 +202,8 @@ namespace armarx bool oobbs = false; bool objectFrames = false; float objectFramesScale = 1.0; + + void defineProperties(armarx::PropertyDefinitionsPtr defs, const std::string& prefix = "visu."); }; Visu visu; @@ -209,6 +211,8 @@ namespace armarx { std::string robotNode = "Neck_2_Pitch"; float offset = 0.0f; + + void defineProperties(armarx::PropertyDefinitionsPtr defs, const std::string& prefix = "calibration."); }; Calibration calibration; diff --git a/source/RobotAPI/components/ObjectPoseObserver/detail/RobotHeadMovement.cpp b/source/RobotAPI/components/ObjectPoseObserver/detail/RobotHeadMovement.cpp index c0c68e6d1f1f59a9d7812e198276d8f57d000726..b9ac721ca1ade44a8667b28667520093169d0770 100644 --- a/source/RobotAPI/components/ObjectPoseObserver/detail/RobotHeadMovement.cpp +++ b/source/RobotAPI/components/ObjectPoseObserver/detail/RobotHeadMovement.cpp @@ -1,11 +1,22 @@ #include "RobotHeadMovement.h" #include <ArmarXCore/core/time/TimeUtil.h> +#include <ArmarXCore/core/application/properties/PropertyDefinitionContainer.h> namespace armarx::objpose { + void RobotHeadMovement::defineProperties(armarx::PropertyDefinitionsPtr defs, const std::string& prefix) + { + defs->optional(checkHeadVelocity, prefix + "checkHeadVelocity", + "If true, check whether the head is moving and discard updates in the meantime."); + defs->optional(maxJointVelocity, prefix + "maxJointVelocity", + "If a head joint's velocity is higher, the head is considered moving."); + defs->optional(discardIntervalAfterMoveMS, prefix + "discardIntervalAfterMoveMS", + "For how long new updates are ignored after moving the head."); + } + void RobotHeadMovement::fetchDatafields() { if (kinematicUnitObserver) diff --git a/source/RobotAPI/components/ObjectPoseObserver/detail/RobotHeadMovement.h b/source/RobotAPI/components/ObjectPoseObserver/detail/RobotHeadMovement.h index b0345e7c39a0c27caa693dcf075b5d7f9ffa2510..fd06a1b2d83831642b4abcfe6fc16784c105c554 100644 --- a/source/RobotAPI/components/ObjectPoseObserver/detail/RobotHeadMovement.h +++ b/source/RobotAPI/components/ObjectPoseObserver/detail/RobotHeadMovement.h @@ -12,10 +12,29 @@ #include <RobotAPI/interface/observers/KinematicUnitObserverInterface.h> +namespace armarx +{ + class PropertyDefinitionContainer; + using PropertyDefinitionsPtr = IceUtil::Handle<PropertyDefinitionContainer>; +} + namespace armarx::objpose { class RobotHeadMovement : public armarx::Logging { + public: + + void defineProperties(armarx::PropertyDefinitionsPtr defs, const std::string& prefix = "head."); + + void fetchDatafields(); + bool isMoving() const; + + void movementStarts(long discardIntervalMs); + void movementStarts(IceUtil::Time discardInterval); + void movementStops(long discardIntervalMs); + void movementStops(IceUtil::Time discardInterval); + + public: bool checkHeadVelocity = true; @@ -31,13 +50,6 @@ namespace armarx::objpose DebugObserverInterfacePrx debugObserver; - void fetchDatafields(); - bool isMoving() const; - - void movementStarts(long discardIntervalMs); - void movementStarts(IceUtil::Time discardInterval); - void movementStops(long discardIntervalMs); - void movementStops(IceUtil::Time discardInterval); };