Method for robust CD between polygon soups
Posted: Sun Sep 20, 2015 4:28 am
Hi, I'm a robotics researcher at Duke and I've developed a method for doing robust contact detection with polygon soups. We've used it in my lab quite extensively over many years and it is much better than Opcode at yielding stabler simulations. It may be interesting for this to be integrated into Bullet.
It uses a Boundary Layer Expanded Mesh geometry representation that virtually "fattens" the mesh so that the object geometry occupies a thin region around the mesh. Contact normals and penetration depths can be computed robustly while the objects touch within the boundary layer. Specifically, normal and penetration depth estimates are stable over small disturbances, which cannot be said for Opcode. It is somewhat slow for realtime use, but for robotics and offline animation, this is not a big deal.
A paper describing the technique is Robust Contact Generation for Robot Simulation with Unstructured Meshes (http://motion.pratt.duke.edu/simulation/index.html).
It has been integrated into a robot simulation package Klampt (http://klampt.org/). Internally it uses ODE. We've also recently developed a package for using BLEM+ODE in the Gazebo robot simulator, as well as a fast, approximate mesh erosion method that keeps the expanded mesh closer to the original mesh.
Would any Bullet developers be interested in chatting more about this?
It uses a Boundary Layer Expanded Mesh geometry representation that virtually "fattens" the mesh so that the object geometry occupies a thin region around the mesh. Contact normals and penetration depths can be computed robustly while the objects touch within the boundary layer. Specifically, normal and penetration depth estimates are stable over small disturbances, which cannot be said for Opcode. It is somewhat slow for realtime use, but for robotics and offline animation, this is not a big deal.
A paper describing the technique is Robust Contact Generation for Robot Simulation with Unstructured Meshes (http://motion.pratt.duke.edu/simulation/index.html).
It has been integrated into a robot simulation package Klampt (http://klampt.org/). Internally it uses ODE. We've also recently developed a package for using BLEM+ODE in the Gazebo robot simulator, as well as a fast, approximate mesh erosion method that keeps the expanded mesh closer to the original mesh.
Would any Bullet developers be interested in chatting more about this?