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