tesseract icon indicating copy to clipboard operation
tesseract copied to clipboard

Add hpp-fcl as a collision checker

Open rjoomen opened this issue 1 year ago • 12 comments

This adds HPP-FCL, the improved fork of FCL, as a collision checker.

Notable features:

Most of this work was simply renaming, though a few types and methods differed slightly. By directly comparing the fcl_\*.\* and hpp_fcl_\*.\* source files one can easily check the required modifications.

Preliminary benchmarking looks promising.

Status: currently these unit tests fail:

Tests are run using the master and devel branches of hpp-fcl.

In the table below, master 1 uses the current workaround for distance contact normals, and master 2 uses fcl_result.normal. For devel there is no difference in test success between the two approaches for normal calculation. This suggests that this closed issue, regarding normals and nearest points solves the workaround as currently used in the FCL plugin.

Test master 1 master 2 devel
HPP_FCLDiscreteBVHCollisionBoxSphereUnit x x
HPP_FCLDiscreteBVHCollisionBoxSphereConvexHullUnit x x
HPP_FCLDiscreteBVHCollisionBoxCylinderUnit x
HPP_FCLDiscreteBVHCollisionBoxConeUnit x
HPP_FCLDiscreteBVHCollisionBoxBoxUnit x x x
HPP_FCLDiscreteBVHCollisionBoxBoxConvexHullUnit x x
HPP_FCLDiscreteBVHCollisionBoxCapsuleUnit x x x
HPP_FCLDiscreteBVHCollisionLargeDataSetConvexHullUnit x x
HPP_FCLDiscreteBVHCollisionSphereSphereUnit x x
HPP_FCLDiscreteBVHCollisionSphereSphereConvexHullUnit x
HPP_FCLDiscreteBVHCollisionMeshMeshUnit x x
HPP_FCLDiscreteBVHCollisionMultiThreadedConvexHullUnit x x
HPP_FCLDiscreteBVHCollisionOctomapSphereUnit x
HPP_FCLDiscreteBVHCollisionOctomapSphereConvexHullUnit x x x
HPP_FCLDiscreteBVHCollisionOctomapSphereMeshUnit* x x x
HPP_FCLDiscreteBVHCollisionCloneUnit x
HPP_FCLDiscreteBVHContactManagerConfigUnit x x
HPP_FCLDiscreteBVHCollisionCompoundCompoundUnit x
Sum 12 16 7

* This test was disabled for FCL already

Interesting to note is that multiple runs of the tests results in a varying number of failed tests (the table lists the maximum number found). Perhaps some of the tests are at the edge of collision and the numerical optimization sometimes finds a collision and sometimes not.

rjoomen avatar Feb 06 '24 12:02 rjoomen