18 #ifndef HPP_MANIPULATION_STEERING_METHOD_CROSS_STATE_OPTIMIZATION_HH
19 # define HPP_MANIPULATION_STEERING_METHOD_CROSS_STATE_OPTIMIZATION_HH
21 # include <hpp/core/steering-method.hh>
22 # include <hpp/core/config-projector.hh>
31 namespace manipulation {
32 namespace steeringMethod {
90 struct OptimizationData;
108 sameRightHandSide_ ()
110 gatherGraphConstraints ();
115 index_ (other.index_), sameRightHandSide_
116 (other.sameRightHandSide_), weak_ ()
121 void init (CrossStateOptimizationWkPtr_t weak)
128 typedef constraints::solver::BySubstitution Solver_t;
129 struct GraphSearchData;
132 void gatherGraphConstraints ();
136 bool findTransitions (GraphSearchData& data)
const;
139 graph::Edges_t getTransitionList (GraphSearchData& data,
const std::size_t& i)
const;
142 bool buildOptimizationProblem
146 bool solveOptimizationProblem (OptimizationData& d)
const;
148 bool checkConstantRightHandSide (OptimizationData& d,
151 core::PathVectorPtr_t buildPath (OptimizationData& d,
const graph::Edges_t& edges)
const;
153 bool contains (
const Solver_t& solver,
const ImplicitPtr_t& c)
const;
158 std::map < std::string, std::size_t > index_;
162 std::map <ImplicitPtr_t, ImplicitPtr_t> sameRightHandSide_;
165 CrossStateOptimizationWkPtr_t weak_;
169 template <
typename T>
175 gsm->innerSteeringMethod (T::create (problem));
182 #endif // HPP_MANIPULATION_STEERING_METHOD_CROSS_STATE_OPTIMIZATION_HH