From 70cd3ab20ffd69249b1eeff5c55b07bde3f20092 Mon Sep 17 00:00:00 2001 From: Fabian Reister <fabian.reister@kit.edu> Date: Wed, 4 May 2022 18:23:13 +0200 Subject: [PATCH] impl. aron events / conversion --- source/armarx/navigation/core/aron/Events.xml | 12 ++++++ .../navigation/core/aron_conversions.cpp | 43 +++++++++++++++++++ .../armarx/navigation/core/aron_conversions.h | 21 ++++++++- .../memory/client/events/Writer.cpp | 28 +++++++----- .../navigation/memory/client/events/Writer.h | 5 +-- .../memory/client/parameterization/Writer.h | 2 +- .../event_publishing/MemoryPublisher.cpp | 2 +- 7 files changed, 96 insertions(+), 17 deletions(-) diff --git a/source/armarx/navigation/core/aron/Events.xml b/source/armarx/navigation/core/aron/Events.xml index d2009212..d7d29939 100644 --- a/source/armarx/navigation/core/aron/Events.xml +++ b/source/armarx/navigation/core/aron/Events.xml @@ -41,5 +41,17 @@ </ObjectChild> </Object> + <Object name='armarx::navigation::core::arondto::UserAbortTriggeredEvent'> + <ObjectChild key='pose'> + <Pose /> + </ObjectChild> + </Object> + + <Object name='armarx::navigation::core::arondto::GlobalPlanningFailedEvent'> + <ObjectChild key='message'> + <String /> + </ObjectChild> + </Object> + </GenerateTypes> </AronTypeDefinition> diff --git a/source/armarx/navigation/core/aron_conversions.cpp b/source/armarx/navigation/core/aron_conversions.cpp index 84b847e3..4a974067 100644 --- a/source/armarx/navigation/core/aron_conversions.cpp +++ b/source/armarx/navigation/core/aron_conversions.cpp @@ -3,6 +3,7 @@ #include <range/v3/range/conversion.hpp> #include <range/v3/view/transform.hpp> +#include "RobotAPI/libraries/aron/common/aron_conversions/core.h" #include <RobotAPI/libraries/aron/common/aron_conversions.h> #include <RobotAPI/libraries/core/Trajectory.h> @@ -121,6 +122,34 @@ namespace armarx::navigation::core aron::fromAron(dto.pose, bo.pose.matrix()); } + void + fromAron(const armarx::navigation::core::arondto::GlobalPlanningFailedEvent& dto, + armarx::navigation::core::GlobalPlanningFailedEvent& bo) + { + aron::fromAron(dto.message, bo.message); + } + + void + toAron(armarx::navigation::core::arondto::GlobalPlanningFailedEvent& dto, + const armarx::navigation::core::GlobalPlanningFailedEvent& bo) + { + aron::toAron(dto.message, bo.message); + } + + void + toAron(armarx::navigation::core::arondto::MovementStartedEvent& dto, + const armarx::navigation::core::MovementStartedEvent& bo) + { + aron::toAron(dto.startPose, bo.startPose.matrix()); + } + + void + fromAron(const armarx::navigation::core::arondto::MovementStartedEvent& dto, + armarx::navigation::core::MovementStartedEvent& bo) + { + aron::fromAron(dto.startPose, bo.startPose.matrix()); + } + void toAron(armarx::navigation::core::arondto::WaypointReachedEvent& dto, const armarx::navigation::core::WaypointReachedEvent& bo) @@ -153,4 +182,18 @@ namespace armarx::navigation::core aron::fromAron(dto.message, bo.message); } + void + toAron(armarx::navigation::core::arondto::UserAbortTriggeredEvent& dto, + const armarx::navigation::core::UserAbortTriggeredEvent& bo) + { + aron::toAron(dto.pose, bo.pose.matrix()); + } + + void + fromAron(const armarx::navigation::core::arondto::UserAbortTriggeredEvent& dto, + armarx::navigation::core::UserAbortTriggeredEvent& bo) + { + aron::fromAron(dto.pose, bo.pose.matrix()); + } + } // namespace armarx::navigation::core diff --git a/source/armarx/navigation/core/aron_conversions.h b/source/armarx/navigation/core/aron_conversions.h index 4e0a7bd4..654fd409 100644 --- a/source/armarx/navigation/core/aron_conversions.h +++ b/source/armarx/navigation/core/aron_conversions.h @@ -63,20 +63,39 @@ namespace armarx::navigation::core // Events void toAron(armarx::navigation::core::arondto::GoalReachedEvent& dto, const armarx::navigation::core::GoalReachedEvent& bo); + void fromAron(const armarx::navigation::core::arondto::GoalReachedEvent& dto, armarx::navigation::core::GoalReachedEvent& bo); + void toAron(armarx::navigation::core::arondto::MovementStartedEvent& dto, + const armarx::navigation::core::MovementStartedEvent& bo); + + void fromAron(const armarx::navigation::core::arondto::GlobalPlanningFailedEvent& dto, + armarx::navigation::core::GlobalPlanningFailedEvent& bo); + + void toAron(armarx::navigation::core::arondto::GlobalPlanningFailedEvent& dto, + const armarx::navigation::core::GlobalPlanningFailedEvent& bo); + + void fromAron(const armarx::navigation::core::arondto::MovementStartedEvent& dto, + armarx::navigation::core::MovementStartedEvent& bo); + void toAron(armarx::navigation::core::arondto::WaypointReachedEvent& dto, const armarx::navigation::core::WaypointReachedEvent& bo); + void fromAron(const armarx::navigation::core::arondto::WaypointReachedEvent& dto, armarx::navigation::core::WaypointReachedEvent& bo); - void toAron(armarx::navigation::core::arondto::InternalErrorEvent& dto, const armarx::navigation::core::InternalErrorEvent& bo); + void fromAron(const armarx::navigation::core::arondto::InternalErrorEvent& dto, armarx::navigation::core::InternalErrorEvent& bo); + void toAron(armarx::navigation::core::arondto::UserAbortTriggeredEvent& dto, + const armarx::navigation::core::UserAbortTriggeredEvent& bo); + + void fromAron(const armarx::navigation::core::arondto::UserAbortTriggeredEvent& dto, + armarx::navigation::core::UserAbortTriggeredEvent& bo); } // namespace armarx::navigation::core diff --git a/source/armarx/navigation/memory/client/events/Writer.cpp b/source/armarx/navigation/memory/client/events/Writer.cpp index b15a93ca..4325c44a 100644 --- a/source/armarx/navigation/memory/client/events/Writer.cpp +++ b/source/armarx/navigation/memory/client/events/Writer.cpp @@ -64,35 +64,41 @@ namespace armarx::navigation::memory::client::events bool Writer::store(const core::GoalReachedEvent& event, const std::string& clientID) { - return storeImpl(event, "GoalReachedEvent", clientID); + return storeImpl<core::arondto::GoalReachedEvent>(event, "GoalReachedEvent", clientID); } bool Writer::store(const core::WaypointReachedEvent& event, const std::string& clientID) { - return storeImpl(event, "WaypointReachedEvent", clientID); + return storeImpl<core::arondto::WaypointReachedEvent>(event, "WaypointReachedEvent", clientID); } bool Writer::store(const core::InternalErrorEvent& event, const std::string& clientID) { - return storeImpl(event, "InternalErrorEvent", clientID); + return storeImpl<core::arondto::InternalErrorEvent>(event, "InternalErrorEvent", clientID); } bool Writer::store(const core::GlobalPlanningFailedEvent& event, const std::string& clientID) { - return storeImpl(event, "GlobalPlanningFailedEvent", clientID); + return storeImpl<core::arondto::GlobalPlanningFailedEvent>(event, "GlobalPlanningFailedEvent", clientID); } bool Writer::store(const core::MovementStartedEvent& event, const std::string& clientID) { - return storeImpl(event, "MovementStartedEvent", clientID); + return storeImpl<core::arondto::MovementStartedEvent>(event, "MovementStartedEvent", clientID); + } + + bool + Writer::store(const core::UserAbortTriggeredEvent& event, const std::string& clientID) + { + return storeImpl<core::arondto::UserAbortTriggeredEvent>(event, "UserAbortTriggered", clientID); } - template <typename EventT> + template <typename AronEventT, typename EventT> bool Writer::storeImpl(const EventT& event, const std::string& eventName, @@ -102,7 +108,7 @@ namespace armarx::navigation::memory::client::events ARMARX_INFO << "Storing event `" << eventName << "` in memory."; - armem::Time ts = armem::Time(armem::Duration::MicroSeconds(event.timestamp.count())); + const auto& timestamp = event.timestamp; armem::EntityUpdate update; update.entityID = armem::MemoryID() @@ -110,14 +116,14 @@ namespace armarx::navigation::memory::client::events .withCoreSegmentName(properties().coreSegmentName) .withProviderSegmentName(clientID) .withEntityName(eventName) - .withTimestamp(ts); - update.timeCreated = ts; + .withTimestamp(timestamp); + update.timeCreated = timestamp; - // FIXME auto dto = core::toAron(event); + const auto dto = core::toAron<AronEventT>(event); aron::data::DictPtr element(new aron::data::Dict); element->addElement("event", std::make_shared<aron::data::String>(eventName)); - // FIXME element->addElement("data", dto.toAron()); + element->addElement("data", dto.toAron()); update.instancesData = {element}; diff --git a/source/armarx/navigation/memory/client/events/Writer.h b/source/armarx/navigation/memory/client/events/Writer.h index 833f3705..16812c15 100644 --- a/source/armarx/navigation/memory/client/events/Writer.h +++ b/source/armarx/navigation/memory/client/events/Writer.h @@ -43,7 +43,7 @@ namespace armarx::navigation::memory::client::events bool store(const core::InternalErrorEvent& event, const std::string& clientID); - // bool store(const core::GoalReachedEvent& event, const std::string& clientID); + bool store(const core::UserAbortTriggeredEvent& event, const std::string& clientID); bool store(const core::GlobalPlanningFailedEvent& event, const std::string& clientID); bool store(const core::MovementStartedEvent& event, const std::string& clientID); @@ -57,8 +57,7 @@ namespace armarx::navigation::memory::client::events bool store(const armem::Commit& commit); bool store(const armem::EntityUpdate& commit); - - template <typename EventT> + template <typename AronEventT, typename EventT> bool storeImpl(const EventT& event, const std::string& eventName, const std::string& clientID); }; diff --git a/source/armarx/navigation/memory/client/parameterization/Writer.h b/source/armarx/navigation/memory/client/parameterization/Writer.h index 58c6cd22..73b927d7 100644 --- a/source/armarx/navigation/memory/client/parameterization/Writer.h +++ b/source/armarx/navigation/memory/client/parameterization/Writer.h @@ -38,7 +38,7 @@ namespace armarx::navigation::memory::client::param bool store(const std::unordered_map<core::StackLayer, aron::data::DictPtr>& stack, const std::string& clientID, - const core::TimestampUs& timestamp); + const armarx::core::time::DateTime& timestamp); std::string propertyPrefix() const override; Properties defaultProperties() const override; diff --git a/source/armarx/navigation/server/event_publishing/MemoryPublisher.cpp b/source/armarx/navigation/server/event_publishing/MemoryPublisher.cpp index 60adb3a6..8f3b9d42 100644 --- a/source/armarx/navigation/server/event_publishing/MemoryPublisher.cpp +++ b/source/armarx/navigation/server/event_publishing/MemoryPublisher.cpp @@ -35,7 +35,7 @@ namespace armarx::navigation::server void MemoryPublisher::userAbortTriggered(const core::UserAbortTriggeredEvent& event) { - // eventsWriter->store(event, clientId); + eventsWriter->store(event, clientId); } -- GitLab