From 9627d147f8048b43e92bd0c11717a8bbb35fe635 Mon Sep 17 00:00:00 2001
From: jcarpent <jcarpent@laas.fr>
Date: Tue, 20 Sep 2016 18:42:49 +0200
Subject: [PATCH] [Joint] Fix alignment issue for the JointComposite

---
 src/multibody/constraint.hpp            |  1 +
 src/multibody/joint/joint-composite.hpp | 10 ++++++++++
 2 files changed, 11 insertions(+)

diff --git a/src/multibody/constraint.hpp b/src/multibody/constraint.hpp
index 450f3403f..f3c87ae71 100644
--- a/src/multibody/constraint.hpp
+++ b/src/multibody/constraint.hpp
@@ -102,6 +102,7 @@ namespace se3
   class ConstraintTpl : public ConstraintBase<ConstraintTpl < _Dim, _Scalar, _Options > >
   { 
   public:
+    EIGEN_MAKE_ALIGNED_OPERATOR_NEW
     
     typedef ConstraintBase< ConstraintTpl< _Dim, _Scalar, _Options > > Base;
 
diff --git a/src/multibody/joint/joint-composite.hpp b/src/multibody/joint/joint-composite.hpp
index 01ed3d89d..40228586f 100644
--- a/src/multibody/joint/joint-composite.hpp
+++ b/src/multibody/joint/joint-composite.hpp
@@ -21,6 +21,8 @@
 #include "pinocchio/assert.hpp"
 #include "pinocchio/multibody/joint/joint.hpp"
 
+#include <Eigen/StdVector>
+
 EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION(se3::SE3)
 EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION(se3::Motion)
 
@@ -56,12 +58,16 @@ namespace se3
     typedef Eigen::Matrix<double,Eigen::Dynamic,1> ConfigVector_t;
     typedef Eigen::Matrix<double,Eigen::Dynamic,1> TangentVector_t;
   };
+  
   template<> struct traits<JointDataComposite> { typedef JointComposite JointDerived; };
   template<> struct traits<JointModelComposite> { typedef JointComposite JointDerived; };
 
   struct JointDataComposite : public JointDataBase<JointDataComposite> 
   {
+    EIGEN_MAKE_ALIGNED_OPERATOR_NEW
+    
     typedef JointComposite Joint;
+    typedef std::vector<JointData, Eigen::aligned_allocator<JointData> > JointDataVector;
     SE3_JOINT_TYPEDEF;
 
     JointDataVector joints;
@@ -99,9 +105,13 @@ namespace se3
 
   struct JointModelComposite : public JointModelBase<JointModelComposite> 
   {
+    EIGEN_MAKE_ALIGNED_OPERATOR_NEW
+    
     typedef JointComposite Joint;
     SE3_JOINT_TYPEDEF;
     SE3_JOINT_USE_INDEXES;
+    typedef std::vector<JointModel, Eigen::aligned_allocator<JointModel> > JointModelVector;
+    
     using JointModelBase<JointModelComposite>::id;
     using JointModelBase<JointModelComposite>::setIndexes;
 
-- 
GitLab