Adaptive collision checker for straight line segments in c-space.
number of BV pairs tested so far.
number of triangle pairs tested so far.
number of distance computations for object pairs so far.
if a collision was found, this value parameterizes (in [0,1]) the collision point on the segment.
|mpkAdaptSegmentChecker (const mpkConfigChecker* ccheck0, const mpkConfigChecker* ccheck1, bool use_transf_cache=true)|
The recommended constructor. It takes pointers to two configuration checkers that certify that refer to the endpoints of the segment and certify that these are free (be sure to call clearance() on both configuration checkers before passing them to this contructor). The segment checker accesses the configurations by following the pointers to the configuration checkers. Thus the configuration checkers cannot be used for testing different configurations while the segment checker is active. Instead, create a new configuration checker for each configuration. Transform caching should be disabled only if memory consumption is too high otherwise.
|mpkAdaptSegmentChecker (const mpkConfigChecker* ccheck, const mpkConfig* q0, const mpkConfig* q1, bool use_transf_cache=true)|
This constructor accepts two configurations directly. However, it is not as efficient as the other constructor and therefore not recommended if speed is an issue. Transform caching should be disabled only if memory consumption is too high otherwise.
Returns the size of the internal priority queue.
Returns the priority of the first subsegment test in the internal priority queue.
Performs one iteration step of (lazy) segment checking and returns false if the status of the segment has been determined (no more steps necessary) or true if more iteration steps are necessary. This function may increase or decrease the size of the internal priority queue.
Returns true as long as it is not clear whether the segment is free (more calls of iteration_step() necessary) and false if it the segment has been found to be free
This checker is guaranteed not to miss collisions. It relates workspace distance to bounds on the motions of objects and uses a collision-free predicate to adapt the local resolution at which the segment is checked.
The checker is 'lazy' in the sense that it does not finish the segment checking in one step. Instead, it has a function iteration_step() that performs the next scheduled step each time it is called. This is useful for so-called 'lazy' collision checking PRM planners such as SBL. If lazy collision checking is not desired, simply call iteration_step() in a loop until it returns false and then query the result using collision(). Note that in general, the return value of collision() is not meaningful until iteration_step() has returned false.
Using the transform cache is generally recommended. Disable it only if you encounter storage problems. In a lazy collision checking planner, many adaptive segment checkers might be active at the same time and thus the memory consumption by the internal priority queues might be very high. If this creates problems, the size of the internal priority queues can be limited by calling iteration_step() multiple times until queue_size() returns a value below a desired limit.
Alphabetic index HTML hierarchy of classes or Java