ToolBox: ContactSurfaceLinPush.any

Hi,

I’m trying to figure out, what exactly the ContactSurfaceLinPush ToolBox does, to use it in simulating ground rection forces, but am still having some trouble!

I guess my biggest problem is based on the understanding of the FrictionMuscle Model: As I understand it, through the AnyKinMeasure a AnyGeneralMuscle is defined in whether it applies a force, moment,… and in which direction it acts. I cannot envision though,what this particular muscle, defined by the AnyKinMeasureLinComb, that linearly combines distance measures in y (normal) and x/z directions, does?!?

Additionally, an underlying mechanical concept isn’t apparent to me, even though a the StaticFrictionCoefficient is used, since “muscles” including their optimization algorithms are used to determine the forces?!?

Kat

Tried to clarify my questions, see above!
Hope somebody can help me!

Katharina,

We will add an explanation/description about the conditional contact on the wiki within the next days (I guess you looked at the General Muscle tutorial already). I hope the new wiki entry will help.

Hi Katharina,

Sorry for late reply. But we have been very busy with internal works.

Here we made a wiki page which will explain how ContactSurfaceLinPush.any file works.

I hope this may be helpful to you.

Best regards,
Moonki

Hi Moonki,

thanks for the support!
What I still don’t understand, though, is how and in which direction the AnyGeneralMuscles act!
As you pointed out in the Wiki, the normal Force is of course described as the sum of the forces in the normal direction. In the ContactSurfaceLinPush.any file the normal force is described as the sum of forces of all general muscles defined and the frictional force is described as the forces of the AnyGeneralMuscles multiplied by the statice friction coefficient (respecting positive and negative orientation of pull and push) - both beeing the description of the force vectors to be drawn. This description makes it sound like the muscle forces just act in the normal direction, no frictional forces are applied, which I’m sure is not the case!
Best regards,
Kat

Hi Katharina,

Let’s see the code of Direction01Muscle in the ContactSurfaceLinPush.any file here:

``````
AnyFolder Direction01Muscle={
AnyFolder Push={
AnyKinMeasureOrg NormalDir={
AnyKinLinear &ref=...Lin;
MeasureOrganizer={....Direction[0]}; //always pick first element
};
AnyKinMeasureOrg FrictionDir={
AnyKinLinear &ref=...Lin;
MeasureOrganizer={....Direction[1]}; // pick second element
};
AnyKinMeasureLinComb LinCombinationMeasure ={
AnyKinMeasureOrg &u1=.NormalDir;
AnyKinMeasureOrg &u2=.FrictionDir;
OutDim = 1;
Coef={
{1,....StaticFrictionCoefficient}
};
};

AnyGeneralMuscle FrictionMuscle={
//       AnyKinMeasureOrg &ref1=.FrictionDir;
AnyKinMeasureLinComb &ref1=.LinCombinationMeasure;
AnyMuscleModelUsr1 &ref2=...ContactMuscleModel1;
ForceDirection=1;
};

};//Push
``````

AnyGeneralMuscle(also AnyReacForce) will act in the same direction of the kinematic measure object which is inside it. So in the above code, this ‘FrictionMuscle’ will act in the direction of AnyKinMeasureLinComb object.

And this AnyKinMeasureLinComb object is the linear combination of two kinematic measures(normal and frictional directions). So it means that this AnyGeneralMuscle will act in ‘both’ directions.

I hope this may be helpful to you.

Best regards,
Moonki

Hi Moonki,

Based on your explanation I don’t understand the connection to your description in the wiki of how the normal and frictional forces will be created and how their realtionship is, though.
The general muscles only give you an absolute force value (.Ft) with no information of force direction, correct? For the calculation of the NormalForceValue, pretty much at the end of the script, you calculate the NormalForce by just adding the musles forces, which would be in conflict with the description above!
Plus, to calculate the Friction Force after that, you multiply the Muscle Forces .Ft as “NormalForce” values with the Friction Coefficient! The Muscle Forces already depend in some way on the friction coefficient and again should already incorporate a frictional component?!?
Best regards,
Kat

Hi Katharina,

I understand what you may feel confused from my explanation.

Let me explain more.

1. As I explained, AnyGeneralMuscle which uses the AnyKinMeasureLinComb will generate the forces in two directions. That’s correct.
But AnyKinMeasureLinComb itself is a 1-dimensional kinematic measure in this case. So that’s the reason why you could only see the 1 component in the Fout output of AnyGeneralMuscle object.
I have to ask to the developers regarding this issue. But it seems that in this case the Fout of AnyGeneralMuscle shows the force of the ‘first’ component of AnyKinMeasureLinComb.
2. There are some ways to see whether this AnyGeneralMuscle can generate both normal and friction forces.
``````  AnyFolder Direction01Muscle={
AnyFolder Push={
AnyKinMeasureOrg NormalDir={
AnyKinLinear &ref=...Lin;
MeasureOrganizer={....Direction[0]}; //always pick first element
};
AnyKinMeasureOrg FrictionDir={
AnyKinLinear &ref=...Lin;
MeasureOrganizer={....Direction[1]}; // pick second element
};
AnyKinMeasureLinComb LinCombinationMeasure ={
AnyKinMeasureOrg &u1=.NormalDir;
AnyKinMeasureOrg &u2=.FrictionDir;
OutDim = 1;
Coef={
{1,....StaticFrictionCoefficient}
};
};

AnyGeneralMuscle FrictionMuscle={
//       AnyKinMeasureOrg &ref1=.FrictionDir;
AnyKinMeasureLinComb &ref1=.LinCombinationMeasure;
AnyMuscleModelUsr1 &ref2=...ContactMuscleModel1;
ForceDirection=1;
};

[b]      AnyForceMomentMeasure NetMuscleEffect =
{
AnyForceBase& mus = .FrictionMuscle;
AnyRefFrame& TargetObject = ....TargetObject;
};
AnyVec3 NetMuscleEffect_Force_Local = NetMuscleEffect.F * ...BaseObject.Axes;[/b]

};//Push
``````

You can use the AnyForceMomentMeasure object to check the resultant force and moment from several forces at a certain point of interest.
And you can transform the resultant global force and moment into any local reference frame.
In this case you can see that Direction01Muscle and Direction02Muscle object can generate both normal and friction forces.

For your better understanding, I tried to modify this ContactSurfaceLinPush.any file. You can overwrite the existing file in your local folder with this.
Also at the end of my file, I tried to add some pieces of code to calculate the normal and friction forces in a different way.

Whenever you have some doubt regarding forces and moments, you can try to make your own AnyForceMomentMeasure or AnyForceMomentMeasur2 class object. Then you can check whether your modeling is correct or not.

Best regards,
Moonki

Hi Moonki,

It would be great if you could keep me posted if the AnyGeneralMuscle really shows the force of the ‘first’ component of AnyKinMeasureLinComb!
Either way I’m still confused, why - in the model - the friction force can be calculated by multiplying the normal force times the friction coefficient, since in the AnyKinMeasureLinComb the friction coefficient is multiplied by the distance of the BaseObject to the StrengthObject in the direction of friction, not in the direction of the normal force! Therefore the applied friction force by the muscle shouldn’t be correlated with the normal force either way and the description in the wiki would not be precise!?!
Best regards,
Kat

Hi Katharina,

AnyKinMeasureLinComb does not make the relationship between the different forces. It defines a new kinematic measure between different kinematic measure objects.

In this case, AnyKinMeasureLinComb object will define a new ‘direction’ from two kinematic measures. And the force will be acting on that direction.

That’s the reason why the friction coefficient was multiplied to the frictional direction.

Best regards,
Moonki

P.S) Have you ever checked the values from AnyForceMomentMeasure objects? Then you can find that the values will make sense.

Thanks for the help!
The AnyForceMomentMeasure showed what you said about how the AnyGeneralMuscle Ft is only the Force Component in the first direction declared in the AnyKinMeasureLinComb! The measured Force in the Friction direction is equal to the Normal Force times Friction coeffiecient (± 0.0008).
Even though I still don’t understand the fundamentals behind those measures and the muscle, it does as you told me:)
thanks again for the support!
Regards,
kat