tesseract
tesseract copied to clipboard
Add hpp-fcl as a collision checker
This adds HPP-FCL, the improved fork of FCL, as a collision checker.
Notable features:
- (Claimed) Improved performance
- State of the art GJK collision checking
- Safety margins, lower bound distance calculation, GJK early stopping (can we use any of these?)
- Actively developed
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.