From e4f40cb2410146eb81b3492e9178c09978af93e0 Mon Sep 17 00:00:00 2001 From: Fabian Peller <fabian.peller-konrad@kit.edu> Date: Tue, 17 Oct 2023 19:14:08 +0200 Subject: [PATCH] added simple skill classes for periodic skills --- .../skills/provider/SimplePeriodicSkill.cpp | 21 ++++++++ .../skills/provider/SimplePeriodicSkill.h | 30 +++++++++++ .../SimplePeriodicSpecializedSkill.cpp | 6 +++ .../provider/SimplePeriodicSpecializedSkill.h | 51 +++++++++++++++++++ 4 files changed, 108 insertions(+) create mode 100644 source/RobotAPI/libraries/skills/provider/SimplePeriodicSkill.cpp create mode 100644 source/RobotAPI/libraries/skills/provider/SimplePeriodicSkill.h create mode 100644 source/RobotAPI/libraries/skills/provider/SimplePeriodicSpecializedSkill.cpp create mode 100644 source/RobotAPI/libraries/skills/provider/SimplePeriodicSpecializedSkill.h diff --git a/source/RobotAPI/libraries/skills/provider/SimplePeriodicSkill.cpp b/source/RobotAPI/libraries/skills/provider/SimplePeriodicSkill.cpp new file mode 100644 index 000000000..d5f8e6cbd --- /dev/null +++ b/source/RobotAPI/libraries/skills/provider/SimplePeriodicSkill.cpp @@ -0,0 +1,21 @@ +#include "SimplePeriodicSkill.h" + +namespace armarx::skills +{ + + PeriodicSkill::StepResult SimplePeriodicSkill::step() + { + StepInput i; + i.executorName = this->executorName; + i.parameters = this->parameters; + i.callback = this->callback; + return this->step(i); + } + + PeriodicSkill::StepResult SimplePeriodicSkill::step(const StepInput& in) + { + ARMARX_IMPORTANT << "Dummy executing once skill '" << description.skillId + << "'. Please overwrite this method!"; + return {ActiveOrTerminatedSkillStatus::Succeeded, nullptr}; + } +} diff --git a/source/RobotAPI/libraries/skills/provider/SimplePeriodicSkill.h b/source/RobotAPI/libraries/skills/provider/SimplePeriodicSkill.h new file mode 100644 index 000000000..69a7ccc18 --- /dev/null +++ b/source/RobotAPI/libraries/skills/provider/SimplePeriodicSkill.h @@ -0,0 +1,30 @@ +#pragma once + +#include <RobotAPI/libraries/skills/provider/PeriodicSkill.h> + +namespace armarx +{ + namespace skills + { + class SimplePeriodicSkill : public PeriodicSkill + { + public: + using Base = PeriodicSkill; + + struct StepInput + { + std::string executorName; + aron::data::DictPtr parameters; + CallbackT callback; + }; + + using Base::Base; + + protected: + StepResult step() final; + + virtual StepResult step(const StepInput& in); + + }; + } // namespace skills +} // namespace armarx diff --git a/source/RobotAPI/libraries/skills/provider/SimplePeriodicSpecializedSkill.cpp b/source/RobotAPI/libraries/skills/provider/SimplePeriodicSpecializedSkill.cpp new file mode 100644 index 000000000..a04c2b3d8 --- /dev/null +++ b/source/RobotAPI/libraries/skills/provider/SimplePeriodicSpecializedSkill.cpp @@ -0,0 +1,6 @@ +#include "SimplePeriodicSpecializedSkill.h" + +namespace armarx::skills +{ + +} diff --git a/source/RobotAPI/libraries/skills/provider/SimplePeriodicSpecializedSkill.h b/source/RobotAPI/libraries/skills/provider/SimplePeriodicSpecializedSkill.h new file mode 100644 index 000000000..221fdc2c7 --- /dev/null +++ b/source/RobotAPI/libraries/skills/provider/SimplePeriodicSpecializedSkill.h @@ -0,0 +1,51 @@ +#pragma once + +#include <RobotAPI/libraries/skills/provider/PeriodicSpecializedSkill.h> + +namespace armarx +{ + namespace skills + { + template <class AronT> + class SimplePeriodicSpecializedSkill : public PeriodicSpecializedSkill<AronT> + { + + public: + using Base = PeriodicSpecializedSkill<AronT>; + using Skill::description; + using Skill::getSkillId; + + using StepResult = PeriodicSkill::StepResult; + + using Base::Base; + + struct SpecializedStepInput + { + std::string executorName; + AronT parameters; + Skill::CallbackT callback; + }; + + protected: + StepResult step() final + { + AronT p; + p.fromAron(this->parameters); + + SpecializedStepInput i; + i.executorName = this->executorName; + i.parameters = p; + i.callback = this->callback; + return this->step(i); + } + + virtual StepResult step(const SpecializedStepInput& in) + { + ARMARX_IMPORTANT << "Dummy executing once skill '" << description.skillId + << "'. Please overwrite this method!"; + return {ActiveOrTerminatedSkillStatus::Succeeded, nullptr}; + } + + }; + } // namespace skills +} // namespace armarx -- GitLab