From f74754723c0887bab3580012bf0644b736c5e4b0 Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@kit.edu>
Date: Fri, 18 Sep 2020 11:10:13 +0200
Subject: [PATCH] Add getters for OOBB in robot and global frame

---
 .../ObjectPoseObserver/ObjectPose.cpp         | 19 +++++++++++++++++++
 .../ObjectPoseObserver/ObjectPose.h           |  8 ++++++++
 2 files changed, 27 insertions(+)

diff --git a/source/RobotAPI/components/ObjectPoseObserver/ObjectPose.cpp b/source/RobotAPI/components/ObjectPoseObserver/ObjectPose.cpp
index ae8531eda..af808d1de 100644
--- a/source/RobotAPI/components/ObjectPoseObserver/ObjectPose.cpp
+++ b/source/RobotAPI/components/ObjectPoseObserver/ObjectPose.cpp
@@ -113,6 +113,25 @@ namespace armarx::objpose
         objpose::fromIce(provided.localOOBB, localOOBB);
     }
 
+
+    std::optional<simox::OrientedBoxf> ObjectPose::oobbRobot() const
+    {
+        if (localOOBB)
+        {
+            return localOOBB->transformed(objectPoseRobot);
+        }
+        return std::nullopt;
+    }
+
+    std::optional<simox::OrientedBoxf> ObjectPose::oobbGlobal() const
+    {
+        if (localOOBB)
+        {
+            return localOOBB->transformed(objectPoseGlobal);
+        }
+        return std::nullopt;
+    }
+
 }
 
 namespace armarx
diff --git a/source/RobotAPI/components/ObjectPoseObserver/ObjectPose.h b/source/RobotAPI/components/ObjectPoseObserver/ObjectPose.h
index 78cbfbfc6..d00e548b8 100644
--- a/source/RobotAPI/components/ObjectPoseObserver/ObjectPose.h
+++ b/source/RobotAPI/components/ObjectPoseObserver/ObjectPose.h
@@ -54,7 +54,15 @@ namespace armarx::objpose
         IceUtil::Time timestamp = IceUtil::Time::microSeconds(-1);
 
         /// Object bounding box in object's local coordinate frame.
+        /// @see oobbRobot(), oobbGlobal()
         std::optional<simox::OrientedBoxf> localOOBB;
+
+
+        /// Get the OOBB in the robot frame (according to `objectPoseRobot`).
+        std::optional<simox::OrientedBoxf> oobbRobot() const;
+        /// Get the OOBB in the global frame (according to `objectPoseGlobal`).
+        std::optional<simox::OrientedBoxf> oobbGlobal() const;
+
     };
     using ObjectPoseSeq = std::vector<ObjectPose>;
 
-- 
GitLab