# Questions about moment arm calculation in AnyBody

Hi, i'm Dwan Lee.

Currently i study moment arm calculation tutorial in AnyBody.

My questions are,

LmtDot is the speed of the contractile element. But if angular velocities always set to 1, what options can affect to LmtDot?

• Muscle wrapping
• SPLine.StringMesh
• Anything else?

From EvaluateMomentArmsStudy.any, why nStep is set to 40?

• I changed this value many times, but the results are always same.

LmtDot can also measure during inverse dynamics step. If i assumed the angular velocities are 1, are they equal or similar to the output from "EvaluateMomentArms.any"?

• If they are not, how can i match them?

Thank you,

Best regards.

Dwan Lee

Hi Dwan Lee,

Here are some answers to the questions:

LmtDot is the speed of the contractile element. But if angular velocities always set to 1, what options can affect to LmtDot?

Muscle wrapping
SPLine.StringMesh
Anything else?

You are right LmtDot can be affected by the items you list which includes the origin and insertation points.

From EvaluateMomentArmsStudy.any, why nStep is set to 40?

I changed this value many times, but the results are always same.

the number of steps are used to able to show the moments arm development over the course of the ROM, a higher number would mean a better insight and vise versa.

LmtDot can also measure during inverse dynamics step. If i assumed the angular velocities are 1, are they equal or similar to the output from "EvaluateMomentArms.any"?

If they are not, how can i match them?

yes this is correct, as long as you move one joint at the time and that the velocity is 1, other studies would show the same. There is nothing special about the moment arm studies except that it moves one DOF at the time.

Best regards
SĂ¸ren

1 Like

Hi, SĂ¸ren.

But if the angular velocity is not 1, the equation: LmtDot/angular velocity is still acceptable? (The reason why i want to know is the input of my model is c3d, so i couldn't control the joint velocity.)

By the way,

I'm trying to make a line between the point of GH joint and perpendicular to the line of action of the muscle. However, AnyShortestPathMuscle only needs muscle's origin & insertion, so it's really hard to define the point which is perpendicular to the line of action of the muscle.

Can AnyBody make a point perpendicular to the line of action of the muscle?

Thank you,

Best regards.

Dwan Lee

Hi Dwan Lee,

The equation is still correct but be careful if you use C3D since it will be hard to avoid moving more than one joint at the time and this will affect moment arm of biarticular muscles then.

Unfortunately you can not measure on the SP line this would be required to do the measure you are requesting... you can use origin, insertion and via points but not points in between.

Best regards
SĂ¸ren

1 Like

Hi, SĂ¸ren.

As far as I've checked a AnyBody shoulder model, rhythm is defined as AnyKinMeasureLinComb.

And I'm planning to change AnyKinMeasureLincomb to AnyKinMeasureQuadComb.

Here this picture is the reference about QuadComb, and i couldn't understand why y[0]=x[0]^2+x[1]^2-2x[0]x[1]+x[0]-x[1]+10
y[1]=x[2]^2-2x[2]+20

Could you please explain them for me?

Thank you,

Best regards.

Dwan Lee

Hi Dwan Lee,

I understand that this can look at bit confusing, i have actually never used the object yet. We settled on this notification because it gives a lot of freedom to create combination measures.

I have tried to add some more detail in the calculations please here

My notations may not be perfectly correct but i think this pseudo code displays how it works.

Note especially the X^T *CoefTensor *X

``````
X ={x0,x1,x2}';

Coef ={{1,-1,0},
{0,0,2};};

CoefTensor ={{ 1,-1, 0}
{-1, 1, 0}
{0,  0, 0} };

Const ={10,20};

//Linear components  Coef*X  + Const

(1)  x0   - x1 + 10
(2) -x0 +  x1 + 20

CoefTensor_1 * X =>

{{ 1, -1, 0}
{-1, 1, 0}    * X   = >    {x0-x1,-x0+x1,0 }
{0,  0, 0} }

{{ 1, -1, 0}
X^T*    {-1, 1, 0}    * X   = >    {{x0},{x1},{x2}}*{x0-x1,-x0+x1,0 }
{0,  0, 0} }

(1b)  x0^2-x1*x0+-x0*x1+x1*x1 =>  x0^2+2x0*x1 +x1^2

CoefTensor_2 * X =>

{{ 0, 0, 0}
{0, 0, 0}    * X   = >    {0,0, x2}
{0,  0, 1} }

{{ 0, 0, 0}
(2b)    X^T*    {0, 0, 0}    * X   = >    {{x0},{x1},{x2}}*{0,0,x2 }  => x2^2
{0, 0, 1} }

(1) and (1b)
x0 -x1 +10 +x0^2+2*x0*x1+x1^2

(2) and (2b)
-x0 +x1 +20 +x2^2

``````

Best regards
SĂ¸ren

2 Likes

Hi, SĂ¸ren.

Thank you for your sample code, finally i could understand how to create "QuadComb".

By the way,

I'm wondering about updated shoulder rhythm in AnyBody v7.3.1.

Originally, the shoulder rhythm code in AnyBody(v7.2.x) is based on De Groot et al., 1998, and this reference provides linear regression equations and some values.

From those, the ratio of scapulohumeral rhythm is around 2.5:1 in v7.2.x.

However, after the update the rhythm is changed to around 3.5:1 because there has a lot of changes.

So could you explain why the ratio has to be changed? Did it refer to other references?

And if i want to make the ratio of scapulohumeral rhythm to 2:1 exactly, does it have the way in AnyBody?

Thank you,

Best regards.

Dwan Lee

Hi Dwan Lee,

I do not fully understand the numbers you are listing,
I have made this small illustration to explain the origin of the coefficients, i hope it helps. The recent change in the shoulder rhythm has made the rhythm more consistent with the paper.

Best regards
SĂ¸ren

1 Like

Hi, SĂ¸ren.

Why the correction value is needed before the update of 7.3?

If i want to modify the ratio of scapulohumeral rhythm, can it be changed manually by user, otherwise must be set equal?

Thank you,

Best regards.

Dwan Lee

Hi Dwan,

As you can see the values are matching up with the paper now, associated with the change in values note that also some of the underlying measures being used has changed, to be more consistent with the paper.
The correction values on the constant are used to obtain a desired neutral angle.

Best regards
SĂ¸ren

1 Like

This topic was automatically closed 125 days after the last reply. New replies are no longer allowed.