From cd451b396f90d35aa9811d6a1503096f64af244c Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@student.kit.edu>
Date: Fri, 1 Mar 2019 09:50:25 +0100
Subject: [PATCH] Ensure Pose() constructs an Identity pose

---
 source/RobotAPI/libraries/core/Pose.cpp | 25 ++++++++++---------------
 source/RobotAPI/libraries/core/Pose.h   |  2 ++
 2 files changed, 12 insertions(+), 15 deletions(-)

diff --git a/source/RobotAPI/libraries/core/Pose.cpp b/source/RobotAPI/libraries/core/Pose.cpp
index f0ef6e15b..f1370001d 100644
--- a/source/RobotAPI/libraries/core/Pose.cpp
+++ b/source/RobotAPI/libraries/core/Pose.cpp
@@ -173,7 +173,7 @@ namespace armarx
     }
 
 
-    Quaternion::Quaternion()
+    Quaternion::Quaternion() : Quaternion(Eigen::Quaternionf::Identity())
     {
     }
 
@@ -203,13 +203,7 @@ namespace armarx
 
     Matrix3f Quaternion::toEigen() const
     {
-        Matrix3f rot;
-        rot = Quaternionf(
-                  this->qw,
-                  this->qx,
-                  this->qy,
-                  this->qz);
-        return rot;
+        return toEigenQuaternion().toRotationMatrix();
     }
 
     Eigen::Quaternionf Quaternion::toEigenQuaternion() const
@@ -274,6 +268,14 @@ namespace armarx
         qw = obj->getFloat("qw");
     }
 
+
+    Pose::Pose()
+    {
+        this->orientation = new Quaternion();
+        this->position = new Vector3();
+        init();
+    }
+
     Pose::Pose(const Eigen::Matrix3f& m, const Eigen::Vector3f& v)
     {
         this->orientation = new Quaternion(m);
@@ -288,13 +290,6 @@ namespace armarx
         init();
     }
 
-    Pose::Pose()
-    {
-        this->orientation = new Quaternion();
-        this->position = new Vector3();
-        init();
-    }
-
     Pose::Pose(const Pose& source) :
         IceUtil::Shared(source),
         PoseBase(source)
diff --git a/source/RobotAPI/libraries/core/Pose.h b/source/RobotAPI/libraries/core/Pose.h
index 1573d2da6..74be8b0fa 100644
--- a/source/RobotAPI/libraries/core/Pose.h
+++ b/source/RobotAPI/libraries/core/Pose.h
@@ -160,6 +160,8 @@ namespace armarx
         virtual public QuaternionBase
     {
     public:
+
+        /// Construct an identity quaternion.
         Quaternion();
         Quaternion(const Eigen::Matrix4f&);
         Quaternion(const Eigen::Matrix3f&);
-- 
GitLab