3#include <nlohmann/json.hpp>
10 template <
class DTOType,
class BOType>
12 fromAronOptional(
const std::optional<DTOType>& dtoOpt, std::optional<BOType>& boOpt)
14 if (dtoOpt.has_value())
26 template <
class DTOType,
class BOType>
28 toAronOptional(std::optional<DTOType>& dtoOpt,
const std::optional<BOType>& boOpt)
30 if (boOpt.has_value())
38 dtoOpt = std::nullopt;
49 case armarx::task_outcome::arondto::TaskOutcomeType::UNKNOWN:
52 case armarx::task_outcome::arondto::TaskOutcomeType::SUCCESS:
55 case armarx::task_outcome::arondto::TaskOutcomeType::FAILURE:
58 case armarx::task_outcome::arondto::TaskOutcomeType::ABORTED:
61 case armarx::task_outcome::arondto::TaskOutcomeType::SUSPENDED:
73 dto = armarx::task_outcome::arondto::TaskOutcomeType::UNKNOWN;
76 dto = armarx::task_outcome::arondto::TaskOutcomeType::SUCCESS;
79 dto = armarx::task_outcome::arondto::TaskOutcomeType::FAILURE;
82 dto = armarx::task_outcome::arondto::TaskOutcomeType::ABORTED;
85 dto = armarx::task_outcome::arondto::TaskOutcomeType::SUSPENDED;
97 case armarx::task_outcome::arondto::TaskType::UNKNOWN:
100 case armarx::task_outcome::arondto::TaskType::GRASPING_FAMILIAR:
103 case armarx::task_outcome::arondto::TaskType::GRASPING_KNOWN:
106 case armarx::task_outcome::arondto::TaskType::MANIPULATION:
109 case armarx::task_outcome::arondto::TaskType::VERBALIZATION:
112 case armarx::task_outcome::arondto::TaskType::DETECTION:
115 case armarx::task_outcome::arondto::TaskType::NAVIGATION:
118 case armarx::task_outcome::arondto::TaskType::SPEAKING:
121 case armarx::task_outcome::arondto::TaskType::SPECIAL:
133 dto = armarx::task_outcome::arondto::TaskType::UNKNOWN;
136 dto = armarx::task_outcome::arondto::TaskType::GRASPING_FAMILIAR;
139 dto = armarx::task_outcome::arondto::TaskType::GRASPING_KNOWN;
142 dto = armarx::task_outcome::arondto::TaskType::MANIPULATION;
145 dto = armarx::task_outcome::arondto::TaskType::VERBALIZATION;
148 dto = armarx::task_outcome::arondto::TaskType::DETECTION;
151 dto = armarx::task_outcome::arondto::TaskType::NAVIGATION;
154 dto = armarx::task_outcome::arondto::TaskType::SPEAKING;
157 dto = armarx::task_outcome::arondto::TaskType::SPECIAL;
183 fromAron(
const armarx::task_outcome::arondto::PerceptionFailures&
dto,
191 toAron(armarx::task_outcome::arondto::PerceptionFailures&
dto,
201 fromAron(
const armarx::task_outcome::arondto::KnowledgeRetrievalFailures&
dto,
209 toAron(armarx::task_outcome::arondto::KnowledgeRetrievalFailures&
dto,
219 fromAron(
const armarx::task_outcome::arondto::KnowledgeFailures&
dto,
227 toAron(armarx::task_outcome::arondto::KnowledgeFailures&
dto,
237 fromAron(
const armarx::task_outcome::arondto::ExecutionFailures&
dto,
246 toAron(armarx::task_outcome::arondto::ExecutionFailures&
dto,
257 fromAron(
const armarx::task_outcome::arondto::InteractionFailures&
dto,
266 toAron(armarx::task_outcome::arondto::InteractionFailures&
dto,
277 fromAron(
const armarx::task_outcome::arondto::InterruptionFailures&
dto,
284 toAron(armarx::task_outcome::arondto::InterruptionFailures&
dto,
367 fromAron(
const armarx::task_outcome::arondto::TaskOutcomeContext&
dto,
376 for (
const auto& [key, value] :
dto.taskPreconditions)
378 auto parsed = nlohmann::json::parse(value,
nullptr,
false);
380 ? nlohmann::json(value)
385 for (
const auto& [key, value] :
dto.taskPostconditions)
387 auto parsed = nlohmann::json::parse(value,
nullptr,
false);
389 ? nlohmann::json(value)
393 if (
dto.skillExecutionStartedTimestamp.has_value())
406 toAron(armarx::task_outcome::arondto::TaskOutcomeContext&
dto,
414 dto.taskPreconditions.clear();
417 dto.taskPreconditions[key] = value.dump();
420 dto.taskPostconditions.clear();
423 dto.taskPostconditions[key] = value.dump();
428 dto.skillExecutionStartedTimestamp.emplace();
434 dto.skillExecutionStartedTimestamp = std::nullopt;
Represents a point in time.
void fromAron(const armarx::task_outcome::arondto::TaskOutcomeType &dto, TaskOutcomeType &bo)
void toAron(armarx::task_outcome::arondto::TaskOutcomeType &dto, const TaskOutcomeType &bo)
void fromAron(const T &dto, T &bo)
void toAron(T &dto, const T &bo)
Framework for converting ARON DTOs (Data Transfer Objects) to C++ BOs (Business Objects) and back.
bool graspingFailureDetected
std::optional< std::string > specialFailureDescription
SubskillFailure subskillFailure
KnowledgeFailures knowledge
ExecutionFailures execution
PlanningFailures planning
InterruptionFailures interruption
InteractionFailures interaction
bool communicationFailure
bool desiredObjectNotAtLocation
KnowledgeRetrievalFailures knowledgeRetrieval
PerceptionFailures perception
bool knowledgeNotInMemory
std::string recoveryMeasure
armarx::core::time::DateTime recoveryTime
nlohmann::json taskPostconditions
nlohmann::json taskPreconditions
std::optional< std::string > naturalLanguageDescription
std::map< std::string, std::string > parameters
std::optional< armarx::core::time::DateTime > skillExecutionStartedTimestamp
std::map< std::string, std::string > additional
armarx::core::time::DateTime startTime
std::optional< RecoveryInfo > recoveryInfo
std::optional< std::string > errorMessage
armarx::core::time::DateTime endTime
std::optional< bool > couldRecover
std::optional< std::string > specialTaskTypeDescription
TaskOutcomeContext context
TaskOutcomeType outcomeType
std::optional< FailureInfo > failureInfo