This class implements a transition from one state to another state with intermediate states in-between. This feature is particularly interesting when manipulating objects. Between a state where a gripper does not grasp an object and a state where the same gripper grasps the object, it is useful to add an intermediate state where the gripper is close to the object.
Waypoints are handled recursively, i.e. class WaypointEdge contains only a State and an Edge, the second Edge being itself. In this package, the State in a WaypointEdge is semantically different from other State because it does not correspond to a state with different manipulation rules. It has the same rules as another State (either Edge::stateFrom() or Edge::stateTo()).
Semantically, a waypoint State is fully part of the WaypointEdge. When a corresponding path reaches it, no planning is required to know what to do next. To the contrary, when a path reaches Edge::stateFrom() or Edge::stateTo(), there may be several possibilities.
Note
Implementation details: let's say, between the two states and , two waypoints are required: . The WaypointEdge contains:
Generate a reachable configuration in the target state
Parameters
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. deprecated Used generateTargetConfig instead.
Generate a reachable configuration in the target state
Parameters
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.