A C++ library for collision detection, distance computation, and proximity queries between 3D geometric models.
FCL (Flexible Collision Library) is a C++ library for performing proximity queries on 3D geometric models, including collision detection, distance computation, and tolerance verification. It solves the problem of efficiently determining spatial relationships between objects in applications like robotics and simulation, supporting various shapes from primitives to meshes.
Developers and researchers in robotics, physics simulation, computer graphics, and CAD software who need reliable and performant spatial query capabilities.
Developers choose FCL for its comprehensive feature set—including continuous collision detection and broadphase acceleration—coupled with its flexibility in handling arbitrary triangle meshes without topological constraints, all through a well-documented C++ API.
Flexible Collision Library
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Requires only triangle lists without special topological constraints, making it easy to integrate with arbitrary 3D models from various sources.
Handles primitives like boxes and spheres, as well as complex shapes like meshes and octrees via Octomap, covering a wide range of use cases in robotics and simulation.
Uses spatial data structures like Dynamic AABB trees to avoid O(n²) complexity in multi-object scenarios, improving performance for large scenes.
Provides collision detection, distance computation, tolerance verification, and continuous collision detection, offering a complete suite for proximity analysis.
Requires manual installation of Eigen and libccd, and for octree support, Octomap, which complicates the build process compared to all-in-one libraries.
Lacks native bindings for other languages, limiting accessibility for teams using Python, Java, or web-based ecosystems without additional effort.
Setting up collision managers and understanding request/result structures, as shown in the code examples, can be non-trivial for newcomers to spatial queries.