RobWorkProject
23.9.11-
|
Edge constraint interface. More...
#include <QEdgeConstraint.hpp>
Public Types | |
typedef rw::core::Ptr< QEdgeConstraint > | Ptr |
smart pointer type to this class | |
typedef rw::core::Ptr< const QEdgeConstraint > | CPtr |
smart pointer type to this class | |
Public Member Functions | |
virtual | ~QEdgeConstraint () |
Destructor. | |
bool | inCollision (const rw::math::Q &start, const rw::math::Q &end) const |
True if the path from start to end can't be traversed. More... | |
Static Public Member Functions | |
static QEdgeConstraint::Ptr | make (rw::core::Ptr< QConstraint > constraint, rw::math::QMetric::CPtr metric, double resolution) |
Discrete path verification for a linearly interpolated path. More... | |
static QEdgeConstraint::Ptr | makeDefault (rw::core::Ptr< QConstraint > constraint, rw::core::Ptr< const rw::models::Device > device) |
Default edge constraint for a configuration constraint and a device. More... | |
static QEdgeConstraint::Ptr | makeMerged (const std::vector< QEdgeConstraint::Ptr > &constraints) |
Makes an edge constraint by combining multiple edge constraints. More... | |
static QEdgeConstraint::Ptr | makeMerged (QEdgeConstraint::Ptr constraint1, QEdgeConstraint::Ptr constraint2) |
Makes an edge constraint by combining two edge constraints. More... | |
Protected Member Functions | |
virtual bool | doInCollision (const rw::math::Q &start, const rw::math::Q &end) const =0 |
Subclass implementation of the inCollision() method. More... | |
Edge constraint interface.
An edge constraint represents a path that connects a pair of configurations and checks if this path can be traversed.
The edge constraint may assume that the start and end configurations are valid (e.g. not colliding).
Each edge has a non-negative cost measuring the degree to which the path connecting the configurations has been verified. You can use the cost measure to for example always verify the edge for which the most of the path still remains to be verified. The exact meaning of the cost is defined by the specific subclass.
Given an edge constraint you can construct a new edge constraint of the same type, but for a new pair of configurations, with QEdgeConstraint::instance().
|
protectedpure virtual |
Subclass implementation of the inCollision() method.
By default the method is implemented in terms of instance() and inCollision().
|
inline |
True if the path from start to end can't be traversed.
start | [in] Start configuration. |
end | [in] End configuration. |
|
static |
Discrete path verification for a linearly interpolated path.
Performs a binary style checking of the edge with a resolution of resolution. The length of the edge is virtually extended to exactly match the specified resolution. However, only configurations within the original length are tested.
Each configuration tested is checked using \b constraint. The metric must be well-behaved, i.e. linear.
Start and end configurations are assumed to be collision free.
\param constraint [in] Constraint to check configurations with \param metric [in] Metric with which the resolution it to be measured \param resolution [in] The test resolution
|
static |
Default edge constraint for a configuration constraint and a device.
Start and end configurations are connected by a straight line in the configuration space and are checked by a default collision checking resolution.
|
static |
Makes an edge constraint by combining multiple edge constraints.
The constraints provided are called one by one in the order provided. It is assumed that all constraints matches the same device.
constraints | [in] List of constraints to check |
|
static |
Makes an edge constraint by combining two edge constraints.
The constraints provided are called one by one in the order provided. It is assumed that all constraints matches the same device.
constraint1 | [in] First constraint to check |
constraint2 | [in] Second constraint to check |