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.
|int ||num_bv_tests |
|int ||num_tri_tests |
|int ||num_points_tested |
|double ||min_interval_sz |
|double ||coll_t |
| ||mpkSimpleSegmentChecker (mpkConfigChecker* ccheck, const mpkConfig* q0, const mpkConfig* q1, double epsilon, cspace_metric metric=EUCLID)|
|double ||prio ()|
|bool ||collision ()|
|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
The priority of examining the segment is proportional to the
(c-space) length of the untested subsegments between the
intermediate tested points.
- 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).
- double 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.
- enum 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
- bool 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 .
- int num_bv_tests
- Number of BV pair tests performed so far.
- int num_tri_tests
- Number of triangle pair tests performed so far.
- int num_points_tested
- Number of points on segments
- double min_interval_sz
- Normalized resolution up to which segment has been checked
(initially 1 and then halved by each call to
- double coll_t
- Normalized parameter corresponding to collision point on
segment (between 0 and 1). Meaningless unless collision indicated
- 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++.