From 20aa9edb6b5edfc00bcc128e1243794e5acb120b Mon Sep 17 00:00:00 2001
From: Dinesh Atchuthan <datchuth@laas.fr>
Date: Wed, 4 Oct 2017 16:18:27 +0200
Subject: [PATCH] HOTFIX: alignement proc_odom3D

---
 src/processor_base.h    |  1 +
 src/processor_motion.h  |  1 +
 src/processor_odom_2D.h |  1 +
 src/processor_odom_3D.h | 10 ++++++----
 src/sensor_odom_2D.h    |  3 ++-
 src/sensor_odom_3D.h    |  1 +
 6 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/src/processor_base.h b/src/processor_base.h
index f87df2394..19e5f665d 100644
--- a/src/processor_base.h
+++ b/src/processor_base.h
@@ -40,6 +40,7 @@ class ProcessorBase : public NodeBase, public std::enable_shared_from_this<Proce
         static unsigned int processor_id_count_;
 
     public:
+        EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
         ProcessorBase(const std::string& _type, const Scalar& _time_tolerance = 0);
         virtual ~ProcessorBase();
         void remove();
diff --git a/src/processor_motion.h b/src/processor_motion.h
index cd1c41c7f..f1a19ebb2 100644
--- a/src/processor_motion.h
+++ b/src/processor_motion.h
@@ -108,6 +108,7 @@ class ProcessorMotion : public ProcessorBase
 
     // This is the main public interface
     public:
+        EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
         ProcessorMotion(const std::string& _type,
                         Size _state_size,
                         Size _delta_size,
diff --git a/src/processor_odom_2D.h b/src/processor_odom_2D.h
index be2654cf0..2e0e1be46 100644
--- a/src/processor_odom_2D.h
+++ b/src/processor_odom_2D.h
@@ -30,6 +30,7 @@ struct ProcessorParamsOdom2D : public ProcessorParamsBase
 class ProcessorOdom2D : public ProcessorMotion
 {
     public:
+        EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
         ProcessorOdom2D(const Scalar& _traveled_dist_th             = 1.0,
                         const Scalar& _theta_traveled_th            = 0.17,
                         const Scalar& _cov_det_th                   = 1.0,
diff --git a/src/processor_odom_3D.h b/src/processor_odom_3D.h
index 1a806888c..2437da8e1 100644
--- a/src/processor_odom_3D.h
+++ b/src/processor_odom_3D.h
@@ -66,6 +66,7 @@ WOLF_PTR_TYPEDEFS(ProcessorOdom3D);
 class ProcessorOdom3D : public ProcessorMotion
 {
     public:
+        EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
         ProcessorOdom3D(ProcessorOdom3DParamsPtr _params = nullptr, SensorOdom3DPtr _sensor_ptr = nullptr);
         virtual ~ProcessorOdom3D();
         void setup(SensorOdom3DPtr sen_ptr);
@@ -121,7 +122,7 @@ class ProcessorOdom3D : public ProcessorMotion
         Eigen::Map<Eigen::Vector3s> p_out_;
         Eigen::Map<const Eigen::Quaternions> q1_, q2_;
         Eigen::Map<Eigen::Quaternions> q_out_;
-        void remap(const Eigen::VectorXs& _x1, const Eigen::VectorXs& _x2, Eigen::VectorXs& _x_out);
+        void remap(const  Eigen::Ref<const Eigen::VectorXs> _x1, const  Eigen::Ref<const Eigen::VectorXs> _x2, Eigen::Ref<Eigen::VectorXs> _x_out);
 
     // Factory method
     public:
@@ -156,9 +157,9 @@ inline FeatureBasePtr ProcessorOdom3D::emplaceFeature(CaptureMotionPtr _capture_
     return key_feature_ptr;
 }
 
-inline void ProcessorOdom3D::remap(const Eigen::VectorXs& _x1,
-                                   const Eigen::VectorXs& _x2,
-                                   Eigen::VectorXs& _x_out)
+inline void ProcessorOdom3D::remap(const  Eigen::Ref<const Eigen::VectorXs> _x1,
+                                   const  Eigen::Ref<const Eigen::VectorXs> _x2,
+                                   Eigen::Ref<Eigen::VectorXs> _x_out)
 {
     new (&p1_) Eigen::Map<const Eigen::Vector3s>(_x1.data());
     new (&q1_) Eigen::Map<const Eigen::Quaternions>(_x1.data() + 3);
@@ -168,6 +169,7 @@ inline void ProcessorOdom3D::remap(const Eigen::VectorXs& _x1,
     new (&q_out_) Eigen::Map<Eigen::Quaternions>(_x_out.data() + 3);
 }
 
+
 } // namespace wolf
 
 #endif /* SRC_PROCESSOR_ODOM_3D_H_ */
diff --git a/src/sensor_odom_2D.h b/src/sensor_odom_2D.h
index 6cd2ad336..277e73b70 100644
--- a/src/sensor_odom_2D.h
+++ b/src/sensor_odom_2D.h
@@ -21,7 +21,8 @@ class SensorOdom2D : public SensorBase
         Scalar k_disp_to_disp_; ///< ratio of displacement variance to displacement, for odometry noise calculation
         Scalar k_rot_to_rot_; ///< ratio of rotation variance to rotation, for odometry noise calculation
 
-	public:
+        public:
+                EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
         /** \brief Constructor with arguments
          * 
          * Constructor with arguments
diff --git a/src/sensor_odom_3D.h b/src/sensor_odom_3D.h
index c676edc95..e360af197 100644
--- a/src/sensor_odom_3D.h
+++ b/src/sensor_odom_3D.h
@@ -44,6 +44,7 @@ class SensorOdom3D : public SensorBase
         Scalar min_rot_var_;
 
     public:
+        EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
         /** \brief Constructor with arguments
          *
          * Constructor with arguments
-- 
GitLab