Specifications
168
forces to realize this movement. So we need to switch the reaction forces of the new driver off like this:
AnyKinEqInterPolDriver P1Driver = {
Type = Bspline;
BsplineOrder = 4;
FileName = "P1.txt";
AnyKinMeasure &Lin = .P1Lin;
Reaction.Type = {Off, Off, Off};
};
Try loading the model again and run the Kinematic Analysis (In this tutorial we do not use the inverse
dynamic analysis). Most likely it will not work. You will get the following error message:
Model is kinematically over-constrained : Position analysis failed :
1 unsolvable constraint(s) found
The reason will be obvious if you instead run the ModelInformation operation. It produces a whole lot of
output in the message window among which you find:
1) List of segments:
0: Main.MyModel.Pendulum
Total number of rigid-body d.o.f.: 6
-------------------------------------------------------------
2) List of joints and kinematic constraints:
Joints:
0: Main.MyModel.Joint (5constr., 1coords.)
Total number of joint coordinates: 1
Drivers:
0: Main.MyModel.P1Driver (3constr.)
Other:
- none!
Total number of constraints:
Joints: 5
Drivers: 3
Other: 0
Total: 8
The model appears to have six degrees of freedom (one segment in space has six degrees of freedom) but
eight kinematic constraints. Therefore, it is over-determinate. The reason for this problem is that the
pendulum only has one degree of freedom when the constraints of the hinge have been subtracted, but we
have added three drivers to it by means of the three coordinates of the linear measure. To solve this
problem we need to select one of the three coordinates for driving and leave the other two coordinates to
their own devices. This way we avoid driving more degrees of freedom than the model actually has. So,
which one should we choose? Does it matter or is it enough that we have one driver for the one degree of
freedom? Unfortunately it does indeed matter. The coordinate we choose to drive should be as descriptive as
possible for the movement of the mechanism. Let us look at the first few lines of the P1.any file:
Time x y z
0.00000000000 0.84147098599 -0.54030230550 0.00000000000
0.00100100100 0.84142823805 -0.54036887714 0.00000000000
0.00200200200 0.84129997953 -0.54056856433 0.00000000000
The movement is basically in two dimensions, so the z coordinate is constantly zero. This coordinate does
not provide any information about the oscillating movement of the pendulum, so it cannot be used. The x
and y directions will work ? perhaps ? but the x coordinate seems to be the better choice given the
pendulum?s typical oscillating movement.
There are at least to ways to only drive the pendulum by the x coordinate. One is obvious and the other is
smart. We shall begin with the obvious way for instructional purposes and switch to the smart way










