Shouder Model. Some help please!!!

Hello again.
As I told you a few days ago, I am starting to work with AnyBody, mainly with shoulder models. I am using the model that verifies Bergmann’s results (V1.3).

For 45º abduction I am having no problems in obtaining the results and in understanding the majority of the (large amount) of information that the model is able to give us.

However, for angles between 45º and 90º, I am having an error related with the wraping algorithm.
To try to solve the problem (as indicated in message #918 in yahoo group):

1 - I already isolated the muscles in order no know which are the ones that are giving the error. These are the 5 segments of latissimus_dorsi.
2 - I already draw the wrapping surfaces (cylinder) to try to see if the cylinder needs to be longer. It seems that the cylinder is OK.
3 - Finaly, I augmented the number of points for the wraping algorithm. It didn’t solve the problem.

So I am wondering if I shouldn’t use the simple_muscle algorithm but a different one.

I realise that this is a type of error that has appeared in many other FAQ, but as I told you, I tryed do solve the problem on my own but now I need your help. I hope you can give me some!

Looking forward to hearing from you,
Margarida Bola

Hi Margarida,

I don’t think the changing the muscle model to something else than simple_model will help on this problem. The library OOsol is handling the calculation of the muscle path and the wrapping over surfaces. Unfortunately, this algorithm is sometimes a bit difficult to use as you can see from the posts on the forum that are related to this problem.

I don’t know how you changed the drivers. What I could suggest is to try some variations on the driver, maybe try to change the number of time steps, the time period, or what I tried and what helped on this problem, try to change the frequency of the Fourier driver.

Best regards
Daniel

P.S.:
Even if it will not help you at the moment, but with changes in the newest AnyBody (AMS 6.0) which will be released soon, this problem did not show up on all the changes that gave problems with the current wrapping algorithm in AMS.

Dear Daniel, thank you for your help.

I change the drivers in the following way:

// Abduction movement similar to Bergmann’s experiment:
//AnyKinEqFourierDriver: This class provides a Fourier expansion as driver function.
AnyKinEqFourierDriver AbductionDriverRight={
AnyKinMeasureOrg &ref1 =…HumanModel.Interface.Right.GlenohumeralAbduction;
Type = Sin; // Pos(i) = SUM( A(j) * sin(w(j)t+B(j)) )
Freq = 0.0625; // 0.1;
A = { {0.0, 90*pi/180} };
B = { {0.0, 0.0 } };
Reaction.Type = {Off};

I will try also the changes you sugested. I hope I can fix the problem.
Thank you!

Margarida

Dear Daniel,

the problem is fixed! Thank you for your help.
I doubled the time and used half of the frequency of the Fourier Funcion. It works!
:slight_smile:

Margarida

Dear Daniel,

As I told you some days ago, the algorith runs without problem, thanks to your help!

However, for an abduction of 90º, the results are not very similar to the ones of Bergmann (in: In vivo gleno-humeral joint loads during forward flexion and abduction, Journal of Biomechanics 44 (2011) 1543-1552 - At orthoload.com we can download his results).

My main problem is in the y component of GHReactionInHumerus. I’ll try to explain what I have.
I simulated 90º abduction of the arm followed by adduction into the inicial position. The entire movement lasts 16s.
Bergmann’s results show that Fx and Fz are positive with a maximum at 90º and Fy is negative with a minimum also at 90º.

I obtain the same trend regarding force signal (Fx and Fz positive and Fy negative) but Fz has a minimum at t=8s (instead of a maximum), which corresponds to the arm being at 90º; and Fz also has two maxima more or less at t=4s and t=12s, which I think corresponds to the arm being at 45º in abduction and in adduction, respectivelly.

I thought this could be related with muscle recruitment, particularly with the type of Inverse Dynamic Criterion used (MR_Quadratic), but I ran the algorithm with the other types (polynomial, min/max and composite criterions) and the results are not very diferent regarding Fz.

Plilippe Favre et al, in An algorithm for estimation of shoulder muscle forces for clinical use, Clinical Biomechanics 20 (2005) presents a new type of muscle recruitment. The main criterion used is the direction of muscle action.
I don’t know if you are familiar with his algorithm, but with your experience, do you think it is similar with any of the muscle recruitment types available in AnyBody?
I also was thinking of trying to make a new muscle recruitemnt criteion based on Plilippe Favre’s paper. Do you have any suggestion on this? Do you think it is feasible?

Thank you for your time. I hope you can help me.
Best regards, Margarida Bola

Hi Margarida,

the first thing that comes to my mind is to compare the motion of scapula. In the shoulder, the big range of motion is not covered only by the gleno-humeral joint, but also by motions of scapula. Especially for elevations of 90 deg and more, this should be taken into account. There are different sources giving different combinations of the motion of the scapular and the shoulder, e.g. Peat, M. Functional anatomy of the shoulder complex. Phys Ther, 1986, 66, 1855-1865 or JH de Groot, R Brand. A three-dimensional regression model of the shoulder rhythm. Clin Biomech 2001;16:735-743.

There is a shoulder rhythm implemented in the body model which controls this motion of scapular. A description of it can be found in http://wiki.anyscript.org/images/2/25/ShoulderRhythmReport.pdf . The model you used does not allow a motion of the scapula (as long as you did not switch it on).
So my suggestion would be to try the motion using this shoulder rhythm.

Best regards
Daniel