diff --git a/src/problem-solver.cc b/src/problem-solver.cc index 78951c60f7642ed94488b91a5ce3dad30811b73d..977b713700ca0319e0d2a856fbf1330265a4b8a7 100644 --- a/src/problem-solver.cc +++ b/src/problem-solver.cc @@ -24,6 +24,7 @@ #include <hpp/core/random-shortcut.hh> #include <hpp/core/discretized-collision-checking.hh> +#include <hpp/core/path-optimization/partial-shortcut.hh> #include "hpp/manipulation/device.hh" #include "hpp/manipulation/handle.hh" @@ -38,6 +39,13 @@ namespace hpp { namespace manipulation { + namespace { + struct PartialShortcutTrait : + core::pathOptimization::PartialShortcutTrait { + static bool removeLockedJoints () { return false; } + }; + } + std::ostream& operator<< (std::ostream& os, const Device& robot) { return robot.print (os); @@ -51,6 +59,10 @@ namespace hpp { GraphPathValidation::create <core::DiscretizedCollisionChecking>); addPathOptimizerType ("Graph-RandomShortcut", GraphOptimizer::create <core::RandomShortcut>); + addPathOptimizerType ("PartialShortcut", core::pathOptimization:: + PartialShortcut::createWithTrait <PartialShortcutTrait>); + addPathOptimizerType ("Graph-PartialShortcut", + GraphOptimizer::create <core::pathOptimization::PartialShortcut>); pathPlannerType ("M-RRT"); pathValidationType ("Graph-discretized", 0.05); }