Specifications

39
We now have enough muscles in the model to start computing the muscle forces that can drive the motion.
But there is one more detail to take care of, and it is both important and slightly intricate. The bottom line
is: There must be something for the muscles to drive - some load to carry. We have not added any exterior
forces to the model yet, but that is not the problem. You remember, perhaps, from Lesson 2
that each
segment has a mass. Additionally, the ArmModelStudy is equipped with a standard gravity of -9.81 units in
the global y direction. This means that gravity actually provides the external force the analysis needs to
make any sense.
What is the problem then? Well, unless you specify otherwise, drivers, like the ones we added to the elbow
and shoulder joints, act like motors. This means that they provide whatever moment or force that might be
necessary to make the motion happen. Although it would be practical, few of us have motors built into our
joints. Instead, we have very efficient muscles so we want to leave the task of providing force in the model
to them. The way to do that is to set a property called Reaction.Type for the driver to zero. This is how it's
done for the shoulder:
AnyKinEqSimpleDriver ShoulderMotion = {
AnyRevoluteJoint &Jnt = ..Jnts.Shoulder;
DriverPos = {-100*pi/180};
DriverVel = {30*pi/180};
Reaction.Type = {Off};
}; // Shoulder driver
This additional line makes sure that the driver provides the motion but not the moment. Why is AnyScript
made that way? Why would anyone ever want to model a joint with a motor in it? The explanation is that
AnyScript models for ergonomic studies often comprise machinery that the body of the model is connected
to. And this machinery can have motors that provide moment or force input to the system. Why is the motor
then switched on by default? Well, models under development often do not have enough muscles to move.
Such models will not work before the last muscle is added unless they have motors in the drivers, and it is
practical to be able to run an analysis now and then during development to check that the model works
correctly.
As you can see, the single Off is encapsulated in braces, {Off}. This is because it is a vector. A driver by
default has several components and hence all the data in the driver is vector quantities. For semantic
reasons this applies even when the driver only controls one degree of freedom as it does here.
Add a similar line to the definition of the elbow driver and we are ready to compute muscle forces. Click the