220 likes | 348 Views
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.
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