From b6cd5e1eb6c146b8dfcce79850cff16f4acf4861 Mon Sep 17 00:00:00 2001
From: Pierre Fernbach <pierre.fernbach@laas.fr>
Date: Thu, 8 Feb 2018 18:03:05 +0100
Subject: [PATCH] in computePolytopeProjection : assure that H have more rows
 than there generators

---
 src/centroidal_dynamics.cpp | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/centroidal_dynamics.cpp b/src/centroidal_dynamics.cpp
index 7a4c5c5..d17db93 100644
--- a/src/centroidal_dynamics.cpp
+++ b/src/centroidal_dynamics.cpp
@@ -517,6 +517,9 @@ LP_status Equilibrium::findExtremumInDirection(Cref_vector3 direction, Ref_vecto
 
 bool Equilibrium::computePolytopeProjection(Cref_matrix6X v)
 {
+    int n = (int)(v.rows());
+    int m = (int)(v.cols());
+
 //  getProfiler().start("eigen_to_cdd");
   dd_MatrixPtr V = cone_span_eigen_to_cdd(v.transpose(),canonicalize_cdd_matrix);
 //  getProfiler().stop("eigen_to_cdd");
@@ -571,6 +574,15 @@ bool Equilibrium::computePolytopeProjection(Cref_matrix6X v)
   }
 //  getProfiler().stop("cdd to eigen");
 
+  std::cout<<" inequalities : m = "<<m<<std::endl;
+  if(m_h.rows() < n )
+    {
+        SEND_ERROR_MSG("numerical instability in cddlib. ill formed polytope");
+        m_is_cdd_stable = false;
+        return false;
+    }
+
+
   return true;
 }
 
-- 
GitLab