What good is Rigid Body Dynamics?
Many of the things we come in contact with on a daily basis are rigid for all practical purposes. Wrenches, chairs, and sidewalks all flex and vibrate, but these effects do not strongly impact us. You ask, "So what?!" My answer is that I would like to endow robots with the "knowledge" and skill to autonomously manipulate things so that we can send them into dangerous environments (like the surface of the moon, at the bottom of an ocean, in a nuclear power plant, or on a battle field) to build and repair things rather than humans. The first step to building robots with this knowledge and skill is the development of human scientific knowledge of how bodies interact with each other on a macro-scale.

The field of rigid body dynamic (more generally, multibody dynamics) is all about designing mathematical models and algorithms to predict the motions of bodies and the contact forces, including friction, that arise between them when. The two most exciting applications of rigid body dynamics are robotics and computer games. In robotics, the goal is to build a robot with the capability to plan and autonomously carry out dexterous manipulation tasks - like doing the dishes. More and more, computer games contain physics engines to improve realism - for example, dropping a stone into the gears of a machine could cause jamming, thus stopping the knife blades from swinging across your path, and allowing you to escape the collapsing building.

These two applications differ in a critical way. The physics engine is used to answer the question, "Given the input (motor torques, gravity, etc.), tell me how the robot will move and what contact forces will arise. This is the forward rigid body dynamics problem. For example, if a robot moves its arm in a specified way that causes it to hit a box on a table, the solution to the forward problem will allow us to predict where the box will come to rest, among other things. Once it is possible to predict the consequences of robot actions, it becomes possible to plan the activities of a robot to achieve a goal. Given the current state of the robot and its environment, and aa task specified as a goal state of the robot and its environment (the dishes are put away and the robot is in the closet), planning is equivalent to finding the set of robot actions that transform the robot and environment to the goal state. Solving this problem is an inverse rigid body dynamics problem, known to be extremely challenging and often counter-intuitive (other reasons I like rigid body dynamics).

Rigid Body Dynamics with Dry Friction: Basic Mathematical Character
In the early 1980's Lodtstedt published the first paper I know of in which the instantaneous dynamic equations of a system of rigid bodies in unilateral contact were formulated as a complementarity problem. Complementarity problems are distinguished by the appearance of constraints of the following form:

0 =< w _|_ z >= 0
where w and z are vectors of equal length, "_|_" implies perpendicularity and inequalities are applied element by element. Roughly speaking, in rigid body dynamics, the w andz vectors represent relative accelerations and contact forces expressed in coordinate frames attached to the contact points (assumed isolated). Letting w_i and z_i denote the ith elements of the vectors w and z, respectively, the complementarity constraint enforces the fact that a nonzero contact force can only exist (z_i > 0) if the contact is being maintained (w_i = 0), and conversely, a contact force may not exist (z_i = 0) if the contact is breaking (w_i > 0).

The simulation of dynamic rigid body systems requires the solution of a differential complementarity problem (DCP), which can be thought of as analogous to an ordinary differential equation (ODE). Time-stepping methods for DCPs require the solution of one or more complementarity problems for each time step, just as the numerical solution of ODEs require several evaluations of the derivative function. Methods for simulating dynamic rigid body systems are still not mature; only recently have algorithms become available in commercial software. Difficulties with solution existence of the individual complementarity problems (noted initially by Lotstedt and generalized later by others) have been solved by casting the dynamics problem in terms of impulse and momentum variables rather than force and acceleration variables. For a list of short descriptions of simulation software for dynamic rigid body systems, go to my sim_packages page.

The animations below (click on the images) were computed using various time-stepping methods that solve one linear complementarity problem per time step. The complementarity problems were solved by the PATH algorithm (Todd Munson, Steve Dirkse, and Michael Ferris). The bouncing that occurs is an artifact of the constraint stabilization method.


Here's a video of several spheres interacting in a pyramidal cone with several fixed sphere poking through. The Coulomb friction coefficient varies from plane to plane. The red plane is the only frictionless surface. This animation was produced with in Matlab.

Here are several videos of identical "jacks" falling from the sky. The two images below are the final frames of simulations using friction coefficients 0.0 and 0.55. Toward the end of the second video, there were are about 450 potential contacts, and the LCP being solved for each time step was on the order of 3000 (requiring about 20 seconds per time step on a 2GHz, Pentium IV laptop running Redhat Linux 8.0). This simulation was computed with the Umbra software package built at Sandia National Laboratories by Eric Gottlieb, Fred Oppel, and Patrick Xavier. The software is now distributed and maintained by Orion, Inc, in Albuquerque, NM.

Here's a chain of jacks swinging and hitting a frictional floor. There is no friction in the joints. This simulation was computed with Umbra.

Here's a vehicle with wheels at the ends of articulations on uneven terrain. In the first simulation, the articulations are locked and the vehicle eventually tips over. In the second one, the articulations are crudely controlled to avoid tipping.

Here is a pawl (part of a MEMS ratchet mechanism) being pushed by two kinematically controlled fingers across the surface of a fixture plate into a hole. When it enters the hole, it pushes a cantilever beam out of the way. The beam is designed to seat the pawl against the three "fixels" on the "top" side of the hole after the pushing fingers are removed, but the current implementation failed before that point, since the motion became kinematically infeasible when the beam bottomed out. This simulation was computed with Umbra.

Here's a video of a peg, with off-center center of mass, passing through an orienting device under the influence of gravity. The part must exit the device with the center of mass down regardless of its entering orientation. Matlab was used to simulate the dynamics and optimize the device geometry.

Here are some papers related to rigid body dynamics simulation and design problems: theory, velocity-base time-stepping, theory and examples with torsional friction, the quasistatic problem, the design and manipulation planning with intermittent contacts.

The text Pfeiffer and Glocker, Multibody Dynamics with Unilateral Contacts, Wiley, 1996) contains a complementarity formulation of general rigid body dynamic systems and a section of impressive application results obtained with a straight-forward time-stepping method. You can also visit Pfeiffer's web page here. Brogliato, Non-smooth Mechanics: Models, Dynamics, and Control, 2nded., Springer, 1999, is also worth checking out.