220 likes | 360 Vues
This paper presents a novel algorithm for the efficient maintenance and detection of self-collisions in kinematic chains, crucial for robotics and biomolecular motion studies. The algorithm updates the chain at each time step based on changes to its Degrees of Freedom (DOFs) while ensuring no previous self-collisions are present. It introduces a hierarchical representation that optimizes collision detection by focusing solely on updated joints, thereby minimizing unnecessary overlap tests. Experimental results demonstrate substantial improvements in efficiency compared to existing methods, making it particularly suitable for applications like protein simulations.
E N D
Efficient Maintenance and Self-Collision Testing for Kinematic Chains Itay Lotan Fabian Schwarzer Dan Halperin Jean-Claude Latombe
Motivation • Robotics: Snake-like robots • Biology: Motion of macro-molecules protein backbone (Mark Yim)
Properties of Kinematic Chains • In a kinematic chain – local changes have global effects. One change may cause O(N) links to move • When few changes are applied to the chain, large pieces of it remain rigid
Problem Description Given a chain of N links which deforms over time through changes to its DOFs: • Update the chain at each time-step to reflect the changes • Assuming no self-collisions at previous time-step, find self-collisions caused by latest changes
Our Algorithm • updating per time-step • worst-case self-collision detection per time-step. Much faster in practice • Novel chain representation based on: • Transformations hierarchy to approximate the kinematics at different resolutions • OBB hierarchy to approximate the geometry at different resolutions
T(R,t) T(R,t) T(R,t) T(R,t) T(R,t) T(R,t) T(R,t) T(R,t) T(R,t) T(R,t) T(R,t) Chain Representation A Sequence of reference frames (links) connected by rigid-body transformations (joints) Hierarchy of “shortcut” transformations
Bounding Volume Hierarchy • Chain-aligned: bottom-up, along the chain • Each BV encloses its two children in the hierarchy • Shortcuts allow to efficiently compute relative position of BVs • At each time step only BVs that contain the changed joints need to be recomputed
Self-Collision Detection • Test the hierarchy against itself to find collisions. But … • Do not test inside BVs that were not updated after the last set of changes Benefits: • Many unnecessary overlap tests are avoided • No leaf node tested against itself
Experimental Results • We tested our algorithm (dubbed ChainTree) against three others: • Grid – Collisions detected by indexing into a 3D grid using a hash table • 1-OBBTree– An OBB hierarchy is created from scratch after each change and then tested against itself for collisions • K-OBBTree– After each change an OBB hierarchy is built for each rigid piece of the chain. Each pair of hierarchies is tested for collisions
Results: Extended Chain (1) Single Joint Change
Results: Extended Chain (2) 100 Joint Changes
Protein Backbones 1LOX (1941 atoms) 1B4E (969 atoms) 1SHG (171 atoms)
Results: Protein Backbones (1) Single Joint Change
Results: Protein Backbones (2) 10 Joint Changes
Analysis – Updating • For each joint change: • shortcut transformations need to be recomputed • BVs need to be recomputed • For k simultaneous changestime, but never more than Previous BV hierarchies required O(N log N) updating time
Analysis – Collision Detection in the worst case • Upper bound is stable - holds for “not so tight” hierarchies like ours • Lower bound is stable for any convex BV • Slightly worse than bound we prove for a regular hierarchy • If topology of regular hierarchy is not updated, can deteriorate to
Proof of Upper Bound • Will the bound hold for a “not so tight” hierarchy like ours? YES! • OBBs are larger than tight bounding spheres by a constant factor at each level • This factor is fixed for all levels of the hierarchy
Proof of Lower Bound • 3d links form a unit • d/8 units shifted by 1 along X and -Y form a layer • d/8 layers shifted by 1 along –Y and Z form a chain [chain] Convex hull of all units overlaps! P=[2(d-1),d-1,(d-1)/4] [layer]
Conclusions • We presented an algorithm for efficient maintenance and self-collision detection of kinematic chains • update time and detection time in the worst case • It is very fast in practice • Most efficient when k << N
Current Work • Applying the algorithm to Monte-Carlo simulation of proteins • Allow tree-like structure with short branches to model side-chains • Replace collision detection with distance computation • Efficiently compute internal energy by reusing unchanged terms