From 30bd0c6526a1edc5166374f5ba8a2eaa9a7eca33 Mon Sep 17 00:00:00 2001
From: Justin Carpentier <justin.carpentier@inria.fr>
Date: Wed, 19 May 2021 09:24:21 +0200
Subject: [PATCH] geometry: fix quaternion static Identity constructor

---
 include/eigenpy/quaternion.hpp | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/include/eigenpy/quaternion.hpp b/include/eigenpy/quaternion.hpp
index c0d23745..84723e2f 100644
--- a/include/eigenpy/quaternion.hpp
+++ b/include/eigenpy/quaternion.hpp
@@ -234,8 +234,9 @@ namespace eigenpy
            "Returns the quaternion which transforms a into b through a rotation.",
            bp::return_value_policy<bp::manage_new_object>())
       .staticmethod("FromTwoVectors")
-      .def("Identity",&Quaternion::Identity,
-           "Returns a quaternion representing an identity rotation.")
+      .def("Identity",&Identity,
+           "Returns a quaternion representing an identity rotation.",
+           bp::return_value_policy<bp::manage_new_object>())
       .staticmethod("Identity")
       ;
     }
@@ -254,6 +255,12 @@ namespace eigenpy
     static Quaternion & assign(Quaternion & self, const OtherQuat & quat)
     { return self = quat; }
 
+    static Quaternion* Identity()
+    {
+      Quaternion* q(new Quaternion); q->setIdentity();
+      return q;
+    }
+    
     static Quaternion* FromTwoVectors(const Vector3& u, const Vector3& v)
     {
       Quaternion* q(new Quaternion); q->setFromTwoVectors(u,v);
-- 
GitLab