diff --git a/source/RobotAPI/libraries/armem_objects/types.h b/source/RobotAPI/libraries/armem_objects/types.h
index 855c855c4d36d5cf02785b6e34d652b1f82b1272..ba85fde7d5f8a346d3cf48dc5d2893e121d616ab 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
 {