hpp-manipulation
6.0.0
Classes for manipulation planning.
|
#include <hpp/manipulation/graph/edge.hh>
Public Member Functions | |
virtual | ~LevelSetEdge () |
virtual bool | generateTargetConfig (core::NodePtr_t nStart, ConfigurationOut_t q) const |
virtual bool | generateTargetConfig (ConfigurationIn_t qStart, ConfigurationOut_t q) const |
bool | generateTargetConfigOnLeaf (ConfigurationIn_t qStart, ConfigurationIn_t qLeaf, ConfigurationOut_t q) const |
virtual ConstraintSetPtr_t | buildTargetConstraint () |
Build path and target state constraints. More... | |
void | buildHistogram () |
LeafHistogramPtr_t | histogram () const |
virtual std::ostream & | dotPrint (std::ostream &os, dot::DrawingAttributes da=dot::DrawingAttributes()) const |
Print the object in a stream. More... | |
Foliation definition | |
void | insertParamConstraint (const ImplicitPtr_t &nm) |
const NumericalConstraints_t & | paramConstraints () const |
Get constraints parameterizing the target state foliation. More... | |
void | insertConditionConstraint (const ImplicitPtr_t &nm) |
const NumericalConstraints_t & | conditionConstraints () const |
![]() | |
virtual | ~Edge () |
Destructor. More... | |
virtual bool | canConnect (ConfigurationIn_t q1, ConfigurationIn_t q2) const |
virtual bool | build (core::PathPtr_t &path, ConfigurationIn_t q1, ConfigurationIn_t q2) const |
StatePtr_t | stateTo () const |
Get the destination. More... | |
StatePtr_t | stateFrom () const |
Get the origin. More... | |
StatePtr_t | state () const |
Get the state in which path is. More... | |
void | state (StatePtr_t state) |
const core::SteeringMethodPtr_t & | steeringMethod () const |
Get steering method associated to the edge. More... | |
const core::PathValidationPtr_t & | pathValidation () const |
Get path validation associated to the edge. More... | |
const RelativeMotion::matrix_type & | relativeMotion () const |
void | relativeMotion (const RelativeMotion::matrix_type &m) |
Update the relative motion matrix. More... | |
void | securityMarginForPair (const size_type &row, const size_type &col, const value_type &margin) |
const matrix_t & | securityMargins () const |
Accessor to the security margin. More... | |
virtual bool | direction (const core::PathPtr_t &path) const |
virtual bool | intersectionConstraint (const EdgePtr_t &other, ConfigProjectorPtr_t projector) const |
ConstraintSetPtr_t | targetConstraint () const |
Constraint of the destination state and of the path. More... | |
void | setShort (bool isShort) |
bool | isShort () const |
ConstraintSetPtr_t | pathConstraint () const |
![]() | |
virtual | ~GraphComponent () |
const std::string & | name () const |
Get the component name. More... | |
const std::size_t & | id () const |
Return the component id. More... | |
virtual void | addNumericalConstraint (const ImplicitPtr_t &numConstraint) |
Add constraint to the component. More... | |
virtual void | addNumericalCost (const ImplicitPtr_t &numCost) |
Add a cost function Implicit to the component. More... | |
virtual void | resetNumericalConstraints () |
Reset the numerical constraints stored in the component. More... | |
bool | insertNumericalConstraints (ConfigProjectorPtr_t &proj) const |
const NumericalConstraints_t & | numericalConstraints () const |
Get a reference to the NumericalConstraints_t. More... | |
const NumericalConstraints_t & | numericalCosts () const |
Get a reference to the NumericalConstraints_t. More... | |
void | parentGraph (const GraphWkPtr_t &parent) |
Set the parent graph. More... | |
GraphPtr_t | parentGraph () const |
Set the parent graph. More... | |
virtual void | invalidate () |
void | solveLevelByLevel (bool solveLevelByLevel) |
bool | solveLevelByLevel () const |
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 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 () |
![]() | |
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... | |
![]() | |
void | init (const GraphComponentWkPtr_t &weak) |
Initialize the component. More... | |
GraphComponent (const std::string &name) | |
void | throwIfNotInitialized () const |
Additional Inherited Members | |
![]() | |
typedef core::RelativeMotion | RelativeMotion |
![]() | |
bool | isShort_ |
![]() | |
NumericalConstraints_t | numericalConstraints_ |
Stores the numerical constraints. More... | |
NumericalConstraints_t | numericalCosts_ |
Stores the numerical costs. 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.
robot grasping an object."
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 \(\mathbf{q}_{start}\) in state Placement, this transition will produce a target configuration (method generateTargetConfig) as follows.
grasp_comp
with \(\mathbf{q}_{rand}\), placement_comp
with \(\mathbf{q}_{start}\), grasp
, placement
, placement_comp
, grasp_comp
) using input configuration \(\mathbf{q}\). 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 |
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
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.
|
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.
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 | ) |
Insert a condition constraint
void hpp::manipulation::graph::LevelSetEdge::insertParamConstraint | ( | const ImplicitPtr_t & | nm | ) |
Insert a constraints parameterizing the target state foliation
nm | the numerical 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.