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 {