What's Changed
Added
- Renaming the library from
hpp-fcl
tocoal
. Created aCOAL_BACKWARD_COMPATIBILITY_WITH_HPP_FCL
CMake option for retro compatibility. This allows to still dofind_package(hpp-fcl)
and#include <hpp/fcl/...>
in C++ and it allows to still doimport hppfcl
in python (#596). - Added
Transform3f::Random
andTransform3f::setRandom
(#584) - New feature: computation of contact surfaces for any pair of primitive shapes (triangle, sphere, ellipsoid, plane, halfspace, cone, capsule, cylinder, convex) (#574).
- Enhance Broadphase DynamicAABBTree to better handle planes and halfspace (#570)
- #558:
- [internal] Removed dead code in
narrowphase/details.h
(#558) - [internal] Removed specializations of methods of
GJKSolver
. Now the specializations are all handled byShapeShapeDistance
inshape_shape_func.h
. - [new feature] Added support for Swept-Sphere primitives (sphere, box, capsule, cone, ellipsoid, triangle, halfspace, plane, convex mesh).
- [internal] Removed dead code in
- [API change] Renamed default convergence criterion from
VDB
toDefault
(#556) - Fixed EPA returning nans on cases where it could return an estimate of the normal and penetration depth. (#556)
- Fixed too low tolerance in GJK/EPA asserts (#554)
- Fixed
normal_and_nearest_points
test (no need to have Eigen 3.4) (#553) - #549
- Optimize EPA: ignore useless faces in EPA's polytope; warm-start support computation for
Convex
; fix edge-cases witness points computation. - Add
Serializable
trait to transform, collision data, collision geometries, bounding volumes, bvh models, hfields. Collision problems can now be serialized from C++ and sent to python and vice versa. - CMake: allow use of installed jrl-cmakemodules (#564)
- CMake: Add compatibility with jrl-cmakemodules workspace (#610)
- Python: add id() support for geometries (#618).
Fixed
- Fix Fix serialization unit test when running without Qhull support (#611)
- Compiler warnings (#601, #605)
- CMake: fix assimp finder
- Don't define GCC7 Boost serialization hack when
HPP_FCL_SKIP_EIGEN_BOOST_SERIALIZATION
is defined (#530) - Default parameters for narrowphase algorithms (GJK and EPA); fixed assertion checks that were sometimes failing in GJK simplex projection and BVH
collide
(#531). - Created a new macro
HPP_FCL_ASSERT
which behaves as an assert by default. When the optionHPP_FCL_TURN_ASSERT_INTO_EXCEPTION
is turned on, it replaces the macro by an exception (#533). Also fixed an EPA assert inGJKSolver
. - Simplify internals of hpp-fcl (#535):
- Computing distance between 2 primitives shapes does not use a traversal node anymore.
- Removed successive mallocs in GJK/EPA when using an instance of
GJKSolver
multiple times. GJKSolver
now deals with all statuses of GJK/EPA. Some of these statuses represent a bad behavior of GJK/EPA and now trigger an assertion in Debug mode. Usefull for debugging these algos.- Logging was added with macros like
HPP_FCL_LOG_(INFO/DEBUG/WARNING/ERROR)
; hpp-fcl can now log usefull info when the preprocessor optionHPP_FCL_ENABLE_LOGGING
is enabled. - Deprecated
enable_distance_lower_bound
inCollisionRequest
; a lower bound on distance is always computed. - Deprecated
enable_nearest_points
inDistanceRequest
; they are always computed and are the points of the shapes that achieve a distance ofDistanceResult::min_distance
. - Added
enable_signed_distance
flag inDistanceRequest
(defaulttrue
). Turn this of for better performance if only the distance when objects are disjoint is needed. - The internal collision and distance functions of hpp-fcl now use
CollisionRequest::enable_contact
andDistanceRequest::enable_signed_distance
to control whether or not penetration information should be computed. There are many scenarios where we don't need the penetration information and only want to know if objects are colliding and compute their distance only if they are disjoint. These flags allow the user to control the trade-off between performance vs. information of the library. - Fix convergence criterion of EPA; made GJK and EPA convergence criterion absolute + relative to scale to the shapes' dimensions; remove max face/vertices fields from EPA (these can be deduced from the max number of iterations)
- Account for lateral borders in Height Fields model.
- Fix compilation error on recent APPLE compilers (#539).
- Fix printing of deprecated message (#540).
- Fix compilation with earlier Eigen version
- Fix compilation warning message
- Fix issue in Octomap.computeLocalAABB
- Fix unsupported function for contact_patch_matrix
- Fix Octomap dependency on ROS
Full Changelog: v2.4.5...v3.0.0