Document Type

Technical Report

Publication Date


Technical Report Number



Algorithms for dynamic simulation and control are fundamental to many applications, including computer games and movies, medical simulation, and mechanical design. I propose to explore efficient algorithms for finding a stable unstacking sequence -- an order in which we can remove every object from a structure without causing the structure to collapse under gravity at any step. We begin with a basic unstacking sequence algorithm: consider the set of all objects in a structure. Collect all possible subsets into a disassembly graph. Search the graph, testing the stability of each node as it is visited. Any path of stable nodes from start to goal is a stable unstacking sequence. I propose to show how we can improve the performance of individual stability tests for three-dimensional structures with Coulomb friction, and give effective methods for searching the disassembly graph. I will also analyze the computational complexity of stable unstacking problems, and explore a classification of structures based on characteristics of their stable unstacking sequences. In preliminary work, I have shown that we can reuse computation from one stability test of a planar subassembly to the next. The implementation, which solves the system dynamics as a linear complementarity problem (LCP), outperforms an implementation that solves the system statics as a linear program (LP). This is surprising because LCPs are more complex than LPs, and dynamics equations are more complex than statics equations.