C++ API
coal
Introduction
Coal is a modified version the FCL libraries.
It is a library for collision detection and distance computation between various types of geometric shapes reprensented either by
basic shapes (coal::ShapeBase) like box, sphere, cylinders, …
or by bounding volume hierarchies of various types (coal::BVHModel)
coal::collide(const CollisionObject*, const CollisionObject*, const CollisionRequest&, CollisionResult&)
coal::distance(const CollisionObject*, const CollisionObject*, const DistanceRequest&, DistanceResult&)
Collision
detection and distance lower bound
Collision queries can return a distance lower bound between the two objects, which is computationally cheaper than computing the real distance. The following figure shows the returned result in CollisionResult::distance_lower_bound and DistanceResult::min_distance, with respect to the objects real distance.
The two parameters refer to CollisionRequest::security_margin and CollisionRequest::break_distance.
Note
In the green hatched area, the distance lower bound is not known. It is only guaranted that it will be inferior to distance - security_margin and superior to break_distance.
Note
If CollisionRequest::security_margin is set to -inf, no collision test is performed by function coal::collide or class coal::ComputeCollision and the objects are considered as not colliding.