4 #include <fcl/broadphase/broadphase_collision_manager.h> 5 #include <fcl/narrowphase/distance.h> 9 namespace fcl_primitive_queries {
13 fcl::DistanceRequest<FCL_PRECISION> request;
14 request.gjk_solver_type = fcl::GST_LIBCCD;
15 request.distance_tolerance = distance_tolerance;
16 fcl::DistanceResult<FCL_PRECISION> result;
21 if (!fcl_obj1 || !fcl_obj2) {
26 if (fcl_obj1->collisionGeometry() == fcl_obj2->collisionGeometry()) {
32 distance = result.min_distance;
41 double distance_tolerance) {
42 fcl::DistanceRequest<FCL_PRECISION> request;
43 request.distance_tolerance = distance_tolerance;
44 request.enable_signed_distance =
true;
45 request.enable_nearest_points =
false;
46 request.gjk_solver_type = fcl::GST_LIBCCD;
47 fcl::DistanceResult<FCL_PRECISION> dist_result;
52 if (!fcl_obj1 || !fcl_obj2) {
55 if (fcl_obj1->collisionGeometry() == fcl_obj2->collisionGeometry()) {
63 distance = dist_result.min_distance;
79 fcl::BroadPhaseCollisionManager<double> *mngr;
80 distData.
request.gjk_solver_type = fcl::GST_LIBCCD;
103 fcl::BroadPhaseCollisionManager<double> *mngr1;
104 fcl::BroadPhaseCollisionManager<double> *mngr2;
105 distData.
request.gjk_solver_type = fcl::GST_LIBCCD;
107 if (!mngr1)
return -1;
109 if (!mngr2)
return -1;
126 double distance_tolerance) {
129 distData.
request.distance_tolerance = distance_tolerance;
130 distData.
request.enable_signed_distance =
true;
131 distData.
request.enable_nearest_points =
false;
132 distData.
request.gjk_solver_type = fcl::GJKSolverType::GST_LIBCCD;
133 fcl::BroadPhaseCollisionManager<double> *mngr;
135 if (!mngr)
return -1;
161 double distance_tolerance) {
164 distData.
request.distance_tolerance = distance_tolerance;
165 distData.
request.enable_signed_distance =
true;
166 distData.
request.enable_nearest_points =
false;
167 distData.
request.gjk_solver_type = fcl::GJKSolverType::GST_LIBCCD;
168 fcl::BroadPhaseCollisionManager<double> *mngr1;
169 fcl::BroadPhaseCollisionManager<double> *mngr2;
171 if (!mngr1)
return -1;
173 if (!mngr2)
return -1;
int FCL_CalculateDistance(const FCLCollisionObject &obj1, const FCLCollisionObject &obj2, FCL_PRECISION &distance, double distance_tolerance=1e-6)
int FCL_DistanceTolerance(const FCLCollisionObjectGroup &group1, const FCLCollisionObject &obj2, FCL_PRECISION &distance, FCL_TOLERANCE_CHECK_TYPE check_type=TOLERANCE_CHECK_NARROWPHASE, double distance_tolerance=1e-6)
double penetrationDepth(fcl::AABBd boxA, fcl::AABBd boxB)
fcl::DistanceRequest< FCL_PRECISION > request
bool toleranceDistanceFunction(fcl::CollisionObject< FCL_PRECISION > *o1, fcl::CollisionObject< FCL_PRECISION > *o2, void *cdata_, FCL_PRECISION &dist)
std::size_t distance(const CollisionObject &obj1, const CollisionObject &obj2, DistanceResult &res, const DistanceRequest &req)
FCL_PRECISION get_max_distance(void)
std::shared_ptr< fcl::CollisionObject< FCL_PRECISION > > getCollisionObject_fcl(void) const
bool toleranceBBDistanceFunction(fcl::CollisionObject< FCL_PRECISION > *o1, fcl::CollisionObject< FCL_PRECISION > *o2, void *cdata_, FCL_PRECISION &dist)
int getManager_fcl(fcl::BroadPhaseCollisionManager< FCL_PRECISION > *&) const
bool defaultDistanceFunction(fcl::CollisionObject< FCL_PRECISION > *o1, fcl::CollisionObject< FCL_PRECISION > *o2, void *cdata_, FCL_PRECISION &dist)