Simple glenohumeral friction model

Hi guys,

I’m trying to simulate a friction between the humeral head and the glenoid in a simple 2D model. You can find the model in the attachment. The main file is called “Shoulder2D.any”.

Please open the “GlenoidNormal.any” file. In this file, I create a slider and revolute segments, in order to place a node on the humerus that has its X direction perpendicular to the glenoid surface point. Then, I apply a friction forces in the other directions of that point.

My problem is that I cannot get the friction to be applied on the humerus. Indeed, when I use the AnyForceMomentMeasure2 object, I don’t see any force applied on the humerus. I don’t understand why. I would expect that the force would be transmited to the humerus segment, since the prismatic segment is connected to the revolute segment and the revolute segment to the humerus.

Can you find what I did wrong ?

Thank you in advance.

Pierre

Hi Pierre,

i think it comes from these lines in GlenoidNormal.any:

AnyKinEq Lin2Glen = {
AnyKinLinear lin = {
AnySeg &ref1 = …SliderSeg;
AnyRefNode &ref2 = …GlenNode;
Ref = 0;
};
MeasureOrganizer = {0,1};
Reaction.Type = {On,On};
};

GlenNode is one of the GlobalRef nodes, so basically you have a reaction force between the SliderSeg and the globalRef. And the friction force goes to the Globalref instead of the humerus.

You should set that reaction to Off and create another AnyReacForce to the humerus this time.

Best regards, Sylvain.

Hi Sylvain,

Thank you for the answer. It was evident !!! I was too tired :wink:

I’m now back in my 3D model, but I’m stuck to the point of determining the instantaneous orientation of the friction node, depending on the glenohumeral rotations (GHRot). I already tried the following way:

Nf = Normal force (scalar)
Nfv = Normal force vector
Unfv = Unitary normal force vector = Nfv/vnorm(Nfv)

Iar = Instantaneous axis of rotation (humerus wrt scapula)

Uiar = Unitary instantaneous axis of rotation = Iar/vnorm(Iar)

mu = Friction coefficient

Friction vector = muNfcross(Unfv*Uiar)

… while using the following measures

// used to compute the instantaneous axis of rotation
AnyKinRotational Iar = {
AnyRefNode &ref1 = …Seg.Glenoid.GH;
AnySeg &ref2 = …Humerus;
Type = RotVector;
};

// use to compute the normal vector
AnyKinLinear Nfv = {
AnyRefNode &ref1 = …Seg.Humerus.GH_COR;
AnyRefNode &ref2 = …Seg.Glenoid.G1;
Ref = 0;
};

if I plot the force using that computation, I don’t get the right orientation.

Can you tell me why ?

Best regards.

Pierre

Hi Pierre,

I have some doubts about how you calculate the Iar and Nfv vectors. I think those two should be expressed in the same coordinate system for the cross product to be effective.

However if i am right, the rot measure (Iar) with the RotVector type will give you the vector in the first ref frame coordinate system, which is Glenoid.GH. Also equivalent to have it in the second ref with a -1 factor, and that is Humerus.
And the ref frame for the linear measure (Nfv) is Humerus.GH_COR.

Don’t you think that could be the cause of the problem?

Best regards, Sylvain.

Hi Sylvain,

You were right that the both measures had to be in the same ref frame. On the top of that, using the rotational velocity gives a better result, compared to use the rotational position.

What would be the influence of using the “AngVelOnOff” on the velocity measure ?

Thank you.

Pierre

Hi Pierre,

You should have a look at the reference manual, in the AnyKinRotational section. Usually it is used to calculate moment on the rotational measure, to make sure to have the correct units.

But I think this is not needed in your case. Because you are only interested in the direction of the vector to apply the friction, and not its length, isn’t it?. It seems you normalize it anyway to have a unity vector.

Best regards, Sylvain.

Bonjour Sylvain,

Yes it is right. I guess in that sense both the pos and vel measure are correct.

I have another question: What is the AnyForceConBasisCone ? Is this constraints serves to simulate a friction cone ? I would like to create a static friction mechanism in the top of my kinetic friction, so maybe this constraint is what I should use

What do you think ?

Merci.

Pierre

Yes, this constraint makes a friction cone. So it is good for your static friction. As always you will find the full description and an example in the reference manual.
Note that it is a new class that we have not use very much yet. So don’t hesitate to report any strange behaviour (there could be a few bugs still).

Sylvain.

Hi Sylvain,

Oh I see. I will uset it for sure in my friction model.

Thank you.

Pierre