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:
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.
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.