Specifications
79
0: Main.ArmModel.Drivers.ShoulderMotion (1constr.)
1: Main.ArmModel.Drivers.ElbowMotion (1constr.)
Other:
- none!
Total number of constraints:
Joints: 10
Drivers: 2
Other: 0
Total: 12
-------------------------------------------------------------
This section counts the kinematic constraints. The sum of constraints must add up to the number of degrees
of freedom in the model, i.e. 12. You can see in the last line of the section above that this indeed the case.
Further up we can see how the 12 constraints come about. 2 x 5 = 10 of them come from the two revolute
joints in the model for the shoulder and elbow. A revolute joint leaves only one degree of freedom between
the two reference frames it connects, so it has five constraints. With two of these we have two degrees of
freedom left in the model because 12 - 2 x 5 = 2. These remaining degrees of freedom after the joints have
been added are also called the joint coordinates. The remaining part of the section must specify this number
of additional constraints.
The usual way of providing constraints for the joint degrees of freedom is by means of drivers. In our case
we have simply added two drivers directly to the two joints as the list shows. However, it does not have to
be like that. We have to provide as many constraints as we have joint coordinates but the constraints need
no address the joint coordinates directly. For instance, we could also have driven the x and y coordinates of
a point on the forearm.
There is also a section called "Other". This is for constraints that are neither any of the predefined joint
types nor driver functions. Such constraints are very frequent in more complex models because the
AnyScript language allows for user-defined joints and other constraints to mimic complex behaviors
movement patternsbetween different joints. This, however, is an advanced topic that we shall postpone for
now.
The final section of the output has the following form:
-------------------------------------------------------------
3) List of reaction forces:
0: Main.ArmModel.Jnts.Shoulder.Constraints.Reaction(5 active of 5 reactions)
1: Main.ArmModel.Jnts.Elbow.Constraints.Reaction(5 active of 5 reactions)
2: Main.ArmModel.Drivers.ShoulderMotion.Reaction(0 active of 1 reactions)
3: Main.ArmModel.Drivers.ElbowMotion.Reaction(0 active of 1 reactions)
Total number of active reaction and driver forces: 10
-------------------------------------------------------------
The fact that the reaction and driver forces add up to the same number as the joints and kinemaic
constraints is no coincidence. In a straightforward model like this one, joints usually provide the same
number of reactions as kinematic constraints. This is also how it is in real life in most cases, because the
mechanical joints we have in our surroundings enforce their kinematic constraints by reaction forces. But it
is not always like that in the body. A knee, for instance, can roughly be approximated as a hinge joint (many
physiologists will disgree here) but the internal load-carrying mechanisms in the knee are not like they are
in a mechanical hinge. Instead knee reactions are provided by a complicated interplay between unilateral
joint surfaces, ligaments, and muscles. So AnyBody allows for the definition of joints that only provide
kinematic constraints but not the associated reaction forces. In fact, the system also allows the opposite:
Reaction forces without kinematic constraints. For an in-depth discussion of some of these issues, please
refer to the tutorial on mechanical elements
. For now, the bottom line is that counting reactions can
sometimes be tricky, and the ModelInformation operation is helpful in this respect.










