Date of Award


Document Type

Thesis (Master's)


Department of Computer Science

First Advisor

Devin Balkcom


The problem of determining the forces among contacting rigid bodies is fundamental to many areas of robotics, including manipulation planning, control, and dynamic simulation. For example, consider the question of how to unstack an assembly, or how to find stable regions of a rubble pile. In considering problems of this type over discrete or continuous time, we often encounter a sequence of problems with similar substructure. The primary contribution of our work is the observation that in many cases, common physical structure can be exploited to solve a sequence of related problems more efficiently than if each problem were considered in isolation. We examine three general problems concerning rigid-body assemblies: dynamic simulation, assembly planning, and assembly stability given limited knowledge of the structure's geometry. To approach the dynamic simulation and assembly planning applications, we have optimized a known method for solving the system dynamics. The accelerations of and forces among contacting rigid bodies may be computed by formulating the dynamics equations and contact constraints as a complementarity problem. Dantzig's algorithm, when applicable, takes n or fewer major cycles to find a solution to the linear complementarity problem corresponding to an assembly with n contacts. We show that Dantzig's algorithm will find a solution in n - k or fewer major cycles if the algorithm is initialized with a solution to the dynamics problem for a subassembly with k internal contacts. Finally, we show that if we have limited knowledge of a structure's geometry, we can still learn about stable regions of its surface by physically pressing on it. We present an approach for finding stable regions of planar assemblies: sample presses on the surface to identify a stable cone in wrench space, partition the space of applicable wrenches into stable and unstable regions, and map these back to the surface of the structure.


Originally posted in the Dartmouth College Computer Science Technical Report Series, number TR2006-576.