Collision Detection - yszheda/wiki GitHub Wiki
References
-
jbruce's thesis: Real-Time Robot Motion Planning in Dynamic Environments
-
Recent Advances in Real-Time Collision and Proximity Computations for Games and Simulations
-
https://www.scss.tcd.ie/John.Dingliana/cs7057/index-2010.html
BVH
split
AABB
-
https://en.wikipedia.org/wiki/Minimum_bounding_box#Axis-aligned_minimum_bounding_box
-
Math for Game Developers: Dynamic Bounding Volume Hierarchies
AABB and ray
OBB
SIMD for OBB intersection checking
- https://github.com/juj/MathGeoLib/blob/master/src/Geometry/OBB.h
- https://github.com/juj/MathGeoLib/blob/master/src/Geometry/OBB.cpp#L2445
Separating Axis Theorem (SAT)
Morton code
- https://en.wikipedia.org/wiki/Z-order_curve
- Morton encoding/decoding through bit interleaving: Implementations
Broad Phase
- Let's talk about broad phase
- In 2D, how do I efficiently find the nearest object to a point?
- Broad And Narrow Phase Collision Detection Systems
- https://github.com/mattleibow/jitterphysics/wiki/Sweep-and-Prune
- https://pybullet.org/Bullet/phpBB3/viewtopic.php?t=1645
Dynamic AABB Tree
Sweep and Prune
- https://github.com/mattleibow/jitterphysics/wiki/Sweep-and-Prune
- https://github.com/podgorskiy/BroadPhase/tree/Optimized
- Sweep and Prune optimizations for colliding classes?
Narrow Phase
Expanding Polytope Algorithm (EPA)
- EPA (Expanding Polytope Algorithm)
- I'm implementing the Expanding Polytope Algorithm, and I am unsure how to deduce the contact points from a point on the minkowski difference
concave
Continuous Collision Detection
- Continuous Physics Engine's Collision Detection Techniques
- Continuous Collision Detection (Background Information)
- http://graphics.ewha.ac.kr/CATCH/
multi-thread
GPU
-
GPU Gems 3: Chapter 32. Broad-Phase Collision Detection with CUDA
-
GPU Gems 3: Chapter 29. Real-Time Rigid Body Simulation on GPUs
-
GPU Gems 3: Chapter 33. LCP Algorithms for Collision Detection Using CUDA
-
https://devblogs.nvidia.com/thinking-parallel-part-ii-tree-traversal-gpu/
occlusion query
-
GPU Gems 2: Chapter 6. Hardware Occlusion Queries Made Useful
-
Pixel perfect collision detection using GPU occlusion queries
-
https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_occlusion_query.txt
Collision Detection Algorithms for Motion Planning
1 Introduction
-
- to find a lower time bound for the first collision
-
- to reduce the pairs of primitives within objects susceptible of interfering
-
- to cut down the number of object pairs to be considered for interference.
2 Interference detection
-
Constructive Solid Geometry (CSG)
-
Hierarchical volume representations
-
Object partition hierarchies: “S-bounds”
-
Space partition hierarchies
- octree
- binary space partition tree
2.2 Basic interference tests
- Convex polyhedra
- One convex and one one non-convex
- Non-convex polyhedra: Decomposition into convex parts
- Non-convex polyhedra: Direct approach
First, check if the edge endpoints are on opposite sides of the face plane. If so, check if the intersection point between the edge and the face plane is located inside the face by simply casting a ray from this point and determining how many times the ray intersects the polygon. Then, if this number is odd, the intersection does exists (odd-parity rule).
3 Collision detection
3.1 Four main approaches
Multiple interference detection
The simplest way to tackle collision detection consists in sampling the trajectories followed by the objects and repeatedly applying a static interference test.
- adaptive sampling
Since the closest points between two objects lie always in their boundaries, it is usual practice to resort to boundary representations (B-rep) when following a multiple interference detection approach.
Swept volume interference
sufficient, but not a necessary condition
Extrusion in 4D space
- extruded volume
The intersection of two extruded volumes is a necessary and sufficient condition for the occurrence of a collision between the corresponding objects as they move along their respective trajectories.
Trajectory parameterization
3.2 Strategies for space and time bounding
Distance computation for collision time bounding
- spherical cones
- spherical planes
The geometric approach
- incremental distance algorithm
The optimization approach
Orientation-based pruning
Prioritizing collision pairs
4 Collision detection in motion planning
4.1 Global planners
4.2 Incremental planners
4.3 Local planners
Libraries
- http://gamma.cs.unc.edu/research/collision/packages.html
- https://github.com/jslee02/awesome-collision-detection
fcl
Bullet3
PhysX
Flex
HPCCD
https://sglab.kaist.ac.kr/HPCCD/
octomap
visualization
Trouble-shooting
PluginlibFactory: The plugin for class 'octomap_rviz_plugin/OccupancyGrid' failed to load. Error: According to the loaded plugin descriptions the class octomap_rviz_plugin/OccupancyGrid with base class type rviz::Display does not exist.
- source the setup script.