From 30af9a425847f5706ef1915ce3c4cba516f30fca Mon Sep 17 00:00:00 2001
From: Fabian Reister <fabian.reister@kit.edu>
Date: Thu, 20 May 2021 10:40:37 +0200
Subject: [PATCH] attachments segment class

---
 .../libraries/armem_objects/CMakeLists.txt    |  6 +++++
 .../server/attachments/Segment.cpp            | 26 ++++++++-----------
 .../server/attachments/Segment.h              |  9 +++----
 3 files changed, 21 insertions(+), 20 deletions(-)

diff --git a/source/RobotAPI/libraries/armem_objects/CMakeLists.txt b/source/RobotAPI/libraries/armem_objects/CMakeLists.txt
index 30a1f2ef6..dd799ece0 100644
--- a/source/RobotAPI/libraries/armem_objects/CMakeLists.txt
+++ b/source/RobotAPI/libraries/armem_objects/CMakeLists.txt
@@ -34,6 +34,9 @@ armarx_add_library(
         # server/articulated_object/SegmentAdapter.h
         server/articulated_object_instance/Visu.h
 
+        server/attachments/Segment.h
+
+
         client/articulated_object/Reader.cpp
         client/articulated_object/Writer.cpp
 
@@ -55,6 +58,9 @@ armarx_add_library(
         # server/articulated_object/SegmentAdapter.cpp
         server/articulated_object_instance/Visu.cpp
 
+        server/attachments/Segment.cpp
+
+
         client/articulated_object/Reader.h
         client/articulated_object/Writer.h
         client/articulated_object/interfaces.h
diff --git a/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.cpp b/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.cpp
index bfbee9a10..c2b3b77ab 100644
--- a/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.cpp
+++ b/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.cpp
@@ -5,6 +5,7 @@
 #include <ArmarXCore/core/time/TimeUtil.h>
 #include "ArmarXCore/core/logging/Logging.h"
 
+#include "RobotAPI/libraries/armem/util/util.h"
 #include "RobotAPI/libraries/aron/common/aron_conversions.h"
 
 #include <RobotAPI/libraries/armem/core/aron_conversions.h>
@@ -17,7 +18,7 @@
 
 #include <RobotAPI/libraries/armem_objects/aron/Robot.aron.generated.h>
 #include <RobotAPI/libraries/armem_objects/aron_conversions.h>
-#include "RobotAPI/libraries/armem_objects/articulated_object_conversions.h"
+#include <RobotAPI/libraries/armem_objects/aron/Attachment.aron.generated.h>
 
 
 namespace armarx::armem::server::obj::attachments
@@ -51,37 +52,32 @@ namespace armarx::armem::server::obj::attachments
         // this->visu = std::make_unique<Visu>(arviz, *this);
     }
 
-
-    std::unordered_map<armem::MemoryID, ::armarx::armem::articulated_object::ArticulatedObjectDescription> Segment::getKnownObjectClasses() const
+    std::vector<armarx::armem::attachments::ObjectAttachment> Segment::getAttachments(const armem::Time& timestamp) const
     {
-        std::unordered_map<armem::MemoryID, ::armarx::armem::articulated_object::ArticulatedObjectDescription> objects;
+        std::vector<armarx::armem::attachments::ObjectAttachment> attachments;
 
         for (const auto& [_, provSeg] : iceMemory.workingMemory->getCoreSegment(p.coreClassSegmentName))
         {
             for (const auto& [name, entity] :  provSeg.entities())
             {
                 const auto& entityInstance = entity.getLatestSnapshot().getInstance(0);
-                const auto description = articulated_object::convertRobotDescription(entityInstance);
+                const auto attachment = tryCast<armarx::arondto::attachment::ObjectAttachment>(entityInstance);
 
-                if (not description)
+                if (not attachment)
                 {
-                    ARMARX_WARNING << "Could not convert entity instance to 'RobotDescription'";
+                    ARMARX_WARNING << "Could not convert entity instance to 'ObjectAttachment'";
                     continue;
                 }
 
-                ARMARX_INFO << "Key is " << armem::MemoryID(entity.id());
-
-                objects.emplace(armem::MemoryID(entity.id()), *description);
+                ARMARX_DEBUG << "Key is " << armem::MemoryID(entity.id());
+                attachments.push_back(attachment);
             }
         }
 
-        ARMARX_IMPORTANT << "Number of known articulated object classes: " << objects.size();
-
-        return objects;
+        return attachments;
     }
 
 
-
     // void Segment::RemoteGui::setup(const Segment& data)
     // {
     //     using namespace armarx::RemoteGui::Client;
@@ -124,4 +120,4 @@ namespace armarx::armem::server::obj::attachments
     //     }
     // }
 
-}  // namespace armarx::armem::server::obj::articulated_object_class
+}  // namespace armarx::armem::server::obj::attachments
diff --git a/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.h b/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.h
index 16faad0bb..e974a36a2 100644
--- a/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.h
+++ b/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.h
@@ -34,6 +34,7 @@
 #include "RobotAPI/components/ArViz/Client/Client.h"
 
 #include "RobotAPI/libraries/armem/core/MemoryID.h"
+#include "RobotAPI/libraries/armem/core/Time.h"
 #include "RobotAPI/libraries/armem_objects/types.h"
 
 namespace armarx::armem
@@ -55,8 +56,6 @@ namespace armarx::armem::server::obj::attachments
     class Visu;
 
 
-    
-
     class Segment : public armarx::Logging
     {
     public:
@@ -71,7 +70,7 @@ namespace armarx::armem::server::obj::attachments
 
         void init();
 
-        std::vector<Attachments> getAttachments() const;
+        std::vector<armarx::armem::attachments::ObjectAttachment> getAttachments(const armem::Time& timestamp) const;
 
 
     private:
@@ -82,7 +81,7 @@ namespace armarx::armem::server::obj::attachments
 
         struct Properties
         {
-            std::string coreClassSegmentName = "ArticulatedObjectClass";
+            std::string coreClassSegmentName = "Attachments";
             int64_t maxHistorySize = -1;
         };
         Properties p;
@@ -105,4 +104,4 @@ namespace armarx::armem::server::obj::attachments
 
     };
 
-}  // namespace armarx::armem::server::obj::articulated_object_class
+}  // namespace armarx::armem::server::obj::attachments
-- 
GitLab