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:
-
The position and orientation of this node looks ok
-
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…
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’)
';
- 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:
-
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…
-
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)
-
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:
-
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)
-
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
)?
Thanks a lot.
Kind regards
Luca
[Non-text portions of this message have been removed]