diff --git a/source/RobotAPI/interface/CMakeLists.txt b/source/RobotAPI/interface/CMakeLists.txt index be1193d665db683b844d28d60662e8e3088eec70..2913cd662cf51c48ef7315c930f5c48434eb7618 100644 --- a/source/RobotAPI/interface/CMakeLists.txt +++ b/source/RobotAPI/interface/CMakeLists.txt @@ -110,6 +110,7 @@ set(SLICE_FILES armem/io.ice armem/commit.ice armem/memory.ice + armem/predictions.ice armem/query.ice armem/client.ice @@ -120,7 +121,7 @@ set(SLICE_FILES armem/server/StoringMemoryInterface.ice armem/server/LoadingMemoryInterface.ice armem/server/MemoryInterface.ice - armem/server/MemoryPredictorInterface.ice + armem/server/PredictingMemoryInterface.ice armem/server/ReadingMemoryInterface.ice armem/server/WritingMemoryInterface.ice diff --git a/source/RobotAPI/interface/armem/predictions.ice b/source/RobotAPI/interface/armem/predictions.ice new file mode 100644 index 0000000000000000000000000000000000000000..5748a11cf660fa31ed6d73dcd156aa70ad552521 --- /dev/null +++ b/source/RobotAPI/interface/armem/predictions.ice @@ -0,0 +1,20 @@ +#pragma once + +module armarx +{ + module armem + { + module predictions + { + module data + { + struct PredictionSettings + { + string predictionEngine = ""; + }; + + sequence<string> PredictionEngineSeq; + }; + }; + }; +}; diff --git a/source/RobotAPI/interface/armem/server.ice b/source/RobotAPI/interface/armem/server.ice index 4d9b0bce81301a18163bbe831c814577d8ab4f3b..5c7a32c4734ede6124ba8c4e028ce3dcd98bb556 100644 --- a/source/RobotAPI/interface/armem/server.ice +++ b/source/RobotAPI/interface/armem/server.ice @@ -3,3 +3,4 @@ #include <RobotAPI/interface/armem/server/MemoryInterface.ice> #include <RobotAPI/interface/armem/server/ReadingMemoryInterface.ice> #include <RobotAPI/interface/armem/server/WritingMemoryInterface.ice> +#include <RobotAPI/interface/armem/server/PredictingMemoryInterface.ice> diff --git a/source/RobotAPI/interface/armem/server/MemoryInterface.ice b/source/RobotAPI/interface/armem/server/MemoryInterface.ice index 05b2ea8c54207f6bcfa7a2d708f8fd7e59df416b..2c6c1e14c5e2ff31ee61006cae3b9ebd6788c534 100644 --- a/source/RobotAPI/interface/armem/server/MemoryInterface.ice +++ b/source/RobotAPI/interface/armem/server/MemoryInterface.ice @@ -5,6 +5,8 @@ #include <RobotAPI/interface/armem/server/ReadingMemoryInterface.ice> #include <RobotAPI/interface/armem/server/WritingMemoryInterface.ice> +#include <RobotAPI/interface/armem/server/PredictingMemoryInterface.ice> + #include <RobotAPI/interface/armem/server/ActionsInterface.ice> #include <RobotAPI/interface/armem/client/MemoryListenerInterface.ice> @@ -27,6 +29,7 @@ module armarx interface MemoryInterface extends WorkingMemoryInterface, LongTermMemoryInterface, + PredictingMemoryInterface, actions::ActionsInterface, client::MemoryListenerInterface { diff --git a/source/RobotAPI/interface/armem/server/MemoryPredictorInterface.ice b/source/RobotAPI/interface/armem/server/MemoryPredictorInterface.ice deleted file mode 100644 index 42920804f6d80d9e79151600864dc50e3b0c7aa3..0000000000000000000000000000000000000000 --- a/source/RobotAPI/interface/armem/server/MemoryPredictorInterface.ice +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include <RobotAPI/interface/armem/server/ReadingMemoryInterface.ice> -#include <RobotAPI/interface/armem/server/WritingMemoryInterface.ice> - -module armarx { - module armem { - module server { - interface MemoryPredictorInterface - { - // TODO - void predict(); - } - }; - }; -}; diff --git a/source/RobotAPI/interface/armem/server/PredictingMemoryInterface.ice b/source/RobotAPI/interface/armem/server/PredictingMemoryInterface.ice new file mode 100644 index 0000000000000000000000000000000000000000..2a805895d5cb8daff5674b294114ab8b47dd563c --- /dev/null +++ b/source/RobotAPI/interface/armem/server/PredictingMemoryInterface.ice @@ -0,0 +1,23 @@ +#pragma once + +#include <RobotAPI/interface/armem/memory.ice> +#include <RobotAPI/interface/armem/predictions.ice> +#include <RobotAPI/interface/armem/query.ice> + +module armarx +{ + module armem + { + module server + { + interface PredictingMemoryInterface + { + armem::query::data::Result + predict(armem::data::MemoryID memoryID, + predictions::data::PredictionSettings predictionSettings); + + predictions::data::PredictionEngineSeq getAvailableEngines(); + } + }; + }; +}; diff --git a/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.cpp b/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.cpp index 41e09c13be1cbc68f0281023596be9c275f16dc5..4ce314f5a5409368ae41b33d0a6eb68903553077 100644 --- a/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.cpp +++ b/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.cpp @@ -117,4 +117,19 @@ namespace armarx::armem::server::plugins return {}; } + // PREDICTIONS + armem::query::data::Result ReadWritePluginUser::predict(const data::MemoryID& /*memoryID*/, const armem::predictions::data::PredictionSettings& /*predictionSettings*/, const ::Ice::Current& /*unused*/) + { + armem::query::data::Result result; + result.success = false; + result.errorMessage = "This memory does not implement predictions."; + result.memory = nullptr; + return result; + } + + armem::predictions::data::PredictionEngineSeq ReadWritePluginUser::getAvailableEngines(const ::Ice::Current& /*unused*/) + { + return {}; + } + } // namespace armarx::armem::server::plugins diff --git a/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.h b/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.h index 83e761281bf064a111a90efe15a9148689daa2ff..3ecd8915fcc67d824ab71b9b340a4dd6fbf4093c 100644 --- a/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.h +++ b/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.h @@ -55,6 +55,10 @@ namespace armarx::armem::server::plugins virtual armem::actions::GetActionsOutputSeq getActions(const armem::actions::GetActionsInputSeq& inputs, const ::Ice::Current&) override; virtual armem::actions::ExecuteActionOutputSeq executeActions(const armem::actions::ExecuteActionInputSeq& inputs, const ::Ice::Current&) override; + // PredictingInterface interface + virtual armem::query::data::Result predict(const data::MemoryID& memoryID, const armem::predictions::data::PredictionSettings& predictionSettings, const ::Ice::Current& = Ice::emptyCurrent) override; + virtual armem::predictions::data::PredictionEngineSeq getAvailableEngines(const ::Ice::Current& = Ice::emptyCurrent) override; + public: Plugin& memoryServerPlugin();