From 12853855f19f007cf3e5ea139cff7ef00fb5e509 Mon Sep 17 00:00:00 2001 From: Joseph Mirabel <jmirabel@laas.fr> Date: Wed, 11 May 2016 17:20:29 +0200 Subject: [PATCH] Add debug output and fix packaging issues --- src/graph-path-validation.cc | 1 + src/graph-steering-method.cc | 3 +++ src/graph/edge.cc | 36 ++++++++++++++++++++++++++++-------- src/problem-solver.cc | 4 +--- src/problem.cc | 4 ++++ 5 files changed, 37 insertions(+), 11 deletions(-) diff --git a/src/graph-path-validation.cc b/src/graph-path-validation.cc index ffd704c..baa5183 100644 --- a/src/graph-path-validation.cc +++ b/src/graph-path-validation.cc @@ -91,6 +91,7 @@ namespace hpp { PathPtr_t pathNoCollision; ConstraintSetPtr_t c = HPP_DYNAMIC_PTR_CAST(ConstraintSet, path->constraints()); + hppDout(info, (c?"Using edge path validation":"Using default path validation")); PathValidationPtr_t validation (c ? c->edge()->pathValidation() : pathValidation_); diff --git a/src/graph-steering-method.cc b/src/graph-steering-method.cc index 381d301..1094f82 100644 --- a/src/graph-steering-method.cc +++ b/src/graph-steering-method.cc @@ -74,6 +74,9 @@ namespace hpp { return PathPtr_t (); } PathPtr_t path; + if (possibleEdges.empty()) { + hppDout (info, "No edge found."); + } while (!possibleEdges.empty()) { if (possibleEdges.back ()->build (path, q1, q2)) { return path; diff --git a/src/graph/edge.cc b/src/graph/edge.cc index 43c142e..9e9ee77 100644 --- a/src/graph/edge.cc +++ b/src/graph/edge.cc @@ -278,11 +278,15 @@ namespace hpp { { ConstraintSetPtr_t constraints = pathConstraint (); constraints->configProjector ()->rightHandSideFromConfig(q1); - if (!constraints->isSatisfied (q1) || !constraints->isSatisfied (q2)) { - return false; + if (constraints->isSatisfied (q1)) { + if (constraints->isSatisfied (q2)) { + path = (*steeringMethod_->get()) (q1, q2); + return true; + } + hppDout(info, "q2 does not satisfy the constraints"); } - path = (*steeringMethod_->get()) (q1, q2); - return true; + hppDout(info, "q1 does not satisfy the constraints"); + return false; } bool Edge::applyConstraints (core::NodePtr_t nnear, ConfigurationOut_t q) const @@ -346,19 +350,35 @@ namespace hpp { if (!useCache) configs_.col (0) = q2; assert (waypoints_[0].first); - if (!waypoints_[0].first->applyConstraints (q1, configs_.col (0))) + if (!waypoints_[0].first->applyConstraints (q1, configs_.col (0))) { + hppDout (info, "Waypoint edge " << name() << ": applyConstraints failed at waypoint 0." + << "\nUse cache: " << useCache + ); return false; - if (!waypoints_[0].first->build (p, q1, configs_.col (0))) + } + if (!waypoints_[0].first->build (p, q1, configs_.col (0))) { + hppDout (info, "Waypoint edge " << name() << ": build failed at waypoint 0." + << "\nUse cache: " << useCache + ); return false; + } pv->appendPath (p); for (std::size_t i = 1; i < waypoints_.size (); ++i) { assert (waypoints_[i].first); if (!useCache) configs_.col (i) = q2; - if (!waypoints_[i].first->applyConstraints (configs_.col(i-1), configs_.col (i))) + if (!waypoints_[i].first->applyConstraints (configs_.col(i-1), configs_.col (i))) { + hppDout (info, "Waypoint edge " << name() << ": applyConstraints failed at waypoint " << i << "." + << "\nUse cache: " << useCache + ); return false; - if (!waypoints_[i].first->build (p, configs_.col(i-1), configs_.col (i))) + } + if (!waypoints_[i].first->build (p, configs_.col(i-1), configs_.col (i))) { + hppDout (info, "Waypoint edge " << name() << ": build failed at waypoint " << i << "." + << "\nUse cache: " << useCache + ); return false; + } pv->appendPath (p); } diff --git a/src/problem-solver.cc b/src/problem-solver.cc index 8c3b434..e3dca54 100644 --- a/src/problem-solver.cc +++ b/src/problem-solver.cc @@ -27,8 +27,6 @@ #include <hpp/constraints/convex-shape-contact.hh> #include <hpp/core/random-shortcut.hh> -#include <hpp/core/discretized-collision-checking.hh> -#include <hpp/core/continuous-collision-checking/progressive.hh> #include <hpp/core/path-optimization/partial-shortcut.hh> #include <hpp/core/roadmap.hh> #include <hpp/core/steering-method-straight.hh> @@ -49,7 +47,7 @@ #include "hpp/manipulation/graph-steering-method.hh" #include "hpp/manipulation/path-optimization/config-optimization.hh" -#ifdef HPP_MANIPULATION_HAS_WHOLEBODY_STEP +#if HPP_MANIPULATION_HAS_WHOLEBODY_STEP #include <hpp/wholebody-step/small-steps.hh> #include "hpp/manipulation/path-optimization/small-steps.hh" #endif diff --git a/src/problem.cc b/src/problem.cc index 155bb89..fba71b7 100644 --- a/src/problem.cc +++ b/src/problem.cc @@ -15,6 +15,9 @@ // hpp-manipulation. If not, see <http://www.gnu.org/licenses/>. #include <hpp/manipulation/problem.hh> + +#include <hpp/core/discretized-collision-checking.hh> + #include <hpp/manipulation/weighed-distance.hh> #include <hpp/manipulation/graph-steering-method.hh> @@ -25,6 +28,7 @@ namespace hpp { { Parent::steeringMethod (GraphSteeringMethod::create (this)); distance (WeighedDistance::create (robot, graph_)); + setPathValidationFactory(core::DiscretizedCollisionChecking::create, 0.05); } void Problem::constraintGraph (const graph::GraphPtr_t& graph) -- GitLab