30 #ifndef HPP_MANIPULATION_STEERING_METHOD_CROSS_STATE_OPTIMIZATION_HH
31 #define HPP_MANIPULATION_STEERING_METHOD_CROSS_STATE_OPTIMIZATION_HH
33 #include <hpp/core/config-projector.hh>
34 #include <hpp/core/steering-method.hh>
42 namespace manipulation {
43 namespace steeringMethod {
101 struct OptimizationData;
109 template <
typename T>
118 gatherGraphConstraints();
123 constraints_(other.constraints_),
124 index_(other.index_),
125 sameRightHandSide_(other.sameRightHandSide_),
131 void init(CrossStateOptimizationWkPtr_t weak) {
137 typedef constraints::solver::BySubstitution Solver_t;
138 struct GraphSearchData;
141 void gatherGraphConstraints();
145 bool findTransitions(GraphSearchData& data)
const;
149 const std::size_t& i)
const;
152 bool buildOptimizationProblem(OptimizationData& d,
156 bool solveOptimizationProblem(OptimizationData& d)
const;
158 bool checkConstantRightHandSide(OptimizationData& d,
size_type index)
const;
160 core::PathVectorPtr_t buildPath(OptimizationData& d,
163 bool contains(
const Solver_t& solver,
const ImplicitPtr_t& c)
const;
168 std::map<std::string, std::size_t> index_;
172 std::map<ImplicitPtr_t, ImplicitPtr_t> sameRightHandSide_;
175 CrossStateOptimizationWkPtr_t weak_;
179 template <
typename T>
183 gsm->innerSteeringMethod(T::create(problem));
190 #endif // HPP_MANIPULATION_STEERING_METHOD_CROSS_STATE_OPTIMIZATION_HH