Skip to content
Snippets Groups Projects
Commit e9d44f80 authored by Joseph Mirabel's avatar Joseph Mirabel Committed by Joseph Mirabel
Browse files

Update documentation.

parent abf9b9c1
No related branches found
No related tags found
No related merge requests found
......@@ -40,6 +40,7 @@ SET (TEST_UR5 FALSE CACHE BOOL "Activate tests using ur5")
SEARCH_FOR_BOOST()
ADD_DOC_DEPENDENCY(hpp-model >= 3.0.0)
ADD_DOC_DEPENDENCY(hpp-manipulation-urdf)
ADD_REQUIRED_DEPENDENCY(hpp-core >= 3.0.0)
ADD_REQUIRED_DEPENDENCY(hpp-constraints >= 3.0.0)
ADD_REQUIRED_DEPENDENCY(hpp-statistics >= 0.1)
......
......@@ -4,7 +4,8 @@ INPUT = @CMAKE_SOURCE_DIR@/doc \
TAGFILES = @HPP_MODEL_DOXYGENDOCDIR@/hpp-model.doxytag=@HPP_MODEL_DOXYGENDOCDIR@ \
@HPP_CORE_DOXYGENDOCDIR@/hpp-core.doxytag=@HPP_CORE_DOXYGENDOCDIR@ \
@HPP_CONSTRAINTS_DOXYGENDOCDIR@/hpp-constraints.doxytag=@HPP_CONSTRAINTS_DOXYGENDOCDIR@
@HPP_CONSTRAINTS_DOXYGENDOCDIR@/hpp-constraints.doxytag=@HPP_CONSTRAINTS_DOXYGENDOCDIR@ \
@HPP_MANIPULATION_URDF_DOXYGENDOCDIR@/hpp-manipulation-urdf.doxytag=@HPP_MANIPULATION_URDF_DOXYGENDOCDIR@
HTML_EXTRA_FILES = @CMAKE_SOURCE_DIR@/doc/ObjectManipulation_MasterThesis_JosephMirabel.pdf
......
......@@ -6,42 +6,52 @@ namespace hpp {
\section sec_intro_hpp_manipulation Introduction
This package implements a solver for manipulation planning problems. A manipulation planning problem
is defined by:
\li Robot Build a \LModel{Device} from several \LModel{Device} and Object,
\li Object A \LModel{Device} with Handle,
\li Graph A graph of constraints defining the rules of a manipulation problem,
\li ManipulationPlanner Implements a RRT-based algorithm to solve manipulation planning problems.
This package implements a solver for manipulation planning problems. A
manipulation planning problem is defined by:
\li Device: a collection of several \LModel{Device} with \ref Gripper
"grippers" and \ref Handle "handles",
\li Graph: A graph of constraints defining the rules of a manipulation
problem.
To build a Device, have a look at the package \ref hpp_manipulation_urdf
"hpp-manipulation-urdf".
ManipulationPlanner implements a RRT-based algorithm to solve manipulation
planning problems.
\section sec_graph_hpp_manipulation Constraint graph
The graph of constraint, also referred to as constraint graph, represents the rules of a manipulation problem.
The component of the graph are:
The graph of constraint, also referred to as constraint graph, represents the
rules of a manipulation problem. The component of the graph are:
\li Node represents a state of the Robot with constraints,
\li Edge represents a transition between two Node with parametric constraints.
Node contains a set of \LHPP{core,Constraint} that a configuration of the Robot should satisfy
to be in the represented state. To ensure that a configuration is in only one state, the Node are
ordered in a NodeSelector. The method NodeSelector::getNode(ConfigurationIn_t) const returns a
pointer to the first Node for which Node::contains(ConfigurationIn_t) const returns true.
For optimization only, another set of \LHPP{core,Constraint} is used for \LHPP{core,StraightPath} lying in this Node.
Node contains a set of \LHPP{core,Constraint} that a configuration of the
Robot should satisfy to be in the represented state. To ensure that a
configuration is in only one state, the Node are ordered in a NodeSelector.
The method NodeSelector::getNode(ConfigurationIn_t) const returns a pointer to
the first Node for which Node::contains(ConfigurationIn_t) const returns true.
For optimization only, another set of \LHPP{core,Constraint} is used for
\LHPP{core,StraightPath} lying in this Node.
Edge has methods Edge::isInNodeFrom, to tell if a corresponding path lyes in Edge::from() or Edge::to(),
and Edge::node(), to retrive this Node.
Edge has methods Edge::isInNodeFrom, to tell if a corresponding path lyes in
Edge::from() or Edge::to(), and Edge::node(), to retrive this Node.
Edge also contains two sets of \LHPP{core,Constraint}:
\li Edge::configConstraint() returns a \LHPP{core,ConstraintSet} used to generate a configuration lying in Edge::to()
and respecting the rightHandSide (previsously set using hpp::core::ConfigProjector::leftHandSideFromConfig),
\li Edge::pathConstraint() returns a \LHPP{core,ConstraintSet} to be inserted in \LHPP{core,Path} represented
by this Edge.
\li Edge::configConstraint() returns a \LHPP{core,ConstraintSet} used to
generate a configuration lying in Edge::to() and respecting the
\LHPP{core,ConfigProjector::rightHandSide},
\li Edge::pathConstraint() returns a \LHPP{core,ConstraintSet} to be inserted
in \LHPP{core,Path} represented by this Edge.
\note
For implementation details, see graph::Graph.
For more information about parametric and non-parametric constraints, see \LHPP{core,DifferentiableFunction}
and \LHPP{core,ConfigProjector}
For more information about parametric and non-parametric constraints, see
\LHPP{core,DifferentiableFunction} and \LHPP{core,ConfigProjector}
\section sec_solver_hpp_manipulation Manipulation planner
ManipulationPlanner class implements an algorithm based on RRT. See
<a href="ObjectManipulation_MasterThesis_JosephMirabel.pdf">this master thesis</a> for details about the algorithm.
<a href="ObjectManipulation_MasterThesis_JosephMirabel.pdf">this master
thesis</a> for details about the algorithm.
**/
}
}
......
......@@ -25,10 +25,11 @@
namespace hpp {
namespace manipulation {
namespace graph {
/// Description of the constraint graph
/// Description of the constraint graph.
///
/// This class contains a graph representing a robot with several
/// end-effectors.
///
///
/// One must make sure not to create loop with shared pointers.
/// To ensure that, the classes are defined as follow:
/// - A Graph owns (i.e. has a shared pointer to) the NodeSelector s
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment