From 4f2b0fc5e178c5f7818cb55960b1da9b7ddf35a2 Mon Sep 17 00:00:00 2001 From: Fabian Peller-Konrad <fabian.peller-konrad@kit.edu> Date: Thu, 15 Sep 2022 11:47:13 +0200 Subject: [PATCH] skill provider updates --- .../SkillProviderExample.cpp | 91 ++++++++++--------- .../SkillProviderExample.h | 27 +++++- .../segment/SkillExecutionRequestSegment.cpp | 33 +++++-- .../RobotAPI/libraries/skills/CMakeLists.txt | 15 +-- .../libraries/skills/provider/LambdaSkill.cpp | 15 +-- .../libraries/skills/provider/LambdaSkill.h | 2 +- .../skills/provider/PeriodicSkill.cpp | 28 +++--- .../libraries/skills/provider/PeriodicSkill.h | 14 ++- .../provider/PeriodicSpecializedSkill.h | 24 +++-- .../libraries/skills/provider/Skill.cpp | 10 +- .../libraries/skills/provider/Skill.h | 19 ++-- .../provider/SkillProviderComponentPlugin.h | 7 ++ .../libraries/skills/provider/SkillProxy.cpp | 6 ++ .../libraries/skills/provider/SkillProxy.h | 1 + .../skills/provider/SpecializedSkill.h | 19 ++-- .../detail/SkillImplementationWrapper.cpp | 40 ++++---- .../detail/SkillImplementationWrapper.h | 3 +- .../libraries/skills/provider/mixins/All.h | 7 ++ .../skills/provider/mixins/ArvizSkillMixin.h | 26 ++++++ .../provider/mixins/GraspReadingSkillMixin.h | 25 +++++ .../skills/provider/mixins/MNSSkillMixin.h | 16 ++++ .../provider/mixins/MemoryReadingSkillMixin.h | 16 ++++ .../provider/mixins/ObjectReadingSkillMixin.h | 25 +++++ .../provider/mixins/ObjectWritingSkillMixin.h | 16 ++++ .../provider/mixins/RobotReadingSkillMixin.h | 28 ++++++ .../libraries/skills/provider/util/All.h | 6 -- .../skills/provider/util/ArvizSkillUtil.h | 20 ---- .../provider/util/GraspReadingSkillUtil.h | 20 ---- .../provider/util/MemoryReadingSkillUtil.h | 13 --- .../provider/util/ObjectReadingSkillUtil.h | 20 ---- .../provider/util/ObjectWritingSkillUtil.h | 13 --- .../provider/util/RobotReadingSkillUtil.h | 19 ---- 32 files changed, 361 insertions(+), 263 deletions(-) create mode 100644 source/RobotAPI/libraries/skills/provider/mixins/All.h create mode 100644 source/RobotAPI/libraries/skills/provider/mixins/ArvizSkillMixin.h create mode 100644 source/RobotAPI/libraries/skills/provider/mixins/GraspReadingSkillMixin.h create mode 100644 source/RobotAPI/libraries/skills/provider/mixins/MNSSkillMixin.h create mode 100644 source/RobotAPI/libraries/skills/provider/mixins/MemoryReadingSkillMixin.h create mode 100644 source/RobotAPI/libraries/skills/provider/mixins/ObjectReadingSkillMixin.h create mode 100644 source/RobotAPI/libraries/skills/provider/mixins/ObjectWritingSkillMixin.h create mode 100644 source/RobotAPI/libraries/skills/provider/mixins/RobotReadingSkillMixin.h delete mode 100644 source/RobotAPI/libraries/skills/provider/util/All.h delete mode 100644 source/RobotAPI/libraries/skills/provider/util/ArvizSkillUtil.h delete mode 100644 source/RobotAPI/libraries/skills/provider/util/GraspReadingSkillUtil.h delete mode 100644 source/RobotAPI/libraries/skills/provider/util/MemoryReadingSkillUtil.h delete mode 100644 source/RobotAPI/libraries/skills/provider/util/ObjectReadingSkillUtil.h delete mode 100644 source/RobotAPI/libraries/skills/provider/util/ObjectWritingSkillUtil.h delete mode 100644 source/RobotAPI/libraries/skills/provider/util/RobotReadingSkillUtil.h diff --git a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp index 45a16b150..783821b06 100644 --- a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp +++ b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp @@ -10,8 +10,11 @@ namespace armarx::skills::provider { + HelloWorldSkill::HelloWorldSkill() : + Skill(GetSkillDescription()) + {} - SkillDescription CreateHelloWorldSkillDescription() + SkillDescription HelloWorldSkill::GetSkillDescription() { armarx::skills::Example::HelloWorldAcceptedType default_params; default_params.some_float = 5; @@ -28,30 +31,32 @@ namespace armarx::skills::provider }; } - HelloWorldSkill::HelloWorldSkill() : - Skill(CreateHelloWorldSkillDescription()) - {} - TerminatedSkillStatusUpdate HelloWorldSkill::main(const MainInput& in) + Skill::MainResult HelloWorldSkill::main(const MainInput& in) { ARMARX_IMPORTANT << "Hi, from the Hello World Skill.\n" << "I received the following data: \n" << aron::converter::AronNlohmannJSONConverter::ConvertToNlohmannJSON(in.params).dump(2) << "\n" << "(executed at: " << IceUtil::Time::now() << ")"; - return {{getSkillId(), in.executorName, {in.params, nullptr}, nullptr}, TerminatedSkillStatus::Succeeded}; + return {TerminatedSkillStatus::Succeeded, nullptr}; } ChainingSkill::ChainingSkill() : - Skill(SkillDescription{ + Skill(GetSkillDescription()) + {} + + SkillDescription ChainingSkill::GetSkillDescription() + { + return SkillDescription{ "ChainingSkill", "This skill calls the HelloWorld skill three times.", {}, 3000, nullptr - }) - {} - TerminatedSkillStatusUpdate ChainingSkill::main(const MainInput& in) + }; + } + + Skill::MainResult ChainingSkill::main(const MainInput& in) { - // TODO: Switch to SkillProxy armarx::skills::Example::HelloWorldAcceptedType exec1; armarx::skills::Example::HelloWorldAcceptedType exec2; armarx::skills::Example::HelloWorldAcceptedType exec3; @@ -60,58 +65,54 @@ namespace armarx::skills::provider exec2.some_text = "Hello from the ChainingSkill 2"; exec3.some_text = "Hello from the ChainingSkill 3"; - manager::dto::SkillExecutionRequest exec; - exec.skillId = {"SkillProviderExample", "HelloWorld"}; - - exec.params = exec1.toAron()->toAronDictDTO(); - manager->executeSkill(exec); + SkillProxy skillExecPrx(manager, {"SkillProviderExample", "HelloWorld"}); - exec.params = exec2.toAron()->toAronDictDTO(); - manager->executeSkill(exec); + skillExecPrx.executeFullSkill(getSkillId().toString(), exec1.toAron()); + skillExecPrx.executeFullSkill(getSkillId().toString(), exec2.toAron()); + skillExecPrx.executeFullSkill(getSkillId().toString(), exec3.toAron()); - exec.params = exec3.toAron()->toAronDictDTO(); - manager->executeSkill(exec); - - return {{getSkillId(), in.executorName, {in.params, nullptr}, nullptr}, TerminatedSkillStatus::Succeeded}; + return {TerminatedSkillStatus::Succeeded, nullptr}; } TimeoutSkill::TimeoutSkill() : - Skill(SkillDescription{ + PeriodicSkill(GetSkillDescription(), armarx::core::time::Frequency::Hertz(5)) + {} + + SkillDescription TimeoutSkill::GetSkillDescription() + { + return SkillDescription{ "Timeout", "This fails with timeout reached", {}, 1000, nullptr - }) - {} - TerminatedSkillStatusUpdate TimeoutSkill::main(const MainInput& in) + }; + } + + PeriodicSkill::StepResult TimeoutSkill::step(const MainInput& in) { - int i = 0; - while (!timeoutReached) - { - // do heavy work - std::this_thread::sleep_for(std::chrono::milliseconds(200)); - - // check if work is done - if(i++ > 15) - { - ARMARX_IMPORTANT << "Somehow the timeout check succeceded...."; - return {{getSkillId(), in.executorName, {in.params, nullptr}, nullptr}, TerminatedSkillStatus::Succeeded}; - } - } - return {{getSkillId(), in.executorName, {in.params, nullptr}, nullptr}, TerminatedSkillStatus::Failed}; + // do heavy work + std::this_thread::sleep_for(std::chrono::milliseconds(200)); + + return {ActiveOrTerminatedSkillStatus::Running, nullptr}; } CallbackSkill::CallbackSkill() : - Skill(SkillDescription{ + Skill(GetSkillDescription()) + {} + + SkillDescription CallbackSkill::GetSkillDescription() + { + return SkillDescription{ "ShowMeCallbacks", "This skill does shows callbacks", {}, 1000, nullptr - }) - {} - TerminatedSkillStatusUpdate CallbackSkill::main(const MainInput& in) + }; + } + + Skill::MainResult CallbackSkill::main(const MainInput& in) { ARMARX_IMPORTANT << "Logging three updates via the callback"; auto up1 = std::make_shared<aron::data::Dict>(); @@ -126,7 +127,7 @@ namespace armarx::skills::provider up3->addElement("updateInfo", std::make_shared<aron::data::String>("Update 3")); in.callback(up3); - return {{getSkillId(), in.executorName, {in.params, nullptr}, nullptr}, TerminatedSkillStatus::Succeeded}; + return {TerminatedSkillStatus::Succeeded, nullptr}; } diff --git a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h index 32be05cb6..cbd795396 100644 --- a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h +++ b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h @@ -27,6 +27,7 @@ #include <ArmarXCore/core/Component.h> // RobotAPI +#include <RobotAPI/libraries/skills/provider/SkillProxy.h> #include <RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.h> namespace armarx::skills::provider @@ -36,22 +37,34 @@ namespace armarx::skills::provider { public: HelloWorldSkill(); - TerminatedSkillStatusUpdate main(const MainInput& in) final; + + static SkillDescription GetSkillDescription(); + + private: + Skill::MainResult main(const MainInput& in) final; }; class ChainingSkill : public Skill { public: ChainingSkill(); - TerminatedSkillStatusUpdate main(const MainInput& in) final; + + static SkillDescription GetSkillDescription(); + + private: + Skill::MainResult main(const MainInput& in) final; }; - class TimeoutSkill : public Skill + class TimeoutSkill : public PeriodicSkill { public: TimeoutSkill(); - TerminatedSkillStatusUpdate main(const MainInput& in) final; + + static SkillDescription GetSkillDescription(); + + private: + PeriodicSkill::StepResult step(const MainInput& in) final; }; @@ -59,7 +72,11 @@ namespace armarx::skills::provider { public: CallbackSkill(); - TerminatedSkillStatusUpdate main(const MainInput& in) final; + + static SkillDescription GetSkillDescription(); + + private: + Skill::MainResult main(const MainInput& in) final; }; /** diff --git a/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp b/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp index f8c1b9e99..f8333282e 100644 --- a/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp +++ b/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp @@ -47,7 +47,6 @@ namespace armarx::skills::segment { // override directly execution to add a request to the memory armem::Commit comm; - auto& entityUpdate = comm.add(); skills::arondto::SkillExecutionRequest request; request.executorName = info.executorName; @@ -57,14 +56,32 @@ namespace armarx::skills::segment auto aron = request.toAron(); - armem::MemoryID skillExecutionMemID = id(); - skillExecutionMemID.providerSegmentName = request.providerName; - skillExecutionMemID.entityName = request.skillName; + { + auto& entityUpdate = comm.add(); + + armem::MemoryID skillExecutionMemID = id(); + skillExecutionMemID.providerSegmentName = request.providerName; + skillExecutionMemID.entityName = request.skillName; + + entityUpdate.entityID = skillExecutionMemID; + entityUpdate.instancesData = { aron }; + entityUpdate.confidence = 1.0; + entityUpdate.timeCreated = armem::Time::Now(); + } + + { + auto& entityUpdate = comm.add(); + + armem::MemoryID skillExecutionMemID = id(); + skillExecutionMemID.providerSegmentName = "All Skill Execution Requests"; + skillExecutionMemID.entityName = "All Skill Execution Requests"; + + entityUpdate.entityID = skillExecutionMemID; + entityUpdate.instancesData = { aron }; + entityUpdate.confidence = 1.0; + entityUpdate.timeCreated = armem::Time::Now(); + } - entityUpdate.entityID = skillExecutionMemID; - entityUpdate.instancesData = { aron }; - entityUpdate.confidence = 1.0; - entityUpdate.timeCreated = armem::Time::Now(); iceMemory.commit(comm); } diff --git a/source/RobotAPI/libraries/skills/CMakeLists.txt b/source/RobotAPI/libraries/skills/CMakeLists.txt index 0b2473cd6..30241deae 100644 --- a/source/RobotAPI/libraries/skills/CMakeLists.txt +++ b/source/RobotAPI/libraries/skills/CMakeLists.txt @@ -44,13 +44,14 @@ armarx_add_library( ./provider/SkillID.h ./provider/detail/SkillImplementationWrapper.h - provider/util/All.h - provider/util/ArvizSkillUtil.h - provider/util/MemoryReadingSkillUtil.h - provider/util/RobotReadingSkillUtil.h - provider/util/ObjectReadingSkillUtil.h - provider/util/ObjectWritingSkillUtil.h - provider/util/GraspReadingSkillUtil.h + provider/mixins/All.h + provider/mixins/ArvizSkillMixin.h + provider/mixins/MNSSkillMixin.h + provider/mixins/MemoryReadingSkillMixin.h + provider/mixins/RobotReadingSkillMixin.h + provider/mixins/ObjectReadingSkillMixin.h + provider/mixins/ObjectWritingSkillMixin.h + provider/mixins/GraspReadingSkillMixin.h ) add_library(RobotAPI::skills ALIAS RobotAPISkills) diff --git a/source/RobotAPI/libraries/skills/provider/LambdaSkill.cpp b/source/RobotAPI/libraries/skills/provider/LambdaSkill.cpp index ed4e675b1..e922a69bb 100644 --- a/source/RobotAPI/libraries/skills/provider/LambdaSkill.cpp +++ b/source/RobotAPI/libraries/skills/provider/LambdaSkill.cpp @@ -5,24 +5,15 @@ namespace armarx namespace skills { - TerminatedSkillStatusUpdate LambdaSkill::main(const MainInput& in) + Skill::MainResult LambdaSkill::main(const MainInput& in) { bool res = fun(in.executorName, in.params); - TerminatedSkillStatusUpdate ret; - ret.executorName = in.executorName; - ret.skillId = getSkillId(); - ret.usedParameterization = {in.params, nullptr}; // ToDo: How to set the callback interface? if (res) { - ret.status = TerminatedSkillStatus::Succeeded; + return {TerminatedSkillStatus::Succeeded, nullptr}; } - else - { - ret.status = TerminatedSkillStatus::Failed; - } - - return ret; + return {TerminatedSkillStatus::Failed, nullptr}; } } } diff --git a/source/RobotAPI/libraries/skills/provider/LambdaSkill.h b/source/RobotAPI/libraries/skills/provider/LambdaSkill.h index cba43489f..e73206e45 100644 --- a/source/RobotAPI/libraries/skills/provider/LambdaSkill.h +++ b/source/RobotAPI/libraries/skills/provider/LambdaSkill.h @@ -18,7 +18,7 @@ namespace armarx {}; private: - TerminatedSkillStatusUpdate main(const MainInput& in) override; + MainResult main(const MainInput& in) override; private: FunT fun; diff --git a/source/RobotAPI/libraries/skills/provider/PeriodicSkill.cpp b/source/RobotAPI/libraries/skills/provider/PeriodicSkill.cpp index 1c3038f08..70daa959f 100644 --- a/source/RobotAPI/libraries/skills/provider/PeriodicSkill.cpp +++ b/source/RobotAPI/libraries/skills/provider/PeriodicSkill.cpp @@ -30,62 +30,62 @@ namespace armarx::skills { - PeriodicSkill::PeriodicSkill(const SkillDescription& skillDescription, - const armarx::Frequency& frequency) : + PeriodicSkill::PeriodicSkill(const SkillDescription& skillDescription, const armarx::Frequency& frequency) : Skill(skillDescription), frequency(frequency) { } - ActiveOrTerminatedSkillStatusUpdate PeriodicSkill::stepOfSkill(const MainInput& in) + PeriodicSkill::StepResult PeriodicSkill::stepOfSkill(const MainInput& in) { return this->step(in); } - TerminatedSkillStatusUpdate PeriodicSkill::main(const MainInput& in) + Skill::MainResult PeriodicSkill::main(const MainInput& in) { core::time::Metronome metronome(frequency); while (not Skill::checkWhetherSkillShouldStopASAP()) { - const auto statusUpdate = stepOfSkill(in); - switch (statusUpdate.status) + const auto res = stepOfSkill(in); + switch (res.status) { case ActiveOrTerminatedSkillStatus::Running: // nothing to do here break; case ActiveOrTerminatedSkillStatus::Aborted: - return {{statusUpdate.skillId, statusUpdate.executorName, {statusUpdate.usedParameterization.usedInputParams, statusUpdate.usedParameterization.usedCallbackInterface}, statusUpdate.data}, TerminatedSkillStatus::Aborted}; + return {TerminatedSkillStatus::Aborted, res.data}; case ActiveOrTerminatedSkillStatus::Succeeded: - return {{statusUpdate.skillId, statusUpdate.executorName, {statusUpdate.usedParameterization.usedInputParams, statusUpdate.usedParameterization.usedCallbackInterface}, statusUpdate.data}, TerminatedSkillStatus::Succeeded}; + return {TerminatedSkillStatus::Succeeded, res.data}; case ActiveOrTerminatedSkillStatus::Failed: - return {{statusUpdate.skillId, statusUpdate.executorName, {statusUpdate.usedParameterization.usedInputParams, statusUpdate.usedParameterization.usedCallbackInterface}, statusUpdate.data}, TerminatedSkillStatus::Failed}; + return {TerminatedSkillStatus::Failed, res.data}; } const auto sleepDuration = metronome.waitForNextTick(); if (not sleepDuration.isPositive()) { - ARMARX_INFO << deactivateSpam() << "PeriodicSkill: execution took too long (" << -sleepDuration << " vs " << frequency.toCycleDuration() << ")"; + ARMARX_INFO << deactivateSpam() << "PeriodicSkill: execution took too long (" << -sleepDuration << " too long. Expected " << frequency.toCycleDuration() << ")"; } } if (stopped) { - return {{getSkillId(), in.executorName, {in.params, nullptr}, nullptr}, TerminatedSkillStatus::Aborted}; + return {TerminatedSkillStatus::Aborted, nullptr}; } if (timeoutReached) { - return {{getSkillId(), in.executorName, {in.params, nullptr}, nullptr}, TerminatedSkillStatus::Failed}; + ARMARX_WARNING << "The skill " << getSkillId().toString() << " reached timeout!"; + return {TerminatedSkillStatus::Failed, nullptr}; } throw skills::error::SkillException(__PRETTY_FUNCTION__, "Should not happen!"); } - ActiveOrTerminatedSkillStatusUpdate PeriodicSkill::step(const MainInput& in) + PeriodicSkill::StepResult PeriodicSkill::step(const MainInput& in) { ARMARX_IMPORTANT << "Dummy executing once skill '" << description.skillName << "'. Please overwrite this method!"; - return {{getSkillId(), in.executorName, {in.params, nullptr}, nullptr}, ActiveOrTerminatedSkillStatus::Succeeded}; + return {ActiveOrTerminatedSkillStatus::Succeeded, nullptr}; } } // namespace armarx::skills diff --git a/source/RobotAPI/libraries/skills/provider/PeriodicSkill.h b/source/RobotAPI/libraries/skills/provider/PeriodicSkill.h index 24eb7aa93..5df6e07e9 100644 --- a/source/RobotAPI/libraries/skills/provider/PeriodicSkill.h +++ b/source/RobotAPI/libraries/skills/provider/PeriodicSkill.h @@ -29,19 +29,25 @@ namespace armarx::skills { - class PeriodicSkill : virtual public Skill + class PeriodicSkill : public Skill { public: + struct StepResult + { + ActiveOrTerminatedSkillStatus status; + aron::data::DictPtr data; + }; + PeriodicSkill(const SkillDescription& skillDescription, const armarx::Frequency& frequency); - ActiveOrTerminatedSkillStatusUpdate stepOfSkill(const MainInput& in); + StepResult stepOfSkill(const MainInput& in); private: /// Do not use anymore - TerminatedSkillStatusUpdate main(const MainInput& in) final; + Skill::MainResult main(const MainInput& in) final; /// Override this method with your own step function - virtual ActiveOrTerminatedSkillStatusUpdate step(const MainInput& in); + virtual StepResult step(const MainInput& in); private: const armarx::Frequency frequency; diff --git a/source/RobotAPI/libraries/skills/provider/PeriodicSpecializedSkill.h b/source/RobotAPI/libraries/skills/provider/PeriodicSpecializedSkill.h index 98b1572bc..06efba4d4 100644 --- a/source/RobotAPI/libraries/skills/provider/PeriodicSpecializedSkill.h +++ b/source/RobotAPI/libraries/skills/provider/PeriodicSpecializedSkill.h @@ -25,6 +25,7 @@ #include <ArmarXCore/core/time/Metronome.h> #include "Skill.h" +#include "PeriodicSkill.h" #include "SpecializedSkill.h" namespace armarx::skills @@ -38,6 +39,8 @@ namespace armarx::skills using Skill::description; using Skill::getSkillId; + using StepResult = PeriodicSkill::StepResult; + PeriodicSpecializedSkill() = delete; PeriodicSpecializedSkill(const SkillDescription& skillDescription, const armarx::Frequency& frequency) : Base(skillDescription), frequency(frequency) @@ -45,7 +48,7 @@ namespace armarx::skills } - ActiveOrTerminatedSkillStatusUpdate stepOfSkill(const typename Base::SpecializedMainInput& in) + StepResult stepOfSkill(const typename Base::SpecializedMainInput& in) { return this->step(in); } @@ -55,7 +58,7 @@ namespace armarx::skills using Skill::timeoutReached; /// Do not use anymore - TerminatedSkillStatusUpdate main(const typename Base::SpecializedMainInput& in) final + Skill::MainResult main(const typename Base::SpecializedMainInput& in) final { core::time::Metronome metronome(frequency); @@ -68,38 +71,39 @@ namespace armarx::skills // nothing to do here break; case ActiveOrTerminatedSkillStatus::Aborted: - return {{statusUpdate.skillId, statusUpdate.executorName, {statusUpdate.usedParameterization.usedInputParams, statusUpdate.usedParameterization.usedCallbackInterface}, statusUpdate.data}, TerminatedSkillStatus::Aborted}; + return {TerminatedSkillStatus::Aborted, statusUpdate.data}; case ActiveOrTerminatedSkillStatus::Succeeded: - return {{statusUpdate.skillId, statusUpdate.executorName, {statusUpdate.usedParameterization.usedInputParams, statusUpdate.usedParameterization.usedCallbackInterface}, statusUpdate.data}, TerminatedSkillStatus::Succeeded}; + return {TerminatedSkillStatus::Succeeded, statusUpdate.data}; case ActiveOrTerminatedSkillStatus::Failed: - return {{statusUpdate.skillId, statusUpdate.executorName, {statusUpdate.usedParameterization.usedInputParams, statusUpdate.usedParameterization.usedCallbackInterface}, statusUpdate.data}, TerminatedSkillStatus::Failed}; + return {TerminatedSkillStatus::Failed, statusUpdate.data}; } const auto sleepDuration = metronome.waitForNextTick(); if (not sleepDuration.isPositive()) { - ARMARX_INFO << deactivateSpam() << "PeriodicSkill: execution took too long (" << -sleepDuration << " vs " << frequency.toCycleDuration() << ")"; + ARMARX_INFO << deactivateSpam() << "PeriodicSkill: execution took too long (" << -sleepDuration << " too long. Expected " << frequency.toCycleDuration() << ")"; } } if (stopped) { - return {{getSkillId(), in.executorName, {in.params, nullptr}, nullptr}, TerminatedSkillStatus::Aborted}; + return {TerminatedSkillStatus::Aborted, nullptr}; } if (timeoutReached) { - return {{getSkillId(), in.executorName, {in.params, nullptr}, nullptr}, TerminatedSkillStatus::Failed}; + ARMARX_WARNING << "The skill " << getSkillId().toString() << " reached timeout!"; + return {TerminatedSkillStatus::Failed, nullptr}; } throw skills::error::SkillException(__PRETTY_FUNCTION__, "Should not happen!"); } /// Override this method with your own step function - virtual ActiveOrTerminatedSkillStatusUpdate step(const typename Base::SpecializedMainInput& in) + virtual StepResult step(const typename Base::SpecializedMainInput& in) { ARMARX_IMPORTANT << "Dummy executing once skill '" << description.skillName << "'. Please overwrite this method!"; - return {{getSkillId(), in.executorName, {in.params, nullptr}, nullptr}, ActiveOrTerminatedSkillStatus::Succeeded}; + return {ActiveOrTerminatedSkillStatus::Succeeded, nullptr}; } private: diff --git a/source/RobotAPI/libraries/skills/provider/Skill.cpp b/source/RobotAPI/libraries/skills/provider/Skill.cpp index e4bdd58df..3bac7956d 100644 --- a/source/RobotAPI/libraries/skills/provider/Skill.cpp +++ b/source/RobotAPI/libraries/skills/provider/Skill.cpp @@ -92,7 +92,7 @@ namespace armarx { } - TerminatedSkillStatusUpdate Skill::mainOfSkill(const MainInput& in) + Skill::MainResult Skill::mainOfSkill(const MainInput& in) { this->_main(); return this->main(in); @@ -165,19 +165,19 @@ namespace armarx // Default nothing to exit } - TerminatedSkillStatusUpdate Skill::main(const MainInput& in) + Skill::MainResult Skill::main(const MainInput& in) { // This is just a dummy implementation ARMARX_IMPORTANT << "Dummy executing skill '" << description.skillName << "'. Please overwrite this method."; - return {{getSkillId(), in.executorName, {in.params, nullptr}, nullptr}, TerminatedSkillStatus::Succeeded}; + return {TerminatedSkillStatus::Succeeded, nullptr}; } - TerminatedSkillStatusUpdate Skill::executeFullSkill(const ExecuteInput& in) + Skill::MainResult Skill::executeFullSkill(const MainInput& in) { this->resetSkill(); this->initSkill(InitInput{in.executorName, in.params}); - auto ret = this->mainOfSkill(MainInput{in.executorName, in.params, in.callback}); + auto ret = this->mainOfSkill(in); this->exitSkill(ExitInput{in.executorName, in.params}); return ret; } diff --git a/source/RobotAPI/libraries/skills/provider/Skill.h b/source/RobotAPI/libraries/skills/provider/Skill.h index 32645d4ec..9629f6311 100644 --- a/source/RobotAPI/libraries/skills/provider/Skill.h +++ b/source/RobotAPI/libraries/skills/provider/Skill.h @@ -44,17 +44,16 @@ namespace armarx CallbackT callback; }; - struct ExitInput + struct MainResult { - std::string executorName; - aron::data::DictPtr params; + TerminatedSkillStatus status; + aron::data::DictPtr data; }; - struct ExecuteInput + struct ExitInput { std::string executorName; aron::data::DictPtr params; - CallbackT callback; }; Skill() = delete; @@ -71,7 +70,7 @@ namespace armarx void resetSkill(); void waitForDependenciesOfSkill(); void initSkill(const InitInput& in); - TerminatedSkillStatusUpdate mainOfSkill(const MainInput& in); + MainResult mainOfSkill(const MainInput& in); void exitSkill(const ExitInput& in); // used to notify the skill from extern to stop @@ -81,7 +80,7 @@ namespace armarx bool checkWhetherSkillShouldStopASAP() const; /// Do all methods at once. - TerminatedSkillStatusUpdate executeFullSkill(const ExecuteInput& in); + MainResult executeFullSkill(const MainInput& in); protected: // fires if the skill reaches timeout @@ -103,7 +102,7 @@ namespace armarx virtual void init(const InitInput& in); /// Override this method with the actual implementation. The callback is for status updates to the calling instance - virtual TerminatedSkillStatusUpdate main(const MainInput& in); + virtual MainResult main(const MainInput& in); /// Override this method with the actual implementation. virtual void exit(const ExitInput& in); @@ -115,8 +114,8 @@ namespace armarx /// Override this method if you have own conditions to abort the skill as soon as possible virtual bool notifySkillToStopASAPCustom() const; - private: - /// install a condition + protected: + /// install a condition which is frequently checked from the conditionCheckingThread void installCondition(std::function<bool()>&& f, std::function<void()>&& cb); public: diff --git a/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.h b/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.h index badf2e127..c018ecd9a 100644 --- a/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.h +++ b/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.h @@ -13,7 +13,14 @@ #include <RobotAPI/interface/skills/SkillManagerInterface.h> #include <RobotAPI/libraries/aron/core/data/variant/container/Dict.h> +// Include all types of skills +#include "Skill.h" +#include "SpecializedSkill.h" #include "LambdaSkill.h" +#include "PeriodicSkill.h" +#include "PeriodicSpecializedSkill.h" + +// Helper wrapper for execution #include "detail/SkillImplementationWrapper.h" namespace armarx::plugins diff --git a/source/RobotAPI/libraries/skills/provider/SkillProxy.cpp b/source/RobotAPI/libraries/skills/provider/SkillProxy.cpp index c75cbeb47..e0ebdb3b6 100644 --- a/source/RobotAPI/libraries/skills/provider/SkillProxy.cpp +++ b/source/RobotAPI/libraries/skills/provider/SkillProxy.cpp @@ -10,6 +10,12 @@ namespace armarx { } + SkillProxy::SkillProxy(const manager::dti::SkillManagerInterfacePrx& manager, const std::string& skillProviderName, const std::string& skillName) : + manager(manager), + skillId(skillProviderName, skillName) + { + } + SkillProxy::SkillProxy(const manager::dti::SkillManagerInterfacePrx& manager, const std::string& skillProviderName, const SkillDescription& skillDesc) : manager(manager), skillId(skillProviderName, skillDesc.skillName) diff --git a/source/RobotAPI/libraries/skills/provider/SkillProxy.h b/source/RobotAPI/libraries/skills/provider/SkillProxy.h index b4eaf0186..6e8ddc5c7 100644 --- a/source/RobotAPI/libraries/skills/provider/SkillProxy.h +++ b/source/RobotAPI/libraries/skills/provider/SkillProxy.h @@ -11,6 +11,7 @@ namespace armarx { public: SkillProxy(const manager::dti::SkillManagerInterfacePrx& manager, const SkillID& skillId); + SkillProxy(const manager::dti::SkillManagerInterfacePrx& manager, const std::string& skillProviderName, const std::string& skillName); SkillProxy(const manager::dti::SkillManagerInterfacePrx& manager, const std::string& skillProviderName, const SkillDescription& skillDesc); TerminatedSkillStatusUpdate executeFullSkill(const std::string& executorName, const aron::data::DictPtr& params = nullptr); diff --git a/source/RobotAPI/libraries/skills/provider/SpecializedSkill.h b/source/RobotAPI/libraries/skills/provider/SpecializedSkill.h index 735f5f8e4..80752a235 100644 --- a/source/RobotAPI/libraries/skills/provider/SpecializedSkill.h +++ b/source/RobotAPI/libraries/skills/provider/SpecializedSkill.h @@ -36,13 +36,6 @@ namespace armarx AronT params; }; - struct SpecializedExecuteInput - { - std::string executorName; - AronT params; - CallbackT callback; - }; - using Skill::Skill; virtual ~SpecializedSkill() = default; @@ -57,7 +50,7 @@ namespace armarx Skill::_init(); this->init(in); } - TerminatedSkillStatusUpdate mainOfSkill(const SpecializedMainInput& in) + Skill::MainResult mainOfSkill(const SpecializedMainInput& in) { Skill::_main(); return this->main(in); @@ -68,11 +61,11 @@ namespace armarx this->exit(in); } - TerminatedSkillStatusUpdate executeFullSkill(const SpecializedExecuteInput& in) + Skill::MainResult executeFullSkill(const SpecializedMainInput& in) { this->resetSkill(); this->initSkill(SpecializedInitInput({in.executorName, in.params})); - auto ret = this->mainOfSkill(SpecializedMainInput({in.executorName, in.params, in.callback})); + auto ret = this->mainOfSkill(in); this->exit(SpecializedExitInput({in.executorName, in.params})); return ret; } @@ -84,10 +77,10 @@ namespace armarx } /// Override this method with the actual implementation. The callback is for status updates to the calling instance - virtual TerminatedSkillStatusUpdate main(const SpecializedMainInput& in) + virtual Skill::MainResult main(const SpecializedMainInput& in) { ARMARX_IMPORTANT << "Dummy executing skill '" << description.skillName << "'. Please overwrite this method."; - return {{getSkillId(), in.executorName, {in.params, nullptr}, nullptr}, TerminatedSkillStatus::Succeeded}; + return {TerminatedSkillStatus::Succeeded, nullptr}; } /// Override this method with the actual implementation. The callback is for status updates to the calling instance @@ -96,7 +89,7 @@ namespace armarx } /// Do not use anymore - TerminatedSkillStatusUpdate main(const MainInput& in) final + Skill::MainResult main(const MainInput& in) final { AronT p; p.fromAron(in.params); diff --git a/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp b/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp index 9afb52542..e5516749d 100644 --- a/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp +++ b/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp @@ -24,15 +24,16 @@ namespace armarx statusUpdate.data = nullptr; statusUpdate.executorName = ""; }; - resetExecParam(); // set params and setup variables - auto setParams = [&](){ + auto setExecParams = [&](){ std::lock_guard l(skillStatusMutex); statusUpdate.usedParameterization = parameterization; statusUpdate.executorName = executorName; }; - setParams(); + + resetExecParam(); + setExecParams(); auto& aron_params = parameterization.usedInputParams; auto updateStatus = [&](const SkillStatus status, const aron::data::DictPtr& data = nullptr){ @@ -50,13 +51,20 @@ namespace armarx // Check params - if (not(aron_params) && skill->description.acceptedType) + if (skill->description.acceptedType && not(aron_params)) { ARMARX_ERROR_S << "The Skill '" + skillName + "' requires a type but params are NULL."; resetExecParam(); return TerminatedSkillStatusUpdate({{skill->getSkillId(), executorName, parameterization, nullptr}, TerminatedSkillStatus::Failed}); } + if (skill->description.acceptedType && aron_params && not(aron_params->fullfillsType(skill->description.acceptedType))) + { + ARMARX_ERROR_S << "The Skill '" + skillName + "' has a type and got parameters but the input does not match the type."; + resetExecParam(); + return TerminatedSkillStatusUpdate({{skill->getSkillId(), executorName, parameterization, nullptr}, TerminatedSkillStatus::Failed}); + } + // set scheduled updateStatus(SkillStatus::Scheduled); @@ -67,7 +75,7 @@ namespace armarx } catch (const std::exception& ex) { - ARMARX_ERROR_S << "An errr occured during the reset of skill '" << skillName << "'. The error was: " << ex.what(); + ARMARX_ERROR_S << "An error occured during the reset of skill '" << skillName << "'. The error was: " << ex.what(); updateStatus(SkillStatus::Failed); resetExecParam(); @@ -80,7 +88,7 @@ namespace armarx } catch (const std::exception& ex) { - ARMARX_ERROR_S << "An errr occured during waiting for skill dependencies of skill '" << skillName << "'. The error was: " << ex.what(); + ARMARX_ERROR_S << "An error occured during waiting for skill dependencies of skill '" << skillName << "'. The error was: " << ex.what(); updateStatus(SkillStatus::Failed); resetExecParam(); @@ -96,7 +104,7 @@ namespace armarx } catch (const std::exception& ex) { - ARMARX_ERROR_S << "An errr occured during the initialization of skill '" << skillName << "'. Executing exit for safety. The error was: " << ex.what(); + ARMARX_ERROR_S << "An error occured during the initialization of skill '" << skillName << "'. Executing exit for safety. The error was: " << ex.what(); skill->exitSkill({executorName, aron_params}); updateStatus(SkillStatus::Failed); @@ -104,17 +112,18 @@ namespace armarx return TerminatedSkillStatusUpdate({{skill->getSkillId(), executorName, parameterization, nullptr}, TerminatedSkillStatus::Failed}); } - TerminatedSkillStatusUpdate ret; + Skill::MainResult ret; try { - ret = skill->mainOfSkill({executorName, aron_params, [&](const aron::data::DictPtr& update) + ret = skill->mainOfSkill({executorName, aron_params, [&updateStatus](const aron::data::DictPtr& update) { - updateStatus(statusUpdate.status, update); + // during execution the statusUpdate.status is always RUNNING + updateStatus(SkillStatus::Running, update); }}); } catch (const std::exception& ex) { - ARMARX_ERROR_S << "An errr occured during the main method of skill '" << skillName << "'. Executing exit for safety. The error was: " << ex.what(); + ARMARX_ERROR_S << "An error occured during the main method of skill '" << skillName << "'. Executing exit for safety. The error was: " << ex.what(); skill->exitSkill({executorName, aron_params}); updateStatus(SkillStatus::Failed); @@ -128,23 +137,20 @@ namespace armarx } catch (const std::exception& ex) { - ARMARX_ERROR_S << "An errr occured during the exit of skill '" << skillName << "'." << ex.what(); + ARMARX_ERROR_S << "An error occured during the exit of skill '" << skillName << "'." << ex.what(); updateStatus(SkillStatus::Failed); resetExecParam(); return TerminatedSkillStatusUpdate({{skill->getSkillId(), executorName, parameterization, nullptr}, TerminatedSkillStatus::Failed}); } + // Also log return value and update status using callback switch (ret.status) { case TerminatedSkillStatus::Failed: ARMARX_INFO_S << ("The Skill '" + skillName + "' failed during execution."); updateStatus(SkillStatus::Failed); break; - //case TerminatedSkillStatus::TimeoutReached: - // ARMARX_INFO_S << ("The Skill '" + skillName + "' reached timeout during execution."); - // updateStatus(SkillStatus::Failed); - // break; case TerminatedSkillStatus::Aborted: { ARMARX_INFO_S << ("The Skill '" + skillName + "' got stopped."); @@ -159,7 +165,7 @@ namespace armarx } resetExecParam(); - return ret; + return {{skill->getSkillId(), executorName, parameterization, ret.data}, ret.status}; } } } diff --git a/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.h b/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.h index e002dbb6e..982bcc366 100644 --- a/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.h +++ b/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.h @@ -32,7 +32,8 @@ namespace armarx // ctor SkillImplementationWrapper(std::unique_ptr<skills::Skill>&& skill); - // execute a skill. The parameterization is copied + // execute a skill. The parameterization is copied. T + // the return type additionally contains the input configuration (similar to the status updates used in callbacks) TerminatedSkillStatusUpdate setupAndExecuteSkill(const std::string& executorName, const skills::SkillParameterization); }; } diff --git a/source/RobotAPI/libraries/skills/provider/mixins/All.h b/source/RobotAPI/libraries/skills/provider/mixins/All.h new file mode 100644 index 000000000..7f74ab14f --- /dev/null +++ b/source/RobotAPI/libraries/skills/provider/mixins/All.h @@ -0,0 +1,7 @@ +#include "ArvizSkillMixin.h" +#include "MNSSkillMixin.h" +#include "GraspReadingSkillMixin.h" +#include "MemoryReadingSkillMixin.h" +#include "ObjectReadingSkillMixin.h" +#include "ObjectWritingSkillMixin.h" +#include "RobotReadingSkillMixin.h" diff --git a/source/RobotAPI/libraries/skills/provider/mixins/ArvizSkillMixin.h b/source/RobotAPI/libraries/skills/provider/mixins/ArvizSkillMixin.h new file mode 100644 index 000000000..7b77cb543 --- /dev/null +++ b/source/RobotAPI/libraries/skills/provider/mixins/ArvizSkillMixin.h @@ -0,0 +1,26 @@ +#pragma once + + +// Others +#include <RobotAPI/libraries/RobotAPIComponentPlugins/ArVizComponentPlugin.h> + +namespace armarx::skills::mixin +{ + struct ArvizSkillMixin + { + armarx::viz::Client arviz; + std::string layerName; + + ArvizSkillMixin(const armarx::viz::Client& a, const std::string& ln) : + arviz(a), + layerName(ln) + { + } + + void clearLayer() + { + auto l = arviz.layer(layerName); + arviz.commit(l); + } + }; +} diff --git a/source/RobotAPI/libraries/skills/provider/mixins/GraspReadingSkillMixin.h b/source/RobotAPI/libraries/skills/provider/mixins/GraspReadingSkillMixin.h new file mode 100644 index 000000000..d69f390da --- /dev/null +++ b/source/RobotAPI/libraries/skills/provider/mixins/GraspReadingSkillMixin.h @@ -0,0 +1,25 @@ +#pragma once + + +// Others +#include <RobotAPI/libraries/armem_grasping/client/KnownGraspCandidateReader.h> + +namespace armarx::skills::mixin +{ + struct GraspReadingSkillMixin + { + armem::grasping::known_grasps::Reader graspReader; + + GraspReadingSkillMixin(armem::client::MemoryNameSystem& mns) : graspReader(mns) + {} + }; + + struct SpecificGraspReadingSkillMixin + { + std::string objectEntityId; + armem::grasping::known_grasps::Reader graspReader; + + SpecificGraspReadingSkillMixin(const std::string& n, armem::client::MemoryNameSystem& mns) : objectEntityId(n), graspReader(mns) + {} + }; +} diff --git a/source/RobotAPI/libraries/skills/provider/mixins/MNSSkillMixin.h b/source/RobotAPI/libraries/skills/provider/mixins/MNSSkillMixin.h new file mode 100644 index 000000000..f0bde8bdf --- /dev/null +++ b/source/RobotAPI/libraries/skills/provider/mixins/MNSSkillMixin.h @@ -0,0 +1,16 @@ +#pragma once + + +// Others +#include <RobotAPI/libraries/armem/client/MemoryNameSystem.h> + +namespace armarx::skills::mixin +{ + struct MNSSkillMixin + { + armem::client::MemoryNameSystem mns; + + MNSSkillMixin(const armem::client::MemoryNameSystem& m) : mns(m) + {} + }; +} diff --git a/source/RobotAPI/libraries/skills/provider/mixins/MemoryReadingSkillMixin.h b/source/RobotAPI/libraries/skills/provider/mixins/MemoryReadingSkillMixin.h new file mode 100644 index 000000000..214fbac44 --- /dev/null +++ b/source/RobotAPI/libraries/skills/provider/mixins/MemoryReadingSkillMixin.h @@ -0,0 +1,16 @@ +#pragma once + + +// Others +#include <RobotAPI/libraries/armem/client/Reader.h> + +namespace armarx::skills::mixin +{ + struct MemoryReadingSkillMixin + { + armem::client::Reader memoryReader; + + //MemoryReadingSkillMixin(armem::client::MemoryNameSystem& mns) : memoryReader(mns) + //{} + }; +} diff --git a/source/RobotAPI/libraries/skills/provider/mixins/ObjectReadingSkillMixin.h b/source/RobotAPI/libraries/skills/provider/mixins/ObjectReadingSkillMixin.h new file mode 100644 index 000000000..de5ef34b1 --- /dev/null +++ b/source/RobotAPI/libraries/skills/provider/mixins/ObjectReadingSkillMixin.h @@ -0,0 +1,25 @@ +#pragma once + + +// Others +#include <RobotAPI/libraries/armem_objects/client/instance/ObjectReader.h> + +namespace armarx::skills::mixin +{ + struct ObjectReadingSkillMixin + { + armem::obj::instance::Reader objectReader; + + ObjectReadingSkillMixin(armem::client::MemoryNameSystem& mns, const objpose::ObjectPoseProviderPrx& o) : objectReader(mns, o) + {} + }; + + struct SpecificObjectReadingSkillMixin + { + std::string objectEntityId; + armem::obj::instance::Reader objectReader; + + SpecificObjectReadingSkillMixin(const std::string& n, armem::client::MemoryNameSystem& mns, const objpose::ObjectPoseProviderPrx& o) : objectEntityId(n), objectReader(mns, o) + {} + }; +} diff --git a/source/RobotAPI/libraries/skills/provider/mixins/ObjectWritingSkillMixin.h b/source/RobotAPI/libraries/skills/provider/mixins/ObjectWritingSkillMixin.h new file mode 100644 index 000000000..edf8e6a2e --- /dev/null +++ b/source/RobotAPI/libraries/skills/provider/mixins/ObjectWritingSkillMixin.h @@ -0,0 +1,16 @@ +#pragma once + + +// Others +#include <RobotAPI/libraries/armem_objects/client/instance/ObjectWriter.h> + +namespace armarx::skills::mixin +{ + struct ObjectWritingSkillMixin + { + armem::obj::instance::Writer objectWriter; + + ObjectWritingSkillMixin(armem::client::MemoryNameSystem& mns) : objectWriter(mns) + {} + }; +} diff --git a/source/RobotAPI/libraries/skills/provider/mixins/RobotReadingSkillMixin.h b/source/RobotAPI/libraries/skills/provider/mixins/RobotReadingSkillMixin.h new file mode 100644 index 000000000..631491ddc --- /dev/null +++ b/source/RobotAPI/libraries/skills/provider/mixins/RobotReadingSkillMixin.h @@ -0,0 +1,28 @@ +#pragma once + + +// Others +#include <RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.h> + +namespace armarx::skills::mixin +{ + struct RobotReadingSkillMixin + { + armem::robot_state::VirtualRobotReader robotReader; + + RobotReadingSkillMixin(armem::client::MemoryNameSystem& mns) : + robotReader(mns) + {} + }; + + struct SpecificRobotReadingSkillMixin + { + std::string robotName; + armem::robot_state::VirtualRobotReader robotReader; + + SpecificRobotReadingSkillMixin(const std::string& rn, armem::client::MemoryNameSystem& mns) : + robotName(rn), + robotReader(mns) + {} + }; +} diff --git a/source/RobotAPI/libraries/skills/provider/util/All.h b/source/RobotAPI/libraries/skills/provider/util/All.h deleted file mode 100644 index bd64c524c..000000000 --- a/source/RobotAPI/libraries/skills/provider/util/All.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "ArvizSkillUtil.h" -#include "GraspReadingSkillUtil.h" -#include "MemoryReadingSkillUtil.h" -#include "ObjectReadingSkillUtil.h" -#include "ObjectWritingSkillUtil.h" -#include "RobotReadingSkillUtil.h" diff --git a/source/RobotAPI/libraries/skills/provider/util/ArvizSkillUtil.h b/source/RobotAPI/libraries/skills/provider/util/ArvizSkillUtil.h deleted file mode 100644 index 10a21b73d..000000000 --- a/source/RobotAPI/libraries/skills/provider/util/ArvizSkillUtil.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - - -// Others -#include <RobotAPI/libraries/RobotAPIComponentPlugins/ArVizComponentPlugin.h> - -namespace armarx::skills::util -{ - struct ArvizSkillUtil - { - armarx::viz::Client& arviz; - std::string layerName; - - void clearLayer() const - { - auto l = arviz.layer(layerName); - arviz.commit(l); - } - }; -} diff --git a/source/RobotAPI/libraries/skills/provider/util/GraspReadingSkillUtil.h b/source/RobotAPI/libraries/skills/provider/util/GraspReadingSkillUtil.h deleted file mode 100644 index b48b2c98f..000000000 --- a/source/RobotAPI/libraries/skills/provider/util/GraspReadingSkillUtil.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - - -// Others -#include <RobotAPI/libraries/armem_grasping/client/KnownGraspCandidateReader.h> - -namespace armarx::skills::util -{ - struct GraspReadingSkillUtil - { - armem::grasping::known_grasps::Reader& graspReader; - }; - - struct SpecificGraspReadingSkillUtil - { - std::string objectEntityId; - - armem::grasping::known_grasps::Reader& graspReader; - }; -} diff --git a/source/RobotAPI/libraries/skills/provider/util/MemoryReadingSkillUtil.h b/source/RobotAPI/libraries/skills/provider/util/MemoryReadingSkillUtil.h deleted file mode 100644 index 0282ae15b..000000000 --- a/source/RobotAPI/libraries/skills/provider/util/MemoryReadingSkillUtil.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - - -// Others -#include <RobotAPI/libraries/armem/client/Reader.h> - -namespace armarx::skills::util -{ - struct MemoryReadingSkillUtil - { - armem::client::Reader& memoryReader; - }; -} diff --git a/source/RobotAPI/libraries/skills/provider/util/ObjectReadingSkillUtil.h b/source/RobotAPI/libraries/skills/provider/util/ObjectReadingSkillUtil.h deleted file mode 100644 index 5c421a931..000000000 --- a/source/RobotAPI/libraries/skills/provider/util/ObjectReadingSkillUtil.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - - -// Others -#include <RobotAPI/libraries/armem_objects/client/instance/ObjectReader.h> - -namespace armarx::skills::util -{ - struct ObjectReadingSkillUtil - { - armem::obj::instance::Reader& objectReader; - }; - - struct SpecificObjectReadingSkillUtil - { - std::string objectEntityId; - - armem::obj::instance::Reader& objectReader; - }; -} diff --git a/source/RobotAPI/libraries/skills/provider/util/ObjectWritingSkillUtil.h b/source/RobotAPI/libraries/skills/provider/util/ObjectWritingSkillUtil.h deleted file mode 100644 index 25297bb3d..000000000 --- a/source/RobotAPI/libraries/skills/provider/util/ObjectWritingSkillUtil.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - - -// Others -#include <RobotAPI/libraries/armem_objects/client/instance/ObjectWriter.h> - -namespace armarx::skills::util -{ - struct ObjectWritingSkillUtil - { - armem::obj::instance::Writer& objectWriter; - }; -} diff --git a/source/RobotAPI/libraries/skills/provider/util/RobotReadingSkillUtil.h b/source/RobotAPI/libraries/skills/provider/util/RobotReadingSkillUtil.h deleted file mode 100644 index c5777100d..000000000 --- a/source/RobotAPI/libraries/skills/provider/util/RobotReadingSkillUtil.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - - -// Others -#include <RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.h> - -namespace armarx::skills::util -{ - struct RobotReadingSkillUtil - { - armem::robot_state::VirtualRobotReader& robotReader; - }; - - struct SpecificRobotReadingSkillUtil - { - std::string robotName; - armem::robot_state::VirtualRobotReader& robotReader; - }; -} -- GitLab