Skip to content
Snippets Groups Projects
Verified Commit ca7ac9fd authored by Peter Albrecht's avatar Peter Albrecht :monkey:
Browse files

feat: parameter history

parent 9abdac88
No related branches found
No related tags found
1 merge request!512Skill-Gui Stability and QOL
Checking pipeline status
#include "SkillManagerWrapper.h" #include "SkillManagerWrapper.h"
#include <mutex> #include <mutex>
#include <optional>
#include <SimoxUtility/algorithm/string/string_tools.h> #include <SimoxUtility/algorithm/string/string_tools.h>
...@@ -241,6 +242,39 @@ namespace armarx::skills::gui ...@@ -241,6 +242,39 @@ namespace armarx::skills::gui
// notify registered widgets of update // notify registered widgets of update
emit updateAvailable(filterUpdate(snapshot)); emit updateAvailable(filterUpdate(snapshot));
} }
std::vector<Parameters> SkillManagerWrapper::getParameterHistoryForSkill(const skills::SkillID& sid) const
{
if (not this->skillParameterHistory.contains(sid))
{
return {};
}
return this->skillParameterHistory[sid];
}
void SkillManagerWrapper::addParametersToHistory(const skills::SkillID& sid, const Parameters& params)
{
if (not this->skillParameterHistory.contains(sid))
{
// no history exists for this skill. Assign new
this->skillParameterHistory.insert({sid, {params}});
}
else
{
// history already exists. Append to list
this->skillParameterHistory[sid].emplace_back(params);
}
}
std::optional<Parameters> SkillManagerWrapper::getLatestParametersForSkill(const skills::SkillID& sid) const
{
auto parameterList = getParameterHistoryForSkill(sid);
if (parameterList.empty())
{
return std::nullopt;
}
return parameterList.back();
}
const std::optional<ProviderID> const std::optional<ProviderID>
SkillManagerWrapper::findFirstProvider(SkillMap const& map, SkillID const& skillId) SkillManagerWrapper::findFirstProvider(SkillMap const& map, SkillID const& skillId)
...@@ -391,8 +425,11 @@ namespace armarx::skills::gui ...@@ -391,8 +425,11 @@ namespace armarx::skills::gui
.parameters = params}; .parameters = params};
ARMARX_CHECK(skillId.isFullySpecified()); // sanity check ARMARX_CHECK(skillId.isFullySpecified()); // sanity check
ARMARX_IMPORTANT << "Executing skill from GUI: " << skillId << ".";
this->addParametersToHistory(skillId, params);
ARMARX_INFO << "Saved skill parameters to history...";
ARMARX_IMPORTANT << "Executing skill from GUI: " << skillId << ".";
try try
{ {
std::scoped_lock l(mutex_memory); std::scoped_lock l(mutex_memory);
......
#pragma once #pragma once
#include <mutex> #include <mutex>
#include <vector>
#include <QObject> #include <QObject>
#include "RobotAPI/libraries/skills/core/ProviderID.h" #include "RobotAPI/libraries/skills/core/ProviderID.h"
#include "RobotAPI/libraries/skills/core/SkillDescription.h" #include "RobotAPI/libraries/skills/core/SkillDescription.h"
#include "RobotAPI/libraries/skills/core/SkillExecutionID.h" #include "RobotAPI/libraries/skills/core/SkillExecutionID.h"
#include "RobotAPI/libraries/skills/core/SkillID.h"
#include "RobotAPI/libraries/skills/core/SkillStatusUpdate.h" #include "RobotAPI/libraries/skills/core/SkillStatusUpdate.h"
#include <RobotAPI/interface/skills/SkillManagerInterface.h> #include <RobotAPI/interface/skills/SkillManagerInterface.h>
...@@ -16,6 +18,10 @@ namespace armarx::skills::gui ...@@ -16,6 +18,10 @@ namespace armarx::skills::gui
using SkillMap = using SkillMap =
std::map<skills::ProviderID, std::map<skills::SkillID, skills::SkillDescription>>; std::map<skills::ProviderID, std::map<skills::SkillID, skills::SkillDescription>>;
using Parameters = aron::data::DictPtr;
using SkillParameterMap =
std::map<skills::SkillID, std::vector<Parameters>>;
class SkillManagerWrapper : public QObject class SkillManagerWrapper : public QObject
{ {
Q_OBJECT Q_OBJECT
...@@ -112,6 +118,12 @@ namespace armarx::skills::gui ...@@ -112,6 +118,12 @@ namespace armarx::skills::gui
*/ */
void updateFromMemory(); void updateFromMemory();
// == Skill Parameters State ==
std::vector<Parameters> getParameterHistoryForSkill(const skills::SkillID& sid) const;
void addParametersToHistory(const skills::SkillID& sid, const Parameters& params);
std::optional<Parameters> getLatestParametersForSkill(const skills::SkillID& sid) const;
private: private:
mutable std::mutex mutex_memory; mutable std::mutex mutex_memory;
mutable std::mutex mutex_snapshot; mutable std::mutex mutex_snapshot;
...@@ -119,6 +131,9 @@ namespace armarx::skills::gui ...@@ -119,6 +131,9 @@ namespace armarx::skills::gui
armarx::skills::manager::dti::SkillManagerInterfacePrx memory; armarx::skills::manager::dti::SkillManagerInterfacePrx memory;
std::string currentSkillSearch = ""; std::string currentSkillSearch = "";
// Store a list of all execution parameters for each skill
SkillParameterMap skillParameterHistory;
Snapshot snapshot; Snapshot snapshot;
/** /**
......
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