diff --git a/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp b/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp index cf4181bd6796bfe105e123c18872cbbcef7155d4..77943d887c6833b87a730b1ce45b926273795ad2 100644 --- a/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp +++ b/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp @@ -36,24 +36,17 @@ #include <ArmarXCore/core/exceptions/local/ExpressionException.h> #include <ArmarXCore/core/logging/Logging.h> #include <ArmarXCore/core/services/tasks/PeriodicTask.h> -#include <ArmarXCore/core/system/ArmarXDataPath.h> #include <ArmarXCore/core/time/CycleUtil.h> -#include <RobotAPI/libraries/armem/client/query/Builder.h> -#include <RobotAPI/libraries/armem/client/query/query_fns.h> #include <RobotAPI/libraries/armem/core/Time.h> -#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h> -#include <RobotAPI/libraries/armem/server/MemoryRemoteGui.h> #include <RobotAPI/libraries/armem_objects/types.h> namespace armarx::articulated_object { - ArticulatedObjectLocalizerExample::ArticulatedObjectLocalizerExample() : - articulatedObjectWriter( - new ::armarx::armem::articulated_object::ArticulatedObjectWriter(memoryNameSystem())), - articulatedObjectReader( - new ::armarx::armem::articulated_object::ArticulatedObjectReader(memoryNameSystem())) + ArticulatedObjectLocalizerExample::ArticulatedObjectLocalizerExample() { + addPlugin(articulatedObjectReaderPlugin); + addPlugin(articulatedObjectWriterPlugin); } armarx::PropertyDefinitionsPtr @@ -69,9 +62,6 @@ namespace armarx::articulated_object defs->optional(p.obj.dataset, "p.obj.dataset", ""); defs->optional(p.obj.className, "p.obj.class", ""); - // Reader will override some properties of writer. - articulatedObjectWriter->registerPropertyDefinitions(defs); - articulatedObjectReader->registerPropertyDefinitions(defs); return defs; } @@ -85,16 +75,16 @@ namespace armarx::articulated_object void ArticulatedObjectLocalizerExample::onInitComponent() { + auto& articulatedObjectReader = articulatedObjectReaderPlugin->get(); + auto& articulatedObjectWriter = articulatedObjectWriterPlugin->get(); + // Reader overwrote property registered property of articulatedObjectWriter. - articulatedObjectWriter->setProviderName(articulatedObjectReader->getProviderName()); + articulatedObjectWriter.setProviderName(articulatedObjectReader.getProviderName()); } void ArticulatedObjectLocalizerExample::onConnectComponent() { - articulatedObjectWriter->connect(); - articulatedObjectReader->connect(); - ARMARX_IMPORTANT << "Running example."; start = armem::Time::Now(); @@ -119,9 +109,11 @@ namespace armarx::articulated_object VirtualRobot::RobotPtr ArticulatedObjectLocalizerExample::createArticulatedObject() { + auto& articulatedObjectReader = articulatedObjectReaderPlugin->get(); + const std::string dishwasherName = p.obj.dataset + "/" + p.obj.className; - const auto descriptions = articulatedObjectReader->queryDescriptions(armem::Time::Now()); + const auto descriptions = articulatedObjectReader.queryDescriptions(armem::Time::Now()); ARMARX_INFO << "Found " << descriptions.size() << " articulated object descriptions"; @@ -190,7 +182,8 @@ namespace armarx::articulated_object articulatedObject->setGlobalPose(simox::math::pose(Eigen::Vector3f(1000, 0, 0))); articulatedObject->setJointValues(jointValues); - articulatedObjectWriter->storeArticulatedObject(articulatedObject, now); + auto& articulatedObjectWriter = articulatedObjectWriterPlugin->get(); + articulatedObjectWriter.storeArticulatedObject(articulatedObject, now); } } // namespace armarx::articulated_object diff --git a/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.h b/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.h index 603462ee4d374082b9d3515aa3ad8bc59038d88b..384068048dd1ab8d1457065d15873de08ff7b82b 100644 --- a/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.h +++ b/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.h @@ -3,18 +3,19 @@ #include <VirtualRobot/VirtualRobot.h> -#include <ArmarXCore/core/services/tasks/PeriodicTask.h> #include <ArmarXCore/core/Component.h> +#include <ArmarXCore/core/services/tasks/PeriodicTask.h> #include <ArmarXCore/interface/observers/ObserverInterface.h> #include <ArmarXCore/util/tasks.h> #include <ArmarXGui/libraries/ArmarXGuiComponentPlugins/LightweightRemoteGuiComponentPlugin.h> #include "RobotAPI/libraries/ArmarXObjects/ObjectID.h" -#include <RobotAPI/libraries/armem/core/Time.h> +#include "RobotAPI/libraries/armem/client/plugins/ReaderWriterPlugin.h" #include <RobotAPI/interface/armem/mns/MemoryNameSystemInterface.h> #include <RobotAPI/interface/armem/server/MemoryInterface.h> #include <RobotAPI/libraries/armem/client/plugins.h> +#include <RobotAPI/libraries/armem/core/Time.h> #include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectReader.h> #include <RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.h> @@ -64,9 +65,13 @@ namespace armarx::articulated_object armarx::DebugObserverInterfacePrx debugObserver; - std::unique_ptr<::armarx::armem::articulated_object::ArticulatedObjectWriter> articulatedObjectWriter; - std::unique_ptr<::armarx::armem::articulated_object::ArticulatedObjectReader> - articulatedObjectReader; + armem::client::plugins::ReaderWriterPlugin< + ::armarx::armem::articulated_object::ArticulatedObjectWriter>* + articulatedObjectWriterPlugin = nullptr; + + armem::client::plugins::ReaderWriterPlugin< + ::armarx::armem::articulated_object::ArticulatedObjectReader>* + articulatedObjectReaderPlugin = nullptr; struct Properties {