From 0ebd49e0e78d318940ed14a11905ba271bf8b7d3 Mon Sep 17 00:00:00 2001
From: Christoph Pohl <christoph.pohl@kit.edu>
Date: Wed, 9 Nov 2022 17:47:02 +0100
Subject: [PATCH] Add more support for conversion from eigen types to NDArrays

---
 .../aron/converter/eigen/EigenConverter.h     | 22 +++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/source/RobotAPI/libraries/aron/converter/eigen/EigenConverter.h b/source/RobotAPI/libraries/aron/converter/eigen/EigenConverter.h
index 6c45ffbdb..9d83042a1 100644
--- a/source/RobotAPI/libraries/aron/converter/eigen/EigenConverter.h
+++ b/source/RobotAPI/libraries/aron/converter/eigen/EigenConverter.h
@@ -135,6 +135,16 @@ namespace armarx::aron::converter
             }
         }
 
+        template<typename T>
+        static data::NDArrayPtr ConvertFromQuaternion(
+            const Eigen::Quaternion<T>& quat)
+        {
+            data::NDArrayPtr ndArr(new data::NDArray);
+            ndArr->setShape({1, 4});
+            ndArr->setData(sizeof(T) * 4, reinterpret_cast <const unsigned char* >(quat.coeffs().data()));
+
+            return ndArr;
+        }
 
         template<typename T>
         static data::NDArrayPtr ConvertFromMatrix(
@@ -148,6 +158,18 @@ namespace armarx::aron::converter
             return ndArr;
         }
 
+        template<typename T, int Rows = Eigen::Dynamic, int Cols = Eigen::Dynamic>
+        static data::NDArrayPtr ConvertFromMatrix(
+            const Eigen::Matrix < T, Rows, Cols >& mat)
+        {
+            data::NDArrayPtr ndArr(new data::NDArray);
+
+            ndArr->setShape({Rows, Cols});
+            ndArr->setData(sizeof(T) * mat.size(), reinterpret_cast <const unsigned char* >(mat.data()));
+
+            return ndArr;
+        }
+
 
         // Eigen::Array
 
-- 
GitLab