From 3b00d3eaf6f573bd259764e083f523f96bee5fef Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@kit.edu>
Date: Mon, 25 May 2020 15:42:53 +0200
Subject: [PATCH] Add toIce() functions for AABB and OOBB

---
 .../ObjectPoseObserver/ObjectPoseObserver.cpp |  1 -
 .../ObjectPoseObserver/ice_conversions.cpp    | 23 +++++++++++++++++++
 .../ObjectPoseObserver/ice_conversions.h      | 13 +++++++++++
 3 files changed, 36 insertions(+), 1 deletion(-)

diff --git a/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp b/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp
index 959fda807..e7202cd5a 100644
--- a/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp
+++ b/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp
@@ -30,7 +30,6 @@
 
 #include <RobotAPI/libraries/core/Pose.h>
 #include <RobotAPI/libraries/core/FramedPose.h>
-#include <RobotAPI/libraries/ArmarXObjects/ObjectInfo.h>
 
 #include "ice_conversions.h"
 
diff --git a/source/RobotAPI/components/ObjectPoseObserver/ice_conversions.cpp b/source/RobotAPI/components/ObjectPoseObserver/ice_conversions.cpp
index e40d29d70..0085e76c8 100644
--- a/source/RobotAPI/components/ObjectPoseObserver/ice_conversions.cpp
+++ b/source/RobotAPI/components/ObjectPoseObserver/ice_conversions.cpp
@@ -3,8 +3,12 @@
 #include <VirtualRobot/Robot.h>
 #include <VirtualRobot/RobotConfig.h>
 
+#include <SimoxUtility/shapes/AxisAlignedBoundingBox.h>
+#include <SimoxUtility/shapes/OrientedBox.h>
+
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 
+#include <RobotAPI/libraries/core/Pose.h>
 #include <RobotAPI/libraries/core/FramedPose.h>
 
 
@@ -23,6 +27,25 @@ namespace armarx
         { objpose::ObjectTypeEnum::UnknownObject, "UnknownObject" }
     };
 
+
+    objpose::AABB objpose::toIce(const simox::AxisAlignedBoundingBox& aabb)
+    {
+        objpose::AABB ice;
+        ice.center = new Vector3(aabb.center());
+        ice.extents = new Vector3(aabb.extents());
+        return ice;
+    }
+
+    objpose::Box objpose::toIce(const simox::OrientedBox<float>& oobb)
+    {
+        objpose::Box ice;
+        ice.position = new Vector3(oobb.center());
+        ice.orientation = new Quaternion(oobb.rotation().eval());
+        ice.extents = new Vector3(oobb.dimensions());
+        return ice;
+    }
+
 }
 
 
+
diff --git a/source/RobotAPI/components/ObjectPoseObserver/ice_conversions.h b/source/RobotAPI/components/ObjectPoseObserver/ice_conversions.h
index e9a0da541..d71b34cae 100644
--- a/source/RobotAPI/components/ObjectPoseObserver/ice_conversions.h
+++ b/source/RobotAPI/components/ObjectPoseObserver/ice_conversions.h
@@ -7,6 +7,15 @@
 #include "ObjectPose.h"
 
 
+namespace simox
+{
+    // #include <SimoxUtility/shapes/AxisAlignedBoundingBox.h>
+    struct AxisAlignedBoundingBox;
+    // #include <SimoxUtility/shapes/OrientedBox.h>
+    template<class FloatT> class OrientedBox;
+}
+
+
 namespace armarx::objpose
 {
 
@@ -14,4 +23,8 @@ namespace armarx::objpose
 
     extern const simox::meta::EnumNames<objpose::ObjectTypeEnum> ObjectTypeEnumNames;
 
+
+    objpose::AABB toIce(const simox::AxisAlignedBoundingBox& aabb);
+    objpose::Box toIce(const simox::OrientedBox<float>& oobb);
+
 }
-- 
GitLab