Skip to content
Snippets Groups Projects
Commit 2b83daf5 authored by Firat Yusuf Duran's avatar Firat Yusuf Duran :moyai:
Browse files

add core memory segment composedSkill

parent d3046f71
No related branches found
No related tags found
2 merge requests!458Fluxio/dev get types,!449Fluxio preliminary release
Pipeline #21063 failed
......@@ -30,6 +30,7 @@
#include <ArmarXCore/core/logging/Logging.h>
#include <ArmarXCore/core/time/TimeUtil.h>
#include "RobotAPI/libraries/armem_skills/server/segment/ComposedSkillLibrarySegment.h"
#include <RobotAPI/libraries/armem/core/error.h>
#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h>
#include <RobotAPI/libraries/armem/server/MemoryToIceAdapter.h>
......@@ -45,6 +46,7 @@ namespace armarx
SkillManagerComponentPluginUser(),
statechartListenerProviderSegment(iceAdapter()),
executableSkillCoreSegment(iceAdapter()),
composedSkillCoreSegment(iceAdapter()),
skillEventCoreSegment(iceAdapter()),
skillExecutionRequestCoreSegment(iceAdapter())
{
......@@ -59,6 +61,7 @@ namespace armarx
const std::string prefix = "mem.";
statechartListenerProviderSegment.defineProperties(defs, prefix + "statechartlistener.");
executableSkillCoreSegment.defineProperties(defs, prefix + "executableskill.");
composedSkillCoreSegment.defineProperties(defs, prefix + "composedskill.");
skillExecutionRequestCoreSegment.defineProperties(defs, prefix + "executionrequest.");
skillEventCoreSegment.defineProperties(defs, prefix + "event.");
......@@ -77,6 +80,7 @@ namespace armarx
{
statechartListenerProviderSegment.init();
executableSkillCoreSegment.init();
composedSkillCoreSegment.init();
skillExecutionRequestCoreSegment.init();
skillEventCoreSegment.init();
}
......
......@@ -34,6 +34,7 @@
#include <RobotAPI/libraries/armem_skills/aron/Statechart.aron.generated.h>
#include <RobotAPI/libraries/armem_skills/server/StatechartListenerComponentPlugin.h>
#include <RobotAPI/libraries/armem_skills/server/segment/ExecutableSkillLibrarySegment.h>
#include <RobotAPI/libraries/armem_skills/server/segment/ComposedSkillLibrarySegment.h>
#include <RobotAPI/libraries/armem_skills/server/segment/SkillEventSegment.h>
#include <RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.h>
#include <RobotAPI/libraries/armem_skills/server/segment/StatechartListenerSegment.h>
......@@ -133,6 +134,7 @@ namespace armarx
skills::segment::StatechartListenerProviderSegment statechartListenerProviderSegment;
skills::segment::ExecutableSkillLibraryCoreSegment executableSkillCoreSegment;
skills::segment::ComposedSkillLibraryCoreSegment composedSkillCoreSegment;
skills::segment::SkillEventCoreSegment skillEventCoreSegment;
skills::segment::SkillExecutionRequestCoreSegment skillExecutionRequestCoreSegment;
};
......
......@@ -21,6 +21,7 @@ armarx_add_library(
./server/segment/StatechartListenerSegment.cpp
./server/segment/ExecutableSkillLibrarySegment.cpp
./server/segment/ComposedSkillLibrarySegment.cpp
./server/segment/SkillExecutionRequestSegment.cpp
./server/segment/SkillEventSegment.cpp
HEADERS
......@@ -30,6 +31,7 @@ armarx_add_library(
./server/segment/StatechartListenerSegment.h
./server/segment/ExecutableSkillLibrarySegment.h
./server/segment/ComposedSkillLibrarySegment.h
./server/segment/SkillExecutionRequestSegment.h
./server/segment/SkillEventSegment.h
)
......
#include "ComposedSkillLibrarySegment.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/Skill.aron.generated.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/FluxioSkill.aron.generated.h>
namespace armarx::skills::segment
{
ComposedSkillLibraryCoreSegment::ComposedSkillLibraryCoreSegment(
armem::server::MemoryToIceAdapter& iceMemory) :
Base(iceMemory, CoreSegmentName, skills::manager::arondto::FluxioSkill::ToAronType())
{
}
void
ComposedSkillLibraryCoreSegment::defineProperties(PropertyDefinitionsPtr defs,
const std::string& prefix)
{
this->setDefaultMaxHistorySize(3);
Base::defineProperties(defs, prefix);
}
void
ComposedSkillLibraryCoreSegment::init()
{
Base::init();
}
void
ComposedSkillLibraryCoreSegment::addSkillProvider(const skills::ProviderInfo& info)
{
// add skills
auto skills = info.providedSkills;
auto provId = id().withProviderSegmentName(info.providerId.providerName);
for (const auto& [s, d] : skills)
{
armarx::skills::arondto::SkillDescription skillDescription;
armem::toAron(skillDescription, d);
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 = {skillDescription.toAron()};
entityUpdate.entityID = provId.withEntityName(d.skillId.skillName);
// Commit data to memory and notify
iceMemory.commit(commit);
}
}
void
ComposedSkillLibraryCoreSegment::removeSkillProvider(const std::string& providerName)
{
skills.erase(providerName);
// TODO also add info about removed provider to memory?
}
} // namespace armarx::skills::segment
#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>
namespace armarx::skills::segment
{
class ComposedSkillLibraryCoreSegment : public armem::server::segment::SpecializedCoreSegment
{
using Base = armem::server::segment::SpecializedCoreSegment;
public:
static constexpr const char* CoreSegmentName = "ComposedSkill";
ComposedSkillLibraryCoreSegment(armem::server::MemoryToIceAdapter& iceMemory);
void defineProperties(PropertyDefinitionsPtr defs, const std::string& prefix);
void init();
void addSkillProvider(const skills::ProviderInfo& info);
void removeSkillProvider(const std::string& providerName);
size_t size() const;
private:
std::map<std::string, std::map<std::string, skills::manager::dto::ProviderInfo>> skills;
};
} // namespace armarx::skills::segment
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment