From 5208cbc78d23a472f8c2ef282c15c6efc1dd9e04 Mon Sep 17 00:00:00 2001
From: jcarpent <jcarpent@laas.fr>
Date: Wed, 9 Dec 2015 19:45:53 +0100
Subject: [PATCH] [C++][Cmake] Set default value in debug mode for data
 structure quantities

---
 CMakeLists.txt          |  7 +++++++
 src/multibody/model.hpp | 12 ++++++++++--
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b3b349ca4..efa38b3ca 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -46,6 +46,13 @@ ENDIF(WIN32)
 
 # --- OPTIONS ----------------------------------------
 OPTION (BUILD_BENCHMARK "Build the benchmarks" OFF)
+OPTION (INITIALIZE_WITH_NAN "Initialize Eigen entries with NaN" OFF)
+
+IF (INITIALIZE_WITH_NAN)
+  MESSAGE (STATUS "Initialize with NaN all the Eigen entries")
+  ADD_DEFINITIONS(-DEIGEN_INITIALIZE_MATRICES_BY_NAN)
+  #LIST(APPEND CMAKE_CXX_FLAGS "-DEIGEN_INITIALIZE_MATRICES_BY_NAN")
+ENDIF (INITIALIZE_WITH_NAN)
 
 # ----------------------------------------------------
 # --- DEPENDANCIES -----------------------------------
diff --git a/src/multibody/model.hpp b/src/multibody/model.hpp
index da14e2178..a2ace9e4d 100644
--- a/src/multibody/model.hpp
+++ b/src/multibody/model.hpp
@@ -347,12 +347,12 @@ namespace se3
     ,lowerPositionLimit(ref.nq)
     ,upperPositionLimit(ref.nq)
   {
+    /* Create data strcture associated to the joints */
     for(Model::Index i=0;i<(Model::Index)(model.nbody);++i) 
       joints.push_back(CreateJointData::run(model.joints[i]));
 
     /* Init for CRBA */
-    M.fill(NAN);    
-    for(Model::Index i=0;i<(Model::Index)(ref.nbody);++i ) { Fcrb[i].resize(6,model.nv); Fcrb[i].fill(NAN); }
+    for(Model::Index i=0;i<(Model::Index)(ref.nbody);++i ) { Fcrb[i].resize(6,model.nv); }
     computeLastChild(ref);
 
     /* Init for Cholesky */
@@ -361,6 +361,14 @@ namespace se3
 
     /* Init Jacobian */
     J.fill(0);
+    
+    /* Init universe states relatively to itself */
+    
+    a[0].setZero();
+    v[0].setZero();
+    f[0].setZero();
+    oMi[0].setIdentity();
+    liMi[0].setIdentity();
   }
 
   inline void Data::computeLastChild(const Model& model)
-- 
GitLab