diff --git a/source/RobotAPI/components/InteractiveMemoryEditor/Editor.cpp b/source/RobotAPI/components/InteractiveMemoryEditor/Editor.cpp index 809dfb144fd138311286b2299f673c438e71910a..3914fca869b7399650372a0d827692f60874f862 100644 --- a/source/RobotAPI/components/InteractiveMemoryEditor/Editor.cpp +++ b/source/RobotAPI/components/InteractiveMemoryEditor/Editor.cpp @@ -9,10 +9,10 @@ namespace armarx { Editor::Editor(viz::Client& client, - std::string const& providerName, + Properties properties, std::function<void(objpose::ProvidedObjectPoseSeq &)> pushToMemory, std::function<objpose::ObjectPoseSeq(void)> pullFromMemory) - : providerName(providerName) + : properties(std::move(properties)) , client(client) , pushToMemory(std::move(pushToMemory)) , pullFromMemory(std::move(pullFromMemory)) @@ -106,7 +106,7 @@ namespace armarx } objpose::ProvidedObjectPose& providing = providingPoses.emplace_back(); - providing.providerName = providerName; + providing.providerName = properties.providerName; providing.objectType = objpose::KnownObject; providing.objectID = current.objectID; @@ -158,12 +158,10 @@ namespace armarx interaction.contextMenu(description.options); } - const float scale = 1.01F; - viz::Object object = viz::Object(objectPose.objectID.str()) .pose(description.transform * objectPose.objectPoseGlobal) - .scale(scale) + .scale(properties.objectScaling) .fileByObjectFinder(objectPose.objectID) .enable(interaction); diff --git a/source/RobotAPI/components/InteractiveMemoryEditor/Editor.h b/source/RobotAPI/components/InteractiveMemoryEditor/Editor.h index a3117efb3b212fd4b3aac61e7da46077131e7947..e56a3d51ab55122f7a884c8ed63d8ae7463dacef 100644 --- a/source/RobotAPI/components/InteractiveMemoryEditor/Editor.h +++ b/source/RobotAPI/components/InteractiveMemoryEditor/Editor.h @@ -14,8 +14,14 @@ namespace armarx class Editor { public: + struct Properties + { + std::string providerName; + float const& objectScaling; + }; + explicit Editor(viz::Client& client, - std::string const& providerName, + Properties properties, std::function<void(objpose::ProvidedObjectPoseSeq&)> pushToMemory, std::function<objpose::ObjectPoseSeq(void)> pullFromMemory); void step(); @@ -24,7 +30,7 @@ namespace armarx static constexpr const char* memoryLayerName = "Memory"; static constexpr const char* metaLayerName = "Meta"; - std::string const& providerName; + Properties properties; viz::Client& client; const std::function<void(objpose::ProvidedObjectPoseSeq&)> pushToMemory; diff --git a/source/RobotAPI/components/InteractiveMemoryEditor/InteractiveMemoryEditor.cpp b/source/RobotAPI/components/InteractiveMemoryEditor/InteractiveMemoryEditor.cpp index 149712e975831bf2fb1153484f85f3a23c81524a..4328ec8f5058c9554c574c0b256307c62fe95436 100644 --- a/source/RobotAPI/components/InteractiveMemoryEditor/InteractiveMemoryEditor.cpp +++ b/source/RobotAPI/components/InteractiveMemoryEditor/InteractiveMemoryEditor.cpp @@ -4,7 +4,6 @@ #include <RobotAPI/libraries/ArmarXObjects/ice_conversions.h> #include <RobotAPI/libraries/ArmarXObjects/ProvidedObjectPose.h> -#include <RobotAPI/libraries/core/FramedPose.h> #include "Editor.h" @@ -14,6 +13,9 @@ namespace armarx { armarx::PropertyDefinitionsPtr defs = new ComponentPropertyDefinitions(getConfigIdentifier()); + defs->optional(this->objectScaling, "Editor.ObjectScaling", + "Scaling factor that is applied to all intractable objects."); + return defs; } @@ -56,11 +58,14 @@ namespace armarx void InteractiveMemoryEditor::run() { - CycleUtil cycle(50); + const int64_t cycleDurationMs = 50; + CycleUtil cycle(cycleDurationMs); objpose::ObjectPoseClient client = getClient(); - Editor editor(arviz, getName(), + Editor::Properties properties = { .providerName = getName(), .objectScaling = objectScaling }; + + Editor editor(arviz, properties, [&](objpose::ProvidedObjectPoseSeq &poses) { objectPoseTopic->reportObjectPoses(getName(), objpose::toIce(poses)); @@ -78,13 +83,13 @@ namespace armarx } } - objpose::ProviderInfo InteractiveMemoryEditor::getProviderInfo(const Ice::Current &) + objpose::ProviderInfo InteractiveMemoryEditor::getProviderInfo(const Ice::Current & /*unused*/) { return providerInfo; } objpose::provider::RequestObjectsOutput InteractiveMemoryEditor::requestObjects( - const objpose::provider::RequestObjectsInput &input, const Ice::Current &) + const objpose::provider::RequestObjectsInput &input, const Ice::Current & /*unused*/) { objpose::provider::RequestObjectsOutput output; diff --git a/source/RobotAPI/components/InteractiveMemoryEditor/InteractiveMemoryEditor.h b/source/RobotAPI/components/InteractiveMemoryEditor/InteractiveMemoryEditor.h index 6ada0205ec9c433d4fe56cbd71bf53b2760fcff2..a4dc5235452ee715c71bed99ed0b9dd16290bf73 100644 --- a/source/RobotAPI/components/InteractiveMemoryEditor/InteractiveMemoryEditor.h +++ b/source/RobotAPI/components/InteractiveMemoryEditor/InteractiveMemoryEditor.h @@ -40,6 +40,8 @@ namespace armarx armarx::ObjectFinder objectFinder; objpose::ProviderInfo providerInfo; + float objectScaling = 1.01F; + armarx::SimpleRunningTask<>::pointer_type objectVizTask; }; } // namespace armarx