diff --git a/doc/Doxyfile.extra.in b/doc/Doxyfile.extra.in index 5d0ee659857b48b4bd5646538af774441e91e29b..f36a30b8d16c3f7bfd34667bc6b07ef39cbac903 100644 --- a/doc/Doxyfile.extra.in +++ b/doc/Doxyfile.extra.in @@ -1,7 +1,7 @@ INPUT = @CMAKE_SOURCE_DIR@/doc \ @CMAKE_SOURCE_DIR@/include \ - @CMAKE_BINARY_DIR@/doc \ - @CMAKE_BINARY_DIR@/src/steering-method/cross-state-optimization + @CMAKE_SOURCE_DIR@/src/steering-method/cross-state-optimization/function.cc \ + @CMAKE_BINARY_DIR@/doc HTML_EXTRA_FILES = @CMAKE_SOURCE_DIR@/doc/ObjectManipulation_MasterThesis_JosephMirabel.pdf diff --git a/include/hpp/manipulation/steering-method/cross-state-optimization.hh b/include/hpp/manipulation/steering-method/cross-state-optimization.hh index cf040c1edf4d0d6919aaa2404345e3c38018a24e..8b555508fab9dcdbaa1025881e7a490043fd38b3 100644 --- a/include/hpp/manipulation/steering-method/cross-state-optimization.hh +++ b/include/hpp/manipulation/steering-method/cross-state-optimization.hh @@ -28,6 +28,31 @@ namespace hpp { namespace manipulation { namespace steeringMethod { + /// \addtogroup steering_method + /// \{ + + /// Optimization-based steering method. + /// + /// #### Methodology + /// + /// Given two configuration \f$ (q_1,q_2) \f$, this class formulates and + /// solves the problem as follows. + /// - Compute the corresponding states \f$ (s_1, s_2) \f$. + /// - For a each path \f$ (e_0, ... e_n) \f$ between \f$ (s_1, s_2) \f$ + /// in the constraint graph, do: + /// - define \f$ n-1 \f$ intermediate configuration \f$ p_i \f$, + /// - initialize the optimization problem, as explained below, + /// - solve the optimization problem, which gives \f$ p^*_i \f$, + /// - in case of failure, continue the loop. + /// - call the Edge::build of each \f$ e_j \f$ for each consecutive + /// \f$ (p^*_i, p^*_{i+1}) \f$. + /// + /// #### Problem formulation + /// Find \f$ (p_i) \f$ such that: + /// - \f$ p_0 = q_1 \f$, + /// - \f$ p_{n+1} = q_2 \f$, + /// - \f$ p_i \f$ is in state between \f$ (e_{i-1}, e_i) \f$, (\ref StateFunction) + /// - \f$ (p_i, p_{i+1}) \f$ are reachable with transition \f$ e_i \f$ (\ref EdgeFunction). class HPP_MANIPULATION_DLLAPI CrossStateOptimization : public SteeringMethod { @@ -81,6 +106,7 @@ namespace hpp { /// Weak pointer to itself CrossStateOptimizationWkPtr_t weak_; }; // class CrossStateOptimization + /// \} template <typename T> CrossStateOptimizationPtr_t CrossStateOptimization::create diff --git a/include/hpp/manipulation/steering-method/graph.hh b/include/hpp/manipulation/steering-method/graph.hh index 5374e8099e06eedaa4cb0296e70af87d83504804..b3145b7109500354416b1fab673554c6e0b9707b 100644 --- a/include/hpp/manipulation/steering-method/graph.hh +++ b/include/hpp/manipulation/steering-method/graph.hh @@ -28,6 +28,8 @@ namespace hpp { namespace manipulation { + /// \addtogroup steering_method + /// \{ class HPP_MANIPULATION_DLLAPI SteeringMethod : public core::SteeringMethod { public: @@ -61,8 +63,6 @@ namespace hpp { namespace steeringMethod { using core::PathPtr_t; - /// \addtogroup steering_method - /// \{ class HPP_MANIPULATION_DLLAPI Graph : public SteeringMethod { @@ -119,8 +119,8 @@ namespace hpp { gsm->innerSteeringMethod (T::create (problem)); return gsm; } - /// \} } // namespace steeringMethod + /// \} } // namespace manipulation } // namespace hpp diff --git a/src/steering-method/cross-state-optimization/function.cc b/src/steering-method/cross-state-optimization/function.cc index 40ea94060c8664823610aed61a1cf7b7f77eb6e0..3ba0c3d79aefbf8eafacf286723ea8ec674ef6ea 100644 --- a/src/steering-method/cross-state-optimization/function.cc +++ b/src/steering-method/cross-state-optimization/function.cc @@ -31,7 +31,7 @@ namespace hpp { } } - /// Apply the constraint on a subspace of the input space: + /// Apply the constraint on a subspace of the input space. /// i.e.: \f$ f (q_0, ... , q_n) = f_{inner} (q_k) \f$ class HPP_MANIPULATION_LOCAL StateFunction : public constraints::DifferentiableFunction