From abd5e8f223183219550b2ef651913958a0b3ec78 Mon Sep 17 00:00:00 2001
From: Fabian Reister <fabian.reister@kit.edu>
Date: Thu, 20 May 2021 10:40:25 +0200
Subject: [PATCH] BO's for attachments

---
 .../RobotAPI/libraries/armem_objects/types.h  | 57 +++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/source/RobotAPI/libraries/armem_objects/types.h b/source/RobotAPI/libraries/armem_objects/types.h
index 855c855c4..ba85fde7d 100644
--- a/source/RobotAPI/libraries/armem_objects/types.h
+++ b/source/RobotAPI/libraries/armem_objects/types.h
@@ -23,7 +23,64 @@
 
 #include <vector>
 
+#include <Eigen/Geometry>
+
 #include <RobotAPI/libraries/armem_robot/types.h>
+#include <RobotAPI/libraries/armem/core/MemoryID.h>
+
+
+namespace armarx::armem::attachments
+{
+    using AgentID = armem::MemoryID;
+    using ObjectID = armem::MemoryID;
+
+    struct AgentDescription
+    {
+        /**
+         * @brief id either pointing to a arondto::Robot or arondto::ArticulatedObject
+         *
+         */
+        AgentID id;
+
+        std::string frame;
+    };
+
+    /**
+     * @brief ObjectAttachment describes a fixed transformation between an agent and an object.
+     *
+     *  The transformation is defined as follows:
+     *
+     *      agent.frame -> object root frame
+     *
+     */
+    struct ObjectAttachment
+    {
+        AgentDescription agent;
+
+        Eigen::Affine3f transformation;
+
+        ObjectID object;
+    };
+
+    /**
+     * @brief ArticulatedObjectAttachment describes a fixed transformation between an agent and an articulated object.
+     *
+     *  The transformation is defined as follows:
+     *
+     *      agent.frame -> object.frame
+     *
+     */
+    struct ArticulatedObjectAttachment
+    {
+        AgentDescription agent;
+
+        Eigen::Affine3f transformation;
+
+        AgentDescription object;
+
+    };
+
+}  // namespace armarx::armem::attachments
 
 namespace armarx::armem::articulated_object
 {
-- 
GitLab