Driving a model two ways - with constant angular velocity and 3-D trajectories

I began a project a couple of months ago where I collected kinematics
and EMG data on an individual doing a simple bicep curl with a 5-pound
weight. I wanted to perform my own simple EMG validation, looking at
the biceps and triceps. For simplicity the individual did their best
to curl the weight at a constant (elbow) angular velocity, and
maintain a 2-D posture (in the sagittal plane). I then tried to
re-create the individual in AnyBody driving the model in two different
ways. First, I calculated the individual’s elbow joint velocity (from
3-D trajectory markers) and I drove the model with elbow angle input.
Then, using data from Vicon, I drove a second model via 3-D
trajectory points.

Re-creating my particular individual proved to be a problem at the
time, so I decided to take a step back and start with an easier model.
Before even attempting to validate the model with EMG data from an
individual, I first wanted to see if I could even get two identical
models, driven different ways, to produce the same muscle activity
outputs. Creating the model of an upper-body performing a bicep-curl
driven by elbow angular velocity is relatively easy. To create a
model driven by 3-D trajectory points which exactly mimics the
constant angular model was a little more work. What I essentially did
was I stepped through the constant-angle model analysis and took the
palm joint point at each step relative to the elbow. Then I drove the
model with all of these accumulated points. The purpose of this was
to compare the results between the two models – ideally they should be
the same regardless of whether they are driven with constant angular
velocity or 3-D trajectory points, right? Needless to say, analysis
of the two models did not result in the same muscle activities (I have
uploaded both models into the file section – they are “Mannequin – cst
arm angles.zip” and “Mannequin – vicon drive.zip”). These analyses
were all done using the simple muscle model (and the muscle activities
were different for each model), at which point I decided to try using
the more physiologically-realizable 3E muscle model. Now, however, I
can not even get the model to run. The model compiles, although when
I SetInitialConditions, I get the following for nearly every muscle in
the model:

WARNING(OBJ.MCH.MUS2) : C:\Documents and
Settings\ssullivan\Desktop\Repository.6 - Mannequin
Validation\BRep\Aalborg\Arm3D\Muscle-parameters-shoulder.any(49) :
‘biceps_brachii_caput_longum’ : Muscle without strength : The
muscle has been stretched too much

I have uploaded the two models – they run fine when the simple muscle
model (in the .Main file) is used, however the problem exists with the
3e muscle model. Is it as simple as just lengthening the Lm and Lmt?
Any suggestions would be greatly appreciated.

Thanks so much and Happy Holidays.

Sarah

Hi Sarah,

I have downloaded your models and have taken a brief look at them. It
looks like the one with the constant velocity joint angles is working
reasonably well and the problems are with the marker-driven model.

I think there may be different of these problems and it is much
easier to locate them one by one as we go along. I have added some
comments to your text below:

> Before even attempting to validate the model with EMG data from an
> individual, I first wanted to see if I could even get two identical
> models, driven different ways, to produce the same muscle activity
> outputs.

If you have the same movement, the same external load, and the same
boundary conditions, then you will get the same muscle activations. I
think the latter condition is the primary problem, but I’ll get back
to that further down.

> Creating the model of an upper-body performing a
> bicep-curl driven by elbow angular velocity is relatively
> easy.

Yes, it looks like this model is performing reasonably. I have not
checked it thoroughly, though.

> To create a
> model driven by 3-D trajectory points which exactly mimics the
> constant angular model was a little more work. What I
> essentially did was I stepped through the constant-angle
> model analysis and took the palm joint point at each step
> relative to the elbow. Then I drove the
> model with all of these accumulated points. The purpose of this was
> to compare the results between the two models – ideally they
> should be the same regardless of whether they are driven with
> constant angular velocity or 3-D trajectory points, right?

Yes. But if you compare the velocities of the two models you will
find that the angular velocity of the second model is not quite
constant, i.e. there are accelerations present. Try plotting
Main.MyStudy.Output.Model.HumanModel.Right.ShoulderArm.Seg.Hand.rDDot

You will see that the hand accelerates +/- 1g, which will create
significant oscillations in the muscle activations.

> Needless to say, analysis of the two models did not result
> in the same muscle activities (I have uploaded both models
> into the file section – they are “Mannequin – cst
> arm angles.zip” and “Mannequin – vicon drive.zip”).
> These analyses were all done using the simple muscle
> model (and the muscle activities were different for each model),
> at which point I decided to try using the more physiologically-
> realizable 3E muscle model.

I think the 3E model is a separate problem that we should deal with
after you get the expected results from the simple model.

But I have noticed that there is a difference between the two models
in the way that they are supported, and this is likely to have a
significant effect on the predicted muscle activations. In the second
model you have introduced a spherical joint between the scapula and
ground at the top of the JointsAndDrivers file. This joint is capable
of carrying loads and it is not present in the first model. You will
not get the same result from the two models unless they are supported
exactly the same way.

To accomplish this in models that are driven in different ways in
AnyBody, we have separated kinematics from kinetics. So, when you
drve the model with marker data you switch the Reaction.Type off to
avoid load-carrying markers. The same way you can specify supports
that do not drive kinematics. These are the AnyReacForces.

Best regards,
John

Okay, so that makes complete sense - I didn’t initially realize that by putting
the modeling into the environment aligned the way that I wanted, that I was also
completely altering the function of the model.

So I took out the joint between the shoulder and the ground, and I replaced it
with the following:

AnyKinEqSimpleDriver ShoulderGroundDriver = {
AnyKinLinear ShoulderGroundLin = {
Ref = -1;
AnyRefNode &ref2 =
Main.MyValidation.HumanModel.Right.ShoulderArm.Seg.Scapula.temp;
};
DriverPos = {
Main.ShoulderParameters.ShoulderX,
Main.ShoulderParameters.ShoulderY,
Main.ShoulderParameters.ShoulderZ
};
DriverVel = {0, 0, 0};
Reaction.Type ={Off, Off, Off};
};

The model loads fine and the SetInitialConditions works, however when I run the
InverseDynamicAnalysis I get the following error:

‘MyStudy’ : Muscle recruitment analysis failed, simplex solver reports that
solution does not satisfy all constraints.

It is interesting to note that when I took the ground joint out of a simpler
model I have - where I had ground a point on the elbow to the ground reference
frame (and drove only one point on the hand by 3D trajectory) - the model was
able to step about 5 steps through the InverseDynamicAnalysis before failing
(with the same error message). The muscles in the model themselves bulged and
turned bright pink - which I believe means physiologically unrealizable.

Any suggestions or ideas as to why this isn’t working?

Thank you for your help with this,
Sarah

-----Original Message-----

> Date: Tue Jan 02 15:19:38 EST 2007
> From: “AnyBody Support” <support@anybodytech.com>
> Subject: [anyscript] Re: Driving a model two ways - with constant angular
velocity and 3-D trajectories
> To: anyscript@yahoogroups.com
>
> Hi Sarah,
>
> I have downloaded your models and have taken a brief look at them. It
> looks like the one with the constant velocity joint angles is working
> reasonably well and the problems are with the marker-driven model.
>
> I think there may be different of these problems and it is much
> easier to locate them one by one as we go along. I have added some
> comments to your text below:
>
> > Before even attempting to validate the model with EMG data from an
> > individual, I first wanted to see if I could even get two identical
> > models, driven different ways, to produce the same muscle activity
> > outputs.
>
> If you have the same movement, the same external load, and the same
> boundary conditions, then you will get the same muscle activations. I
> think the latter condition is the primary problem, but I’ll get back
> to that further down.
>
> > Creating the model of an upper-body performing a
> > bicep-curl driven by elbow angular velocity is relatively
> > easy.
>
> Yes, it looks like this model is performing reasonably. I have not
> checked it thoroughly, though.
>
> > To create a
> > model driven by 3-D trajectory points which exactly mimics the
> > constant angular model was a little more work. What I
> > essentially did was I stepped through the constant-angle
> > model analysis and took the palm joint point at each step
> > relative to the elbow. Then I drove the
> > model with all of these accumulated points. The purpose of this was
> > to compare the results between the two models – ideally they
> > should be the same regardless of whether they are driven with
> > constant angular velocity or 3-D trajectory points, right?
>
> Yes. But if you compare the velocities of the two models you will
> find that the angular velocity of the second model is not quite
> constant, i.e. there are accelerations present. Try plotting
> Main.MyStudy.Output.Model.HumanModel.Right.ShoulderArm.Seg.Hand.rDDot
>
> You will see that the hand accelerates +/- 1g, which will create
> significant oscillations in the muscle activations.
>
> > Needless to say, analysis of the two models did not result
> > in the same muscle activities (I have uploaded both models
> > into the file section – they are “Mannequin – cst
> > arm angles.zip” and “Mannequin – vicon drive.zip”).
> > These analyses were all done using the simple muscle
> > model (and the muscle activities were different for each model),
> > at which point I decided to try using the more physiologically-
> > realizable 3E muscle model.
>
> I think the 3E model is a separate problem that we should deal with
> after you get the expected results from the simple model.
>
> But I have noticed that there is a difference between the two models
> in the way that they are supported, and this is likely to have a
> significant effect on the predicted muscle activations. In the second
> model you have introduced a spherical joint between the scapula and
> ground at the top of the JointsAndDrivers file. This joint is capable
> of carrying loads and it is not present in the first model. You will
> not get the same result from the two models unless they are supported
> exactly the same way.
>
> To accomplish this in models that are driven in different ways in
> AnyBody, we have separated kinematics from kinetics. So, when you
> drve the model with marker data you switch the Reaction.Type off to
> avoid load-carrying markers. The same way you can specify supports
> that do not drive kinematics. These are the AnyReacForces.
>
> Best regards,
> John
>
>

PS - I also forgot to mention that when the simpler mannequin model (where the
elbow is driven to a point in space) that when the muscles bulge, there are also
these blue lines that appear to randomly project out from the shoulder in
multiple directions. There are about 7 of these blue lines. What are they?
Clearly something is wrong with the model, but I have never seen this before.

Thanks again,
Sarah

-----Original Message-----

> Date: Tue Jan 02 15:19:38 EST 2007
> From: “AnyBody Support” <support@anybodytech.com>
> Subject: [anyscript] Re: Driving a model two ways - with constant angular
velocity and 3-D trajectories
> To: anyscript@yahoogroups.com
>
> Hi Sarah,
>
> I have downloaded your models and have taken a brief look at them. It
> looks like the one with the constant velocity joint angles is working
> reasonably well and the problems are with the marker-driven model.
>
> I think there may be different of these problems and it is much
> easier to locate them one by one as we go along. I have added some
> comments to your text below:
>
> > Before even attempting to validate the model with EMG data from an
> > individual, I first wanted to see if I could even get two identical
> > models, driven different ways, to produce the same muscle activity
> > outputs.
>
> If you have the same movement, the same external load, and the same
> boundary conditions, then you will get the same muscle activations. I
> think the latter condition is the primary problem, but I’ll get back
> to that further down.
>
> > Creating the model of an upper-body performing a
> > bicep-curl driven by elbow angular velocity is relatively
> > easy.
>
> Yes, it looks like this model is performing reasonably. I have not
> checked it thoroughly, though.
>
> > To create a
> > model driven by 3-D trajectory points which exactly mimics the
> > constant angular model was a little more work. What I
> > essentially did was I stepped through the constant-angle
> > model analysis and took the palm joint point at each step
> > relative to the elbow. Then I drove the
> > model with all of these accumulated points. The purpose of this was
> > to compare the results between the two models – ideally they
> > should be the same regardless of whether they are driven with
> > constant angular velocity or 3-D trajectory points, right?
>
> Yes. But if you compare the velocities of the two models you will
> find that the angular velocity of the second model is not quite
> constant, i.e. there are accelerations present. Try plotting
> Main.MyStudy.Output.Model.HumanModel.Right.ShoulderArm.Seg.Hand.rDDot
>
> You will see that the hand accelerates +/- 1g, which will create
> significant oscillations in the muscle activations.
>
> > Needless to say, analysis of the two models did not result
> > in the same muscle activities (I have uploaded both models
> > into the file section – they are “Mannequin – cst
> > arm angles.zip” and “Mannequin – vicon drive.zip”).
> > These analyses were all done using the simple muscle
> > model (and the muscle activities were different for each model),
> > at which point I decided to try using the more physiologically-
> > realizable 3E muscle model.
>
> I think the 3E model is a separate problem that we should deal with
> after you get the expected results from the simple model.
>
> But I have noticed that there is a difference between the two models
> in the way that they are supported, and this is likely to have a
> significant effect on the predicted muscle activations. In the second
> model you have introduced a spherical joint between the scapula and
> ground at the top of the JointsAndDrivers file. This joint is capable
> of carrying loads and it is not present in the first model. You will
> not get the same result from the two models unless they are supported
> exactly the same way.
>
> To accomplish this in models that are driven in different ways in
> AnyBody, we have separated kinematics from kinetics. So, when you
> drve the model with marker data you switch the Reaction.Type off to
> avoid load-carrying markers. The same way you can specify supports
> that do not drive kinematics. These are the AnyReacForces.
>
> Best regards,
> John
>
>