Provide easy-to-use, extensible software for modeling, simulating, controlling, and analyzing the neuromusculoskeletal system.
-
Antoine Falisse
- Posts: 438
- Joined: Wed Jan 07, 2015 2:21 am
Post
by Antoine Falisse » Tue Nov 07, 2017 2:29 pm
Hello,
I am playing around with the Hunt Crossley model in Simbody.
I am trying to understand what would be the value of s1 in the following equation:
Code: Select all
const Real s1 = param2.stiffness/(param1.stiffness+param2.stiffness);
(see
https://github.com/simbody/simbody/blob ... e.cpp#L115)
when there is a contact between a sphere and a half space. For instance, I define a HuntCrossleyForce in an OpenSim xml in this way:
Code: Select all
<HuntCrossleyForce::ContactParametersSet name="contact_parameters">
<objects>
<HuntCrossleyForce::ContactParameters>
<!--Names of geometry objects affected by these parameters.-->
<geometry>plate r_foot_lat_heel</geometry>
<stiffness>3777162</stiffness>
<dissipation>2</dissipation>
<static_friction>0.8</static_friction>
<dynamic_friction>0.8</dynamic_friction>
<viscous_friction>0.5</viscous_friction>
</HuntCrossleyForce::ContactParameters>
</objects>
<groups />
</HuntCrossleyForce::ContactParametersSet>
<!--Slip velocity (creep) at which peak static friction occurs.-->
<transition_velocity>0.1</transition_velocity>
where plate is a ContactHalfSpace and r_foot_lat_heel is a ContactSphere. I guess it would make sense if s1 was 1 but it would be nice if someone could confirm or explain.
Thanks!
-
Michael Sherman
- Posts: 807
- Joined: Fri Apr 01, 2005 6:05 pm
Post
by Michael Sherman » Tue Nov 07, 2017 2:57 pm
Hi, Antoine. You might want to trace through to make sure you are clear on what Simbody feature OpenSim is using for the contact you specified. The Simbody code you referenced is calculating the composite material properties from two different materials contacting. The OpenSim code looks as though it is specifying the composite material properties directly. That makes me think OpenSim is likely using the older contact model in Simbody rather than the newer one, so it may not be using that Simbody code at all.
Regards,
Sherm
-
Antoine Falisse
- Posts: 438
- Joined: Wed Jan 07, 2015 2:21 am
Post
by Antoine Falisse » Tue Nov 07, 2017 3:30 pm
Hi Sherm, thanks for the quick reply. Actually, I am not really using that OpenSim code, it was for the sake of the example. I am trying to have a smooth implementation of the Hunt Crossley contact model to use it with auto diff. Since we have not implemented auto diff in the entire Simbody yet, we are using a simplified (but differentiable) version of the Hunt Crossley contact model where we assume the contact to be always between a sphere and the ground.
I am now trying to have an estimate of the stiffness value I should use for my contact element. The value in the OpenSim example above (3777162) comes from some simulation work using another smooth version of the Hunt Crossley model (
https://github.com/simbody/simbody/blob ... yForce.cpp). However, I was wondering what was happening when calculating s1 (
https://github.com/simbody/simbody/blob ... e.cpp#L115) since only the stiffness of the sphere was specified. I was assuming that when having a contact with the ground, the parameter k (
https://github.com/simbody/simbody/blob ... e.cpp#L123) would be equal to the stiffness of my contact element (since the ground is not deformable) and therefore s1 would be one. But you are right that I should best trace through to find out.
Thanks,
Best,
Antoine
-
Michael Sherman
- Posts: 807
- Joined: Fri Apr 01, 2005 6:05 pm
Post
by Michael Sherman » Tue Nov 07, 2017 5:30 pm
Antoine, you might find the discussion in
this paper helpful (see Appendix A).
It explains the logic behind the combining rules. However you are right that if one of the surfaces is fully rigid and the other compliant, then the composite properties are just those of the compliant surface.
Sherm