Continuous collision detection for rigid bodies
Contact Methods for Rigid Body Dynamics
Task Matrix for programming humanoid robots
Reaching for humanoid robots
Human and humanoid movement classification

O(n3) convex-optimization-based contact method


We have developed a contact method that runs in time O(n3) in the number of contact points. Our method is numerically robust, models Coulomb friction with a true friction cone, and scales to thousands of contact points (using our interior-point QCQP solver.)

This video demonstrates the effectiveness of this method for the problem of a simulated manipulator grasping a ball. This task is notoriously difficult to simulate, and few contact methods are capable of doing so. The video shows a manipulator arm grasping a ball while moving in a sinusoidal trajecory.

Relevant publications:

Fast, robust exponential-time contact method


Fast and exponential-time are generally contradictory terms in Computer Science. Nevertheless, we have developed an exponential-time algorithm (in the number of contact points) that not only runs in O(n3) time typically, but is even faster than competing O(n3) methods in general. This method produces frictional effects and is energetically consistent.


A holonomic mobile robot simulated using this method.

Relevant publication:

Advanced penalty method for rigid body simulation

My advanced penalty method works by applying forces over the volume of penetration, rather than applying a force due to only a single, virtual spring and damper at the point of deepest penetration. Applying forces at multiple points reduces the oscillation that emerges from the standard approach. Additionally, I use an integrative term to reduce steady-state error, which permits less stiff gain constants to be used for the virtual springs and dampers; the resulting equations of motion are much more stable numerically.


This video shows the ability of the advanced penalty method to handle a stable pile of objects.

Relevant publication: