diff --git a/source/RobotAPI/components/units/CMakeLists.txt b/source/RobotAPI/components/units/CMakeLists.txt index 3fa53590170e0ff9d288f7f130adae9814ee7446..f6710bc22978c2816aa8056da5795b0a84b5578a 100644 --- a/source/RobotAPI/components/units/CMakeLists.txt +++ b/source/RobotAPI/components/units/CMakeLists.txt @@ -6,6 +6,7 @@ set(LIBS RobotAPICore ArmarXCoreObservers ArmarXCoreEigen3Variants + GraspingUtility ) set(LIB_HEADERS diff --git a/source/RobotAPI/components/units/GraspCandidateObserver.cpp b/source/RobotAPI/components/units/GraspCandidateObserver.cpp index e780bbfe388f6e484673bbd44d5cc7c3bf5f0570..d4b5ea81cab4f670ba0a073b7ae120b82295de49 100644 --- a/source/RobotAPI/components/units/GraspCandidateObserver.cpp +++ b/source/RobotAPI/components/units/GraspCandidateObserver.cpp @@ -38,7 +38,7 @@ using namespace armarx; using namespace armarx::grasping; -GraspCandidateObserver::GraspCandidateObserver() +GraspCandidateObserver::GraspCandidateObserver() : graspCandidateWriter(memoryNameSystem()) { } @@ -53,6 +53,7 @@ void GraspCandidateObserver::onInitObserver() void GraspCandidateObserver::onConnectObserver() { configTopic = getTopic<GraspCandidateProviderInterfacePrx>(getProperty<std::string>("ConfigTopicName").getValue()); + graspCandidateWriter.connect(); } PropertyDefinitionsPtr GraspCandidateObserver::createPropertyDefinitions() @@ -125,6 +126,7 @@ void GraspCandidateObserver::reportGraspCandidates(const std::string& providerNa { std::unique_lock lock(dataMutex); this->candidates[providerName] = candidates; + graspCandidateWriter.commitGraspCandidateSeq(candidates, armarx::armem::Time::now(), providerName); handleProviderUpdate(providerName, candidates.size()); } diff --git a/source/RobotAPI/components/units/GraspCandidateObserver.h b/source/RobotAPI/components/units/GraspCandidateObserver.h index f4bb0ba3e7886d970cd33a82a03fe9525057b6c9..91169049b9376b41a8deaddf7f93ed9100979c28 100644 --- a/source/RobotAPI/components/units/GraspCandidateObserver.h +++ b/source/RobotAPI/components/units/GraspCandidateObserver.h @@ -25,6 +25,8 @@ #include <ArmarXCore/observers/Observer.h> #include <RobotAPI/interface/observers/GraspCandidateObserverInterface.h> +#include <RobotAPI/libraries/armem/client/plugins/PluginUser.h> +#include <RobotAPI/libraries/GraspingUtility/GraspCandidateWriter.h> #include <mutex> @@ -52,6 +54,7 @@ namespace armarx */ class GraspCandidateObserver : virtual public Observer, + virtual public armarx::armem::ClientPluginUser, virtual public grasping::GraspCandidateObserverInterface { public: @@ -124,7 +127,7 @@ namespace armarx grasping::GraspCandidateSeq selectedCandidates; grasping::BimanualGraspCandidateSeq selectedBimanualCandidates; - + armarx::armem::GraspCandidateWriter graspCandidateWriter; void handleProviderUpdate(const std::string& providerName, int candidateCount); };