hpp-manipulation
4.9.0
Classes for manipulation planning.
|
#include <hpp/manipulation/graph/edge.hh>
Static Public Member Functions | |
static LevelSetEdgePtr_t | create (const std::string &name, const GraphWkPtr_t &graph, const StateWkPtr_t &from, const StateWkPtr_t &to) |
Create a new LevelSetEdge. More... | |
Static Public Member Functions inherited from hpp::manipulation::graph::Edge | |
static EdgePtr_t | create (const std::string &name, const GraphWkPtr_t &graph, const StateWkPtr_t &from, const StateWkPtr_t &to) |
Create a new empty Edge. More... | |
Protected Member Functions | |
void | init (const LevelSetEdgeWkPtr_t &weak, const GraphWkPtr_t &graph, const StateWkPtr_t &from, const StateWkPtr_t &to) |
Initialization of the object. More... | |
LevelSetEdge (const std::string &name) | |
virtual std::ostream & | print (std::ostream &os) const |
Print the object in a stream. More... | |
virtual void | populateTooltip (dot::Tooltip &tp) const |
Populate DrawingAttributes tooltip. More... | |
virtual void | initialize () |
Protected Member Functions inherited from hpp::manipulation::graph::Edge | |
void | init (const EdgeWkPtr_t &weak, const GraphWkPtr_t &graph, const StateWkPtr_t &from, const StateWkPtr_t &to) |
Initialization of the object. More... | |
Edge (const std::string &name) | |
Constructor. More... | |
virtual ConstraintSetPtr_t | buildPathConstraint () |
Build path constraints. More... | |
Protected Member Functions inherited from hpp::manipulation::graph::GraphComponent | |
void | init (const GraphComponentWkPtr_t &weak) |
Initialize the component. More... | |
GraphComponent (const std::string &name) | |
void | throwIfNotInitialized () const |
Additional Inherited Members | |
Public Types inherited from hpp::manipulation::graph::Edge | |
typedef core::RelativeMotion | RelativeMotion |
Protected Attributes inherited from hpp::manipulation::graph::Edge | |
bool | isShort_ |
Protected Attributes inherited from hpp::manipulation::graph::GraphComponent | |
NumericalConstraints_t | numericalConstraints_ |
Stores the numerical constraints. More... | |
IntervalsContainer_t | passiveDofs_ |
Stores the passive dofs for each numerical constraints. More... | |
NumericalConstraints_t | numericalCosts_ |
Stores the numerical costs. More... | |
const LockedJoints_t | lockedJoints_ |
List of LockedJoint constraints: More... | |
GraphWkPtr_t | graph_ |
A weak pointer to the parent graph. More... | |
bool | isInit_ |
Edge that handles crossed foliations
Let us consider the following simple constraint graph corresponding to a robot grasping an object with one gripper.
In order to disambiguate, we assume here that
If state Placement is defined by the object lying on a planar polygonal surface, then
are all constrained in a foliated manifold parameterized by the position of the box on the surface.
Likewise, if the object is cylindrical the grasp may have a degree of freedom corresponding to the angle around z-axis of the gripper with respect to the object. See classes Handle and Gripper for details. In this latter case,
are all constrained in a foliated manifold parameterized by the angle around z-axis of the gripper with respect to the object.
Let us denote
grasp
the numerical constraint defining state Grasp, placement
the numerical constraint defining state Placement, grasp_comp
the parameterized constraint defining a leaf of Transfer
(the angle between the gripper and the object), placement_comp
the parameterized constraint defining a leaf of Placement (the position of the object on the contact surface).As explained in this paper , we are in the crossed foliation case and manipulation RRT will never be able to connect trees expanding in different leaves of the foliation.
This class solves this issue in the following way by creating an instance of LevelSetEdge between Placement and Grasp.
When extending a configuration in state Placement, this transition will produce a target configuration (method generateTargetConfig) as follows.
grasp_comp
with , placement_comp
with , grasp
, placement
, placement_comp
, grasp_comp
) using input configuration . Note that the parent method Edge::generateTargetConfig does the same without adding grasp_comp
.The constraints parameterizing the target state foliation (graps_comp
in our example) are passed to class instances using method insertParamConstraint.
|
virtual |
|
protected |
|
virtual |
Generate a reachable configuration in the target state
nStart | node containing the configuration defining the right hand side of the edge constraint, | |
[in,out] | q | input configuration used to initialize the numerical solver and output configuration lying in the target state and reachable along the edge from nnear |
Reimplemented from hpp::manipulation::graph::Edge.
|
virtual |
Generate a reachable configuration in the target state
qStart | node containing the configuration defining the right hand side of the edge path constraint, | |
[in,out] | q | input configuration used to initialize the numerical solver and output configuration lying in the target state and reachable along the edge from nnear. |
Reimplemented from hpp::manipulation::graph::Edge.
|
virtual |
Reimplemented from hpp::manipulation::graph::Edge.
void hpp::manipulation::graph::LevelSetEdge::buildHistogram | ( | ) |
Build the histogram
|
virtual |
Build path and target state constraints.
Reimplemented from hpp::manipulation::graph::Edge.
const NumericalConstraints_t& hpp::manipulation::graph::LevelSetEdge::conditionConstraints | ( | ) | const |
Get constraints parameterizing the target state foliation
|
static |
Create a new LevelSetEdge.
|
virtual |
Print the object in a stream.
Reimplemented from hpp::manipulation::graph::Edge.
|
virtual |
Generate a reachable configuration in the target state
nStart | node containing the configuration defining the right hand side of the edge path constraint, | |
[in,out] | q | input configuration used to initialize the numerical solver and output configuration lying in the target state and reachable along the edge from nStart. |
Reimplemented from hpp::manipulation::graph::Edge.
|
virtual |
Generate a reachable configuration in the target state
qStart | configuration defining the right hand side of the edge path constraint, | |
[in,out] | q | input configuration used to initialize the numerical solver and output configuration lying in the target state and reachable along the edge from nnear. |
Reimplemented from hpp::manipulation::graph::Edge.
bool hpp::manipulation::graph::LevelSetEdge::generateTargetConfigOnLeaf | ( | ConfigurationIn_t | qStart, |
ConfigurationIn_t | qLeaf, | ||
ConfigurationOut_t | q | ||
) | const |
Generate a reachable configuration in leaf of target state
qStart | configuration defining the right hand side of the edge path constraint, |
qLeaf | configuration used to set the right hand side of the target state foliation. See method insertParamConstraint. |
LeafHistogramPtr_t hpp::manipulation::graph::LevelSetEdge::histogram | ( | ) | const |
Return pointer on histogram of the edge
The edge histogram is a container of configurations defined by a set of constraints called the condition constraints that a configuration should satisfy to be inserted in the histogram.
The histogram is passed to the Roadmap via the graph (method Graph::insertHistogram). The roadmap then populates the histogram with all new configurations satisfying the condition constraints.
The condition constraints should therefore be the constraints of the target state of the level set edge.
|
protected |
Initialization of the object.
|
protectedvirtual |
Reimplemented from hpp::manipulation::graph::Edge.
void hpp::manipulation::graph::LevelSetEdge::insertConditionConstraint | ( | const ImplicitPtr_t & | nm, |
const segments_t & | passiveDofs = segments_t() |
||
) |
Insert a condition constraint
void hpp::manipulation::graph::LevelSetEdge::insertParamConstraint | ( | const ImplicitPtr_t & | nm, |
const segments_t & | passiveDofs = segments_t() |
||
) |
Insert a constraints parameterizing the target state foliation
nm | the numerical constraint, |
passiveDofs | the passive degrees of freedom of the constraint. |
const NumericalConstraints_t& hpp::manipulation::graph::LevelSetEdge::paramConstraints | ( | ) | const |
Get constraints parameterizing the target state foliation.
|
protectedvirtual |
Populate DrawingAttributes tooltip.
Reimplemented from hpp::manipulation::graph::GraphComponent.
|
protectedvirtual |
Print the object in a stream.
Reimplemented from hpp::manipulation::graph::Edge.