From d9d30318ed20dadb6954a73ec656e3a1064742a2 Mon Sep 17 00:00:00 2001 From: Firat Yusuf Duran <uzivy@student.kit.edu> Date: Fri, 13 Sep 2024 16:03:33 +0200 Subject: [PATCH] add profile core segment to skillmemory --- .../server/SkillsMemory/SkillsMemory.cpp | 3 ++ .../armem/server/SkillsMemory/SkillsMemory.h | 2 + .../libraries/armem_skills/CMakeLists.txt | 2 + .../server/segment/ProfileLibrarySegment.cpp | 53 +++++++++++++++++++ .../server/segment/ProfileLibrarySegment.h | 35 ++++++++++++ 5 files changed, 95 insertions(+) create mode 100644 source/RobotAPI/libraries/armem_skills/server/segment/ProfileLibrarySegment.cpp create mode 100644 source/RobotAPI/libraries/armem_skills/server/segment/ProfileLibrarySegment.h diff --git a/source/RobotAPI/components/armem/server/SkillsMemory/SkillsMemory.cpp b/source/RobotAPI/components/armem/server/SkillsMemory/SkillsMemory.cpp index efb6e446e..1e0842b2c 100644 --- a/source/RobotAPI/components/armem/server/SkillsMemory/SkillsMemory.cpp +++ b/source/RobotAPI/components/armem/server/SkillsMemory/SkillsMemory.cpp @@ -47,6 +47,7 @@ namespace armarx statechartListenerProviderSegment(iceAdapter()), executableSkillCoreSegment(iceAdapter()), composedSkillCoreSegment(iceAdapter()), + profileCoreSegment(iceAdapter()), skillEventCoreSegment(iceAdapter()), skillExecutionRequestCoreSegment(iceAdapter()) { @@ -62,6 +63,7 @@ namespace armarx statechartListenerProviderSegment.defineProperties(defs, prefix + "statechartlistener."); executableSkillCoreSegment.defineProperties(defs, prefix + "executableskill."); composedSkillCoreSegment.defineProperties(defs, prefix + "composedskill."); + profileCoreSegment.defineProperties(defs, prefix + "profile."); skillExecutionRequestCoreSegment.defineProperties(defs, prefix + "executionrequest."); skillEventCoreSegment.defineProperties(defs, prefix + "event."); @@ -81,6 +83,7 @@ namespace armarx statechartListenerProviderSegment.init(); executableSkillCoreSegment.init(); composedSkillCoreSegment.init(); + profileCoreSegment.init(); skillExecutionRequestCoreSegment.init(); skillEventCoreSegment.init(); } diff --git a/source/RobotAPI/components/armem/server/SkillsMemory/SkillsMemory.h b/source/RobotAPI/components/armem/server/SkillsMemory/SkillsMemory.h index cd40868e6..30de2d17d 100644 --- a/source/RobotAPI/components/armem/server/SkillsMemory/SkillsMemory.h +++ b/source/RobotAPI/components/armem/server/SkillsMemory/SkillsMemory.h @@ -29,6 +29,7 @@ #include <ArmarXCore/interface/core/Profiler.h> #include <ArmarXCore/observers/ObserverObjectFactories.h> +#include "RobotAPI/libraries/armem_skills/server/segment/ProfileLibrarySegment.h" #include <RobotAPI/interface/skills/SkillMemoryInterface.h> #include <RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.h> #include <RobotAPI/libraries/armem_skills/aron/Statechart.aron.generated.h> @@ -135,6 +136,7 @@ namespace armarx skills::segment::StatechartListenerProviderSegment statechartListenerProviderSegment; skills::segment::ExecutableSkillLibraryCoreSegment executableSkillCoreSegment; skills::segment::ComposedSkillLibraryCoreSegment composedSkillCoreSegment; + skills::segment::ProfileLibraryCoreSegment profileCoreSegment; skills::segment::SkillEventCoreSegment skillEventCoreSegment; skills::segment::SkillExecutionRequestCoreSegment skillExecutionRequestCoreSegment; }; diff --git a/source/RobotAPI/libraries/armem_skills/CMakeLists.txt b/source/RobotAPI/libraries/armem_skills/CMakeLists.txt index 967384b58..5735dafed 100644 --- a/source/RobotAPI/libraries/armem_skills/CMakeLists.txt +++ b/source/RobotAPI/libraries/armem_skills/CMakeLists.txt @@ -22,6 +22,7 @@ armarx_add_library( ./server/segment/StatechartListenerSegment.cpp ./server/segment/ExecutableSkillLibrarySegment.cpp ./server/segment/ComposedSkillLibrarySegment.cpp + ./server/segment/ProfileLibrarySegment.cpp ./server/segment/SkillExecutionRequestSegment.cpp ./server/segment/SkillEventSegment.cpp HEADERS @@ -32,6 +33,7 @@ armarx_add_library( ./server/segment/StatechartListenerSegment.h ./server/segment/ExecutableSkillLibrarySegment.h ./server/segment/ComposedSkillLibrarySegment.h + ./server/segment/ProfileLibrarySegment.h ./server/segment/SkillExecutionRequestSegment.h ./server/segment/SkillEventSegment.h ) diff --git a/source/RobotAPI/libraries/armem_skills/server/segment/ProfileLibrarySegment.cpp b/source/RobotAPI/libraries/armem_skills/server/segment/ProfileLibrarySegment.cpp new file mode 100644 index 000000000..f1d93114a --- /dev/null +++ b/source/RobotAPI/libraries/armem_skills/server/segment/ProfileLibrarySegment.cpp @@ -0,0 +1,53 @@ +#include "ProfileLibrarySegment.h" + +#include <SimoxUtility/algorithm/string.h> + +#include <ArmarXCore/core/time/ice_conversions.h> + +#include <RobotAPI/libraries/armem/server/MemoryToIceAdapter.h> +#include <RobotAPI/libraries/armem_skills/aron_conversions.h> +#include <RobotAPI/libraries/aron/converter/datatype/DatatypeConverterVisitor.h> +#include <RobotAPI/libraries/aron/converter/json/NLohmannJSONConverter.h> +#include <RobotAPI/libraries/skills/core/aron/FluxioProfile.aron.generated.h> + +namespace armarx::skills::segment +{ + ProfileLibraryCoreSegment::ProfileLibraryCoreSegment( + armem::server::MemoryToIceAdapter& iceMemory) : + Base(iceMemory, CoreSegmentName, skills::manager::arondto::FluxioProfile::ToAronType()) + { + } + + void + ProfileLibraryCoreSegment::defineProperties(PropertyDefinitionsPtr defs, + const std::string& prefix) + { + this->setDefaultMaxHistorySize(3); + Base::defineProperties(defs, prefix); + } + + void + ProfileLibraryCoreSegment::init() + { + Base::init(); + } + + void + ProfileLibraryCoreSegment::addProfile(const skills::manager::arondto::FluxioProfile& profile) + { + // // add skills + // auto provId = id().withProviderSegmentName(skill.skillProviderId.id); + + // armem::Commit commit; + // auto& entityUpdate = commit.add(); + // entityUpdate.confidence = 1.0; + // entityUpdate.referencedTime = armem::Time::Now(); + // entityUpdate.sentTime = armem::Time::Now(); + // entityUpdate.arrivedTime = armem::Time::Now(); + // entityUpdate.instancesData = {skill.toAron()}; + // entityUpdate.entityID = provId.withEntityName("ArmarBlow"); + + // // Commit data to memory and notify + // iceMemory.commit(commit); + } +} // namespace armarx::skills::segment diff --git a/source/RobotAPI/libraries/armem_skills/server/segment/ProfileLibrarySegment.h b/source/RobotAPI/libraries/armem_skills/server/segment/ProfileLibrarySegment.h new file mode 100644 index 000000000..a05bca90e --- /dev/null +++ b/source/RobotAPI/libraries/armem_skills/server/segment/ProfileLibrarySegment.h @@ -0,0 +1,35 @@ +#pragma once + +// Base Class +#include <RobotAPI/libraries/armem/server/segment/SpecializedSegment.h> + +// ArmarX +#include <ArmarXCore/core/application/properties/PropertyDefinitionContainer.h> +#include <ArmarXCore/interface/core/Profiler.h> +#include <ArmarXCore/observers/ObserverObjectFactories.h> + +#include <RobotAPI/interface/skills/SkillManagerInterface.h> +#include <RobotAPI/interface/skills/SkillProviderInterface.h> +#include <RobotAPI/libraries/armem_skills/aron/Skill.aron.generated.h> +#include <RobotAPI/libraries/skills/core/ProviderInfo.h> +#include <RobotAPI/libraries/skills/core/aron/FluxioProfile.aron.generated.h> + +namespace armarx::skills::segment +{ + class ProfileLibraryCoreSegment : public armem::server::segment::SpecializedCoreSegment + { + using Base = armem::server::segment::SpecializedCoreSegment; + + public: + static constexpr const char* CoreSegmentName = "Profile"; + + ProfileLibraryCoreSegment(armem::server::MemoryToIceAdapter& iceMemory); + + void defineProperties(PropertyDefinitionsPtr defs, const std::string& prefix); + void init(); + + void addProfile(const skills::manager::arondto::FluxioProfile& profile); + + size_t size() const; +}; +} // namespace armarx::skills::segment -- GitLab