GH reactions and validation of shoulder model

Hallo everyone!
I’m Luca, an italian student, and I’m working on the shoulder, more
precisely on the GH reactions.
My purpose is to make a validation of my model with Bergmann’s values
of forces like the one i’ve seen in a recent webcast (April 2007), but
actually I can’t.
This is the procedure I’ve follow:

  1. I’ve changed the reference frame in the humerus from the AnyBody
    reference (ISG) to the ISB reference (creating a new node coincident
    with GH node, named ISBRefNode, and rotating 90° about Y). I define a
    new reference using the ISB suggested bony landmarks too…the result
    is slighty different…

  2. I’ve projected the resultant force FTotal given by GHReactions on
    the new axes (axes coordinates are the columns of the ISBRefNode.Axes
    if i’m not mistaken)

  3. I created vectors from axes versor and relative components, to
    control that the resultant force is the same than before.

Although the total value of GH reaction is very similar to Bergmann’s,
the components of the force are very different, especially for the x
component (I’ve considered the opposite force of Ftotal of course).

I’m asking help, hoping you know the details of the webcast, because I
can’t understand if:

  1. This difference depends on my drivers (I use a T vector with 12
    steps to make an abduction of 45° with 2 kg dumbell, like in
    Bergmann’s article) or on errors in the reference frame i’ve defined.
    For such an abduction there’s no scapular rhythm, although I’ve
    noticed a sort of flexion forward of the model in XY plane ( corrected
    in other mannequin files, with no changes in results)

  2. I had to modify the GHReactions.any file, adding points to the
    glenoid to obtain a more accurate direction of the force (I’m always
    reluctant to modify the Brep files)

I take the occasion to ask another thing.I find difficulties in the
use of OOSolQP with the QP penalty when the model has 3 elements
Hill’s muscles. The algorithm seems to be numerically unstable for
some penalty value and a good value of the penalty seems to be
dependent from the drivers (for instance, the model that I upload as
“Luca shoulder.zip” doesn’t work with quadratic recruitment).
Can I ask a few suggestions for a good use of the OOSolQP (I’ve read
the tutorial :slight_smile: )?
Thanks a lot.

Kind regards

Luca

Hi Luca

Welcome to the group

I have been doing some debugging on your model and found that the motion of
the arm is the cause for the difference in the results. I have uploaded a
new version of the model to

“Luca_shoulderV2.zip”

Here are some answers to your questions:

  1. The position and orientation of this node looks ok

  2. I have not understood your transformations in detail, but I have
    introduced the transformation used in the model from the webcast into your
    model and the output is exactly the same, so yours must be ok… :wink: The
    entire transformation can be written as in a compact form as:

AnyVec3 GHReactionInHumerus =
-(.Spalla.HumanModel.Right.ShoulderArm.Seg.Humerus.ISBRefNode.Axes’

*.Spalla.HumanModel.Right.ShoulderArm.Jnt.GHReactions.ResultanForce.FTotal’)
';

  1. The difference in the results are caused by differences in the motion of
    the humerus, in the model from the webcast the hand was constrained not to
    move wrt to scapula’s local x axis. I compared the two motions visually and
    in your model the hand goes much more forward than in the webcast model. To
    resolve this issue I have introduced the webcast drivetrs in the file
    “PosizioneVelocita_deVettore.any” . I have also made changes in the
    intialpositions.any and the mannequin.any file.

It sounds reasonable to add more points to the glenoid, this would make the
“edge” of direction that the force can take more “circular”. In principle
this direction is a polygon with as many corners as you have points. I do
not think that increasing the point numbers will have significant influence
on the results though.

In principle different penalty values should not have an influence on the
stability of the solver, but in some cases it may have, if the equation
system is ill-conditioned. We have found that adding a small amount of
gravity to the zero directions of the gravity vector will typically help
making the systems more stable. So in the model I have uploaded I have used
a gravity vector like this Gravity = {0.001, -9.81, 0.001};

I hope I have addressed all the questions, otherwise please do not hesitate
to ask again.

Best regards

Søren, AnyBody Support


From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com] On Behalf
Of modena
Sent: 27 November 2007 12:49
To: anyscript@yahoogroups.com
Subject: [AnyScript] GH reactions and validation of shoulder model

Hallo everyone!
I’m Luca, an italian student, and I’m working on the shoulder, more
precisely on the GH reactions.
My purpose is to make a validation of my model with Bergmann’s values
of forces like the one i’ve seen in a recent webcast (April 2007), but
actually I can’t.
This is the procedure I’ve follow:

  1. I’ve changed the reference frame in the humerus from the AnyBody
    reference (ISG) to the ISB reference (creating a new node coincident
    with GH node, named ISBRefNode, and rotating 90° about Y). I define a
    new reference using the ISB suggested bony landmarks too…the result
    is slighty different…

  2. I’ve projected the resultant force FTotal given by GHReactions on
    the new axes (axes coordinates are the columns of the ISBRefNode.Axes
    if i’m not mistaken)

  3. I created vectors from axes versor and relative components, to
    control that the resultant force is the same than before.

Although the total value of GH reaction is very similar to Bergmann’s,
the components of the force are very different, especially for the x
component (I’ve considered the opposite force of Ftotal of course).

I’m asking help, hoping you know the details of the webcast, because I
can’t understand if:

  1. This difference depends on my drivers (I use a T vector with 12
    steps to make an abduction of 45° with 2 kg dumbell, like in
    Bergmann’s article) or on errors in the reference frame i’ve defined.
    For such an abduction there’s no scapular rhythm, although I’ve
    noticed a sort of flexion forward of the model in XY plane ( corrected
    in other mannequin files, with no changes in results)

  2. I had to modify the GHReactions.any file, adding points to the
    glenoid to obtain a more accurate direction of the force (I’m always
    reluctant to modify the Brep files)

I take the occasion to ask another thing.I find difficulties in the
use of OOSolQP with the QP penalty when the model has 3 elements
Hill’s muscles. The algorithm seems to be numerically unstable for
some penalty value and a good value of the penalty seems to be
dependent from the drivers (for instance, the model that I upload as
“Luca shoulder.zip” doesn’t work with quadratic recruitment).
Can I ask a few suggestions for a good use of the OOSolQP (I’ve read
the tutorial :slight_smile: )?
Thanks a lot.

Kind regards

Luca

[Non-text portions of this message have been removed]

Thank you very much Soren for your quick answer, now I’m going to
improve the debugged model.

Best regards

Luca

— In anyscript@yahoogroups.com, “AnyBody Support” <support@…> wrote:
>
> Hi Luca
>
>
>
> Welcome to the group
>
>
>
> I have been doing some debugging on your model and found that the
motion of
> the arm is the cause for the difference in the results. I have
uploaded a
> new version of the model to
>
> “Luca_shoulderV2.zip”
>
>
>
> Here are some answers to your questions:
>
> 1) The position and orientation of this node looks ok
>
>
>
> 2) I have not understood your transformations in detail, but I have
> introduced the transformation used in the model from the webcast
into your
> model and the output is exactly the same, so yours must be ok… :wink: The
> entire transformation can be written as in a compact form as:
>
>
>
> AnyVec3 GHReactionInHumerus =
> -(.Spalla.HumanModel.Right.ShoulderArm.Seg.Humerus.ISBRefNode.Axes’
>
>
>
*.Spalla.HumanModel.Right.ShoulderArm.Jnt.GHReactions.ResultanForce.FTotal’)
> ';
>
>
>
> 3) The difference in the results are caused by differences in the
motion of
> the humerus, in the model from the webcast the hand was constrained
not to
> move wrt to scapula’s local x axis. I compared the two motions
visually and
> in your model the hand goes much more forward than in the webcast
model. To
> resolve this issue I have introduced the webcast drivetrs in the file
> “PosizioneVelocita_deVettore.any” . I have also made changes in the
> intialpositions.any and the mannequin.any file.
>
>
>
> It sounds reasonable to add more points to the glenoid, this would
make the
> “edge” of direction that the force can take more “circular”. In
principle
> this direction is a polygon with as many corners as you have points.
I do
> not think that increasing the point numbers will have significant
influence
> on the results though.
>
>
>
> In principle different penalty values should not have an influence
on the
> stability of the solver, but in some cases it may have, if the equation
> system is ill-conditioned. We have found that adding a small amount of
> gravity to the zero directions of the gravity vector will typically help
> making the systems more stable. So in the model I have uploaded I
have used
> a gravity vector like this Gravity = {0.001, -9.81, 0.001};
>
>
>
> I hope I have addressed all the questions, otherwise please do not
hesitate
> to ask again.
>
>
>
> Best regards
>
> Søren, AnyBody Support
>
>
>
>
>
>
>
> _____
>
> From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com]
On Behalf
> Of modena
> Sent: 27 November 2007 12:49
> To: anyscript@yahoogroups.com
> Subject: [AnyScript] GH reactions and validation of shoulder model
>
>
>
> Hallo everyone!
> I’m Luca, an italian student, and I’m working on the shoulder, more
> precisely on the GH reactions.
> My purpose is to make a validation of my model with Bergmann’s values
> of forces like the one i’ve seen in a recent webcast (April 2007), but
> actually I can’t.
> This is the procedure I’ve follow:
>
> 1) I’ve changed the reference frame in the humerus from the AnyBody
> reference (ISG) to the ISB reference (creating a new node coincident
> with GH node, named ISBRefNode, and rotating 90° about Y). I define a
> new reference using the ISB suggested bony landmarks too…the result
> is slighty different…
>
> 2) I’ve projected the resultant force FTotal given by GHReactions on
> the new axes (axes coordinates are the columns of the ISBRefNode.Axes
> if i’m not mistaken)
>
> 3) I created vectors from axes versor and relative components, to
> control that the resultant force is the same than before.
>
> Although the total value of GH reaction is very similar to Bergmann’s,
> the components of the force are very different, especially for the x
> component (I’ve considered the opposite force of Ftotal of course).
>
> I’m asking help, hoping you know the details of the webcast, because I
> can’t understand if:
>
> 1) This difference depends on my drivers (I use a T vector with 12
> steps to make an abduction of 45° with 2 kg dumbell, like in
> Bergmann’s article) or on errors in the reference frame i’ve defined.
> For such an abduction there’s no scapular rhythm, although I’ve
> noticed a sort of flexion forward of the model in XY plane ( corrected
> in other mannequin files, with no changes in results)
>
> 2) I had to modify the GHReactions.any file, adding points to the
> glenoid to obtain a more accurate direction of the force (I’m always
> reluctant to modify the Brep files)
>
> I take the occasion to ask another thing.I find difficulties in the
> use of OOSolQP with the QP penalty when the model has 3 elements
> Hill’s muscles. The algorithm seems to be numerically unstable for
> some penalty value and a good value of the penalty seems to be
> dependent from the drivers (for instance, the model that I upload as
> “Luca shoulder.zip” doesn’t work with quadratic recruitment).
> Can I ask a few suggestions for a good use of the OOSolQP (I’ve read
> the tutorial :slight_smile: )?
> Thanks a lot.
>
> Kind regards
>
> Luca
>
>
>
>
>
> [Non-text portions of this message have been removed]
>