From 9f1329e51057209368d55454e88ba71d8a668657 Mon Sep 17 00:00:00 2001
From: Fabian Reister <fabian.reister@kit.edu>
Date: Thu, 1 Jul 2021 11:18:09 +0200
Subject: [PATCH] visu for articulated objects now complete

---
 .../client/articulated_object/Writer.cpp      | 36 +++++++++++++++++--
 .../armem_objects/server/instance/Segment.cpp | 10 ++++--
 2 files changed, 41 insertions(+), 5 deletions(-)

diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp
index 1c5134842..3f9cb647a 100644
--- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp
+++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp
@@ -10,12 +10,16 @@
 #include "ArmarXCore/core/exceptions/LocalException.h"
 #include <ArmarXCore/core/logging/Logging.h>
 
+#include "RobotAPI/libraries/ArmarXObjects/ObjectID.h"
+#include "RobotAPI/libraries/ArmarXObjects/ObjectInfo.h"
+#include <RobotAPI/libraries/ArmarXObjects/aron/ObjectID.aron.generated.h>
 #include <RobotAPI/libraries/armem/client/query.h>
 #include <RobotAPI/libraries/armem/core/MemoryID.h>
 #include <RobotAPI/libraries/armem/core/aron_conversions.h>
 #include <RobotAPI/libraries/armem/core/error.h>
-#include <RobotAPI/libraries/armem_objects/aron_conversions.h>
+#include <RobotAPI/libraries/armem_objects/aron/ObjectClass.aron.generated.h>
 #include <RobotAPI/libraries/armem_objects/aron/ObjectInstance.aron.generated.h>
+#include <RobotAPI/libraries/armem_objects/aron_conversions.h>
 #include <RobotAPI/libraries/armem_robot/aron/Robot.aron.generated.h>
 #include <RobotAPI/libraries/armem_robot/aron/RobotDescription.aron.generated.h>
 #include <RobotAPI/libraries/armem_robot/aron_conversions.h>
@@ -203,7 +207,6 @@ namespace armarx::armem::articulated_object
         arondto::ObjectInstance objectInstance;
         toAron(objectInstance, obj.config);
 
-
         const auto classId = storeOrGetClass(obj);
 
         if (not classId)
@@ -212,12 +215,38 @@ namespace armarx::armem::articulated_object
             return false;
         }
 
-
+        ARMARX_INFO << "Class id is " << classId->str();
 
         // install memory link
         // toAron(aronArticulatedObject.description, *descriptionId);
         toAron(objectInstance.classID, *classId);
 
+        // armarx::arondto::ObjectID& objectId = objectInstance.pose.objectID;
+
+        armem::MemoryID id;
+        id.setEntityID(classId->getEntityID());
+
+        // auto classId2 = classId->getEntityID();
+        // classId2.setEntityID(const MemoryID &id)
+
+        ARMARX_INFO << "manual object id: " << id.providerSegmentName + "/" + id.entityName;
+
+        armarx::ObjectID objectId(id.entityName);
+
+        armarx::arondto::ObjectID cs;
+        // objectInstance.pose.objectID
+        // toAron(objectInstance.pose.objectID, objectId);
+
+        cs.className = objectId.className();
+        cs.instanceName = objectId.instanceName();
+        cs.dataset = objectId.dataset();
+
+        objectInstance.pose.objectID = cs;
+
+        ARMARX_INFO << "class entity id" << classId->getEntityID().str();
+
+        // toAron(objectInstance.pose.objectID, objectInstance.classID);
+
         update.instancesData = {objectInstance.toAron()};
         update.timeCreated   = timestamp;
 
@@ -244,6 +273,7 @@ namespace armarx::armem::articulated_object
                            << "Known classes are " << simox::alg::get_keys(knownObjects);
             return false;
         }
+        ARMARX_INFO << "Object classId is " << classId->str();
 
         // TODO(fabian.reister): integrate memory link
         return storeInstance(obj);
diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp b/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp
index 611ec0a8f..5fd9b28ee 100644
--- a/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp
+++ b/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp
@@ -482,8 +482,11 @@ namespace armarx::armem::server::obj::instance
             articulatedObject.timestamp = objectPose.timestamp;
 
 
+            ARMARX_INFO << "Object id is " << objectId.str();
+            ARMARX_INFO << "Object id for objectPose is " << objectPose.objectID.str();
+
             // Search for object class.
-            if (auto classInstance = findClassInstance(objectId))
+            if (auto classInstance = findClassInstance(objectPose.objectID))
             {
                 arondto::ObjectClass dto;
 
@@ -780,11 +783,14 @@ namespace armarx::armem::server::obj::instance
                     return provSeg.getEntity(classID.str()).getLatestSnapshot().getInstance(0);
                 }
             }
+
+            ARMARX_WARNING << "No provider segment for classID " << classID.str() << " found";
             return std::nullopt;
         }
-        catch (const armem::error::ArMemError&)
+        catch (const armem::error::ArMemError& e)
         {
             // Some segment or entity did not exist.
+            ARMARX_WARNING << e.what();
             return std::nullopt;
         }
     }
-- 
GitLab