Hi
I am studying and trying to understand how contact forces are modeled in the Simbody, especially Hunt and Crossley force. The model that I am studying is a sphere bouncing on a plane. The stiffness coefficient between the sphere and plane is 10000000. At the first step of understanding, I have neglected the dissipation and the effect of friction in this model. I have used the Forward Dynamic tool in OpenSim to simulate the contact between the sphere and the plane to obtain the contact force between them.
To validate the contact forces, I have subtracted the radius of the sphere from the displacement of the center of mass of the sphere in the Y direction. In instances in which this subtraction is negative, it means that the sphere is in contact with the plane and the contact force exists. I have calculated this contact force with the relation which is given on the SimTK website. k is the stiffness coefficient which is 10000000 in this model. x is obtained from the absolute magnitude of the subtraction that is mentioned above. And exponent n is 1.5 here. The c coefficient is assumed zero because of the neglection of the dissipation. When I calculate the contact force with this relation, the calculated force for each instance is 9.21525727104773 times the contact force that is calculated in the Simbody engine.
Could you please help me to understand what is missing here?
I need to validate this relation.
I have attached the contact forces calculated in Simbody and calculated from the mentioned relation in an Excel file.
Thanks
Milad
Contact Modeling in OpenSim
- Milad Ghafary
- Posts: 2
- Joined: Mon Jun 04, 2018 2:37 pm
- Nicos Haralabidis
- Posts: 199
- Joined: Tue Aug 16, 2016 1:46 am
Re: Contact Modeling in OpenSim
Hello Mihad,
Is this the code you were referring too? https://github.com/simbody/simbody/blob ... ontact.cpp
This article also explains how the forces are calculated using the Hunt-Crossley model:
https://www.sciencedirect.com/science/a ... 3811000241
I hope that helps in some way!
Cheers.
Nicos
Is this the code you were referring too? https://github.com/simbody/simbody/blob ... ontact.cpp
This article also explains how the forces are calculated using the Hunt-Crossley model:
https://www.sciencedirect.com/science/a ... 3811000241
I hope that helps in some way!
Cheers.
Nicos
- Michael Sherman
- Posts: 812
- Joined: Fri Apr 01, 2005 6:05 pm
Re: Contact Modeling in OpenSim
Hi, Milad.
Given a compliant sphere of radius R and elastic modulus E in contact with a rigid halfspace, Hertz contact force is
F = 4/3 sqrt(R) E x^(3/2)
where x is the penetration depth. With no dissipation or friction, that should give the total contact force. So the relevant questions are:
That's my speculation but I don't actually know how OpenSim is mapping your model into a Simbody calculation; likely someone else on this forum can give you a more definitive answer.
Regards,
Sherm
Given a compliant sphere of radius R and elastic modulus E in contact with a rigid halfspace, Hertz contact force is
F = 4/3 sqrt(R) E x^(3/2)
where x is the penetration depth. With no dissipation or friction, that should give the total contact force. So the relevant questions are:
- What is the radius R?
- How does OpenSim map the "stiffness" to the elastic modulus E?
That's my speculation but I don't actually know how OpenSim is mapping your model into a Simbody calculation; likely someone else on this forum can give you a more definitive answer.
Regards,
Sherm