Basics

We introduce basic notions here. Let us have a look at Fig. 3.

../../_images/intro.png

Fig. 3 A multi–body domain.

There are four bodies in the figure. Placement of each point of every body is determined by a configuration qi. Velocity of each point of every body is determined by a velocity ui. Let q and u collect configurations and velocities of all bodies. If the time history of velocity is known, the configuration time history can be computed as

(1)q(t)=q(0)+0tudt

The velocity is determined by integrating Newton’s law

(2)u(t)=u(0)+M10t(f+HTR)dt

where M is an inertia operator (assumed constant here), f is an out of balance force, H is a linear operator, and R collects some point forces Rα. While integrating the motion of bodies, we keep track of a number of local coordinate systems (local frames). There are four of them in the above figure. Each local frame is related to a pair of points, usually belonging to two distinct bodies. An observer embedded at a local frame calculates the local relative velocity Uα of one of the points, viewed from the perspective of the other point. Let U collect all local velocities. Then, we can find a linear transformation H, such that

(3)U=Hu

In our case local frames correspond to constraints. We influence the local relative velocities by applying local forces Rα. This can be collectively described by an implicit relation

(4)C(U,R)=0

Hence, in order to integrate equations (1) and (2), at every instant of time we need to solve the implicit relation (4). Here is an example of a numerical approximation of such procedure

(5)qt+h2=qt+h2ut
(6)ut+h=ut+M1hft+h2+M1HTR
(7)qt+h=qt+h2+h2ut+h

where h is a discrete time step. As the time step h does not appear by M1HTR, R should now be interpreted as an impulse (an integral of reactions over [t,t+h]). At a start we have

(8)q0 and u0 as prescribed initial conditions.

The out of balance force

ft+h2=f(qt+h2,t+h2)

incorporates both internal and external forces. The symmetric and positive-definite inertia operator

M=M(q0)

is computed once. The linear operator

H=H(qt+h2)

is computed at every time step. The number of rows of H depends on the number of constraints, while its rank is related to their linear independence. We then compute

B=H(ut+M1hft+h2)

and

(9)W=HM1HT

which is symmetric and semi-positive definite. The linear transformation

(10)U=B+WR

maps constraint reactions R into local relative velocities U=Hut+h at time t+h. Relation (84) will be here referred to as the local dynamics. Finally

(11)R is such that C(U,R)=C(B+WR,R)=C(R)=0

where C is a nonlinear and usually nonsmooth operator. A basic Contact Dynamics algorithm can be summarised as follows:

  1. Perform first half–step qt+h2=qt+h2ut.

  2. Update existing constraints and detect new contact points.

  3. Compute W, B.

  4. Solve C(R)=0.

  5. Update velocity ut+h=ut+M1hft+h2+M1HTR.

  6. Perform second half–step qt+h=qt+h2+h2ut+h.

It should be emphasized that the above presentation exemplifies only a particular instance among many available variants of Contact Dynamics.