From 1abba505a8f819e5137ee9d84e57ef5388a4a010 Mon Sep 17 00:00:00 2001
From: Joseph Mirabel <jmirabel@laas.fr>
Date: Mon, 28 Aug 2017 14:43:31 +0200
Subject: [PATCH] GraphOptimizer uses path validation of edge for optimization.

---
 src/graph-optimizer.cc | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/graph-optimizer.cc b/src/graph-optimizer.cc
index 7b065947..66ec3303 100644
--- a/src/graph-optimizer.cc
+++ b/src/graph-optimizer.cc
@@ -38,7 +38,10 @@ namespace hpp {
               this->problem().pathValidation ());
       core::Problem p (problem().robot());
       p.distance(problem().distance());
-      p.pathValidation(gpv->innerValidation());
+      // It should be ok to use the path validation of each edge because it
+      // corresponds to the global path validation minus the collision pairs
+      // disabled using the edge constraint.
+      // p.pathValidation(gpv->innerValidation());
       p.pathProjector(problem().pathProjector());
 
       path->flatten (expanded);
@@ -72,6 +75,7 @@ namespace hpp {
           p.constraints(edge->steeringMethod()->constraints());
           p.constraints()->configProjector()->rightHandSideFromConfig(toOpt->initial());
           p.steeringMethod(edge->steeringMethod());
+          p.pathValidation(edge->pathValidation());
           pathOptimizer_ = factory_ (p);
           toConcat = pathOptimizer_->optimize (toOpt);
         }
-- 
GitLab