Specifications

85
An AnyBody model is really a collection of rigid segments. You can think of them as a bunch of
potatoes floating around in space. Technically, each potato is called a "rigid body", but the term "body" can
be misinterpreted in the context of a body modeling system like AnyBody, so we call them "segments".
When a segment flows around in space, it can move in six different directions. We call them degrees of
freedom and usually think of them as movement along the three coordinate axes and rotation about the
same axes. We call these movement directions "degrees of freedom" and an unconstrained segment in
space has six degrees of freedom. If we have n segments in the model, the model will have a total of 6n
degrees of freedom unless some of them are constrained somehow. The purpose of the kinematic analysis is
to determine the position of all the segments at all times, and this requires 6n pieces of information about
the positions to resolve the 6n degrees of freedom. The pieces of information are mathematically speaking
equations. So kinematic analysis is about solving 6n equations with 6n unknowns.
A usual way of constraining degrees of freedom (or adding equations to the system) is to add joints to the
model. When you join two segments they lose some of their freedom to move independently. They become
constrained to each other. Consider two segments joined at their ends by a ball-and-socket joint. They are
now under the constraints that the x, y and z coordinates of the joined points must be the same. In other
words, a ball-and-socket joint adds three constraints or three equations to the system.
If you add enough joints to the system to provide all 6n constraints, then it might be mathematically
possible to solve the equations and find the position of all the segments. But the result would not be very
exciting because the system would not be able to move. Usually a body model will have enough joints to
keep the segments together but few enough to let the model move. After all, movement is what most higher
organisms do. So where do the remaining constraints or equations come from? They are the drivers. When
the joints have eaten up their part of the degrees-of-freedom, enough drivers must be added to resolve the
remaining unknowns in the system up to the required number of 6n. When the AnyBody Modeling System
performs the KinematicAnalysis operation, these drivers are taken through their sequences of values, and
the positions of all the segments are resolved for each time step by solving the 6n equations.
When the model is set up in such a way that it has 6n equations and these equations can be solved, then it
is said to be kinematically determinate. Usually this is necessary to perform the kinematic analysis. We say
"usually" because there are a few exceptions where the system can be solved even when the number of
equations is different from 6n. There are also some cases where the system cannot be solved even though
there are 6n equations available. Both cases are connected with redundant constraints.
If you define two or more constraints that in some way constrain exactly the same degrees of freedom in
the same way, then they are redundant. For instance, you might by mistake repeat the definition of a joint.
You will then have two joints that work exactly the same, and the equations provided by those two joints
will be redundant. You will see them when you count constraints, but they will not have much effect.
The AnyBody Modeling System can sometimes cope with models that have too many constraints as long as
those constraints are not conflicting, i.e. some of them are redundant. But it is a good rule to make sure
that you have the same number of degrees-of-freedom and constraints.
If you have too many constraints and they are incompatible, then the system is kinematically over-
determinate. If you have too few constraints, or some of the constraints are redundant, then the system
may be kinematically indeterminate. Both cases are likely to prevent the KinematicAnalysis operation to
complete.
Actually, even when you have a kinematically indeterminate system, the KinematicAnalysis can fail. This is
actually very easy to picture. Sometimes the segments of the model may be configured such that they
cannot reach each other, or in such a way that they interlock. The real world is full of that sort of
mechanisms: Car doors that get stuck or refuse to close, locks that will not unlock, or stacked glasses that
wedge inseparably into each other. Computer systems that model the real world will have them too, and
just like the real world it can sometimes be difficult to find out what the problem is.