150 likes | 310 Views
Robust Rigid Body Dynamics using Global Penetration Depth. Final Presentation Carl Schissler Comp 790-58: Robot Motion Planning. Why Penetration Depth?. Path Planning Determine if / how much robot collides with obstacles Physical Simulation Important for collision detection/response
E N D
Robust Rigid Body Dynamics using Global Penetration Depth Final Presentation Carl Schissler Comp 790-58: Robot Motion Planning
Why Penetration Depth? • Path Planning • Determine if / how much robot collides with obstacles • Physical Simulation • Important for collision detection/response • Separate colliding objects along shortest penetration vector.
PDAL: PD using active learning • Approximate configuration space using pre-computed samples • Very fast for runtime query, reasonable accuracy • Global penetration depth • No limitations on geometry.
Contact Kernel Library (CKL) • Implementation of PDAL • Handles proximity queries between geometric shapes. • Returns: • Relative transformation between shapes where there is no collision. • Compute generalized PD as the distance between initial and resolved transforms.
Project Goals • Integrate CKL library into real-time physics engine • Use global PD info to produce robust simulation
CKL + Physics • How to use this information for physics simulation? • Physics engines use contact point + normal vector + local penetration depth. • My approach – modify contact information using generalized penetration information.
CKL + Physics – Approach 1 • Compute position of contact points using local mesh collision algorithm • Compute resolved transformation • Transform local contacts to resolved ‘goal’ positions c’ • Normal = vector from contact c to c’ • PD = distance from c to c’
CKL + Physics – Approach II • Compute position of contact points using local mesh collision algorithm • Compute resolved transformation • Transform local contacts to resolved ‘goal’ positions c’ • Normal = local collision normal n • PD = project (c’-c) onto n Better for resting contact?
CKL + Physics – Integration • Add new collision algorithm to physics engine – CKLMesh vs. CKLMesh. • Do pairwise mesh preprocessing before starting simulation • For each mesh: • For each other mesh, do contact space learning. • Time to preprocess – a few minutes per pair.
CKL + Physics – Runtime • Do collision detection between meshes • Get contact points + normals • If collision, compute global penetration depth + resolved transformation. • Apply transformation to contact points using method I or II. • Return final contact points + normals + PD to the physics engine.
CKL + Physics – Results • Found that the resolved transformation frequently overestimates the PD. • CKL is approximate • This produces bouncy simulations in practice
CKL + Physics – Results • Resting contact should produce PD = 0 • Resolved transform should match the original transform in this case, but doesn’t. • Tried increasing # of samples • Quality did not improve significantly • Too many samples and PD query is no longer real time. • Simulation is better without global PD (just local)
CKL + Physics – Conclusions • CKL is not yet ready for physics simulations • Need accurate contact and PD information for robustness. • Was not able to effectively evaluate the global to local PD mappings because of the inaccuracies. • Future work: • Better sampling heuristics? • Better rotational distance metric? • Adaptive sampling • Modify physics engine constraint solvers to make use of global PD directly, rather than mapping the info