Contact force "occasionally"

Hey

I am using a mocap-driven full body human model. This human model is seated in a chair with front rest. The chairs position and the front rest is also driven by mocap data.

The situation is the following: the human is seated without the front rest and at some points it leans on to the front rest. I have the motion of the front rest (from the mocap-data) and the force-displacement function of the front rest. I wounder how I can model this contact force between the front rest and the human when they are only in contact under some periods of the simulation? Is there some functionality to solve this?

Kindly regards, Marie

Dear Marie,

I would recommend you to see our ‘SeatedHuman’ example in the AMMR.

Then you can find the ‘Support.any’ file and you can find the many use of our conditional contact elements there.

Following is one piece of code examples:

  AnyFolder FootSupportBackRight = {
    AnyRefFrame &BaseObject =....EnvironmentModel.Seg.FootRest;
    AnyRefFrame &TargetObject =....HumanModel.Right.Leg.Seg.Foot.HeelJoint;
    
    AnyRefFrame &StrengthObject=TargetObject; //Node used for strength measurement, occasionally this is different from the target object
    
    AnyFolder &DrawRef=Main.DrawSettings; //reference to the folder which contains drawsettings
    //low limit for the strength measure function, if the distance measured along Direction[0] is below this val. the strength will be zero (negative)
    AnyVar UserDefinedLimitLow=-0.05; 
    //high limit for the strength measure function, if the distance measured along Direction[0] is above this val. the strength will be zero
    AnyVar UserDefinedLimitHigh=0.05; 
    
    //high limit for the strength measure function, if the radius measured along the plane with Direction[0] as normal is above this val. the strength will be zero
    AnyVar UserDefinedRadiusLimit=0.7; 
    
    AnyVar [b]Strength [/b]=.Strength;  //strength of muscles
    AnyVar StaticFrictionCoefficient=.StaticFrictionCoefficient; //Friction coefficient
    AnyVar ScaleFactor =1; //scale factor for draw vectors it can be set differently than by the drawsettings
    
    AnyIntArray Direction={0,1,2}; //first element gives normal direction
    #include  "<ANYBODY_PATH_TOOLBOX>\FrictionContactMuscles\ContactSurfaceLinPush.any"
  };

Here you can define the amount of strength for your individual conditional contact element.

I would recommend you to make your own implementation for this strength based on the distance or the time. Then you can achieve what you think.

I hope this may be helpful to you.

Best regards,
Moonki

Hey Moonki,

Thanks for you answer. I think this is helpful for me. I am using the ConditionalContactClass. I have a contact between two segments and not foot to ground for example. I wonder if this function is transferring the reaction forces to both segments in the contact and not only the TargetObject?

Can you please explain to me the meaning of the strength parameter. Is this the maximum force that can be attained in the normal direction of the contact?

Kind regards, Marie

Dear Marie,

Conditional contact element will act between two objects.
So the forces will be acting between the base object and the target object.

Your guess is right.
That strength parameter will determine the maximum normal force size.

You can find more detail information here:
http://wiki.anyscript.org/index.php/All_about_FrictionContactMuscles

Best regards,
Moonki

Hej!

We are working with the conditionalcontactclass and have read in the paper by Fluit et al (2014) that contact is achieved if velocity is smaller than 0,8m/s. We are thinking about increasing this value, but have not found any place in the file structure where this can be made.

Kind regards,
Marie & jokke

Hi Marie,

The variable for that is LimitVelHigh and you can get access to it in the FootPlateConditionalContact.any file.

Best regards,
Mohammad S. Shourijeh, PhD
AnyBody Team

The file FootPlateConditionalContact.any isn’t to be found in the current repository (AMMR) that we use, nor is the setting LimitVelHigh (when checking other “conditional contact files”). We did find both the file and the setting in an older gait model/application (which is not useful presently). We use the ConditionalContact class for emulating a contact between the spine and a back rest. And, when the “contact node” on the spine is moving too fast (just above 0.8 m/s) we get a discontinuity in the contact force that has unwanted consequences (eg. iliopsoas has to work when it should not). We need to understand how the conditionalcontactclass has defined LimitVelHigh?

/jokke & Marie

Dear Marie & jokke,

I think that you can find useful information here:
http://wiki.anyscript.org/images/2/2a/AddingGRFpredictiontoaMoCapmodel.pdf

Also in the pdf file there is a link where you can download the example.

There is an option how to use the reletive velocity in order to change the artificial contact muscle strength.

Best regards,
Moonki