class mpkSimpleSegmentChecker

Simple lazy segment checker that discretizes a segment up to a certain resolution in c-space and checks the generated intermediate configurations for collisions using the mpkConfigChecker class.

Public Fields

[more]int num_bv_tests
[more]int num_tri_tests
[more]int num_points_tested
[more]double min_interval_sz
[more]double coll_t

Public Methods

[more] mpkSimpleSegmentChecker (mpkConfigChecker* ccheck, const mpkConfig* q0, const mpkConfig* q1, double epsilon, cspace_metric metric=EUCLID)
[more]double prio ()
[more]bool collision ()

Public Members

[more]enum collcheck_mode


The checker can be embedded with other checkers in a priority queue for testing entire paths (sequences of segments). To this end, the checker offers performing single iteration steps and a function that returns, after each iteration, the priority of further examining the segment.

Each iteration step of the checker examines a number of 2^curr_bisection_depth equally spaced points on the segment. The points are chosen such that they fall between all the points that were checked before at previous iteration steps with smaller bisection depths. The point for depth 0 is thus located at t=0.5, for depth 1 the points are located at t=0.25 and t=0.75, for depth 2 at t=0.125, t=0.375, t=0.625 and t=0.875 and so on. The time required by this function thus increases exponentially with each call.

The priority of examining the segment is proportional to the (c-space) length of the untested subsegments between the intermediate tested points.

o mpkSimpleSegmentChecker(mpkConfigChecker* ccheck, const mpkConfig* q0, const mpkConfig* q1, double epsilon, cspace_metric metric=EUCLID)
ccheck - simple point checker for testing intermediate points.
q0 - one endpoint of segment
q1 - the other endpoint (neither endpoint is tested explicitly by the segment checker)
epsilon - c-space resolution up to which the segment is bisected by additional intermediate points. When the (c-space) distance between sampled intermediate points has fallen below epsilon, the segment is considered collision-free.
metric - c-space metric for determining the length of the (sub-)segment(s); either EUCLID or L_INFINITY (max-norm).

odouble prio()
Returns the current priority of the segment which is proportional to the lengths of the untested subsegments between the points that have been sampled and tested so far.

oenum collcheck_mode
Performs a single iteration step of the checker.

true if the status of the segment has not yet been determined. Further calls are required to determine the status. In this case, calls to collision() will return false which means that no collision has been found yet and thus (so far) the segment is assumed to be free.
false when the status of the segment has been determined: resolution reached or collision found. Further calls are not necessary. The status can then be queried using the collision() method.

obool collision()
Returns true if it the segment has been found to be colliding and false if the segment is assumed to be free. In the latter case, there is no guarantee that the segment is actually collision-free but the probability of a correct answer increases with decreasing resolution .

oint num_bv_tests
Number of BV pair tests performed so far.

oint num_tri_tests
Number of triangle pair tests performed so far.

oint num_points_tested
Number of points on segments

odouble min_interval_sz
Normalized resolution up to which segment has been checked (initially 1 and then halved by each call to iteration_step().

odouble coll_t
Normalized parameter corresponding to collision point on segment (between 0 and 1). Meaningless unless collision indicated by collision().

This class has no child classes.
See Also:

Alphabetic index HTML hierarchy of classes or Java

This page was generated with the help of DOC++.