Hello!
When scaling the Full Body Model of the Lumbar Spine from Opensim, the feet go through the floor. I would like to add a constraint or contact geometry to prevent this from happening in the future. I am thinking about two options:
1) Adding a HalfSpace to the ground and HalfSpheres to the toes and calnc.
2) Adding the RollingOnSurfaceConstraint to the feet.
I have not been able to get either to work properly. I either get an error that states the socket was not connected properly or the model doesn't load in OpenSim.
Any advice on this topic would be much appreciated!
Thank you!
Rolling On Surface Constraint
- Aspen Taylor
- Posts: 7
- Joined: Mon Mar 02, 2020 7:27 pm
- Christopher Dembia
- Posts: 506
- Joined: Fri Oct 12, 2012 4:09 pm
Re: Rolling On Surface Constraint
I would use ContactSpheres on the feet and a ContactHalfSpace for the ground. See this paper for an example of using OpenSim's Hunt-Crossley Force to model foot-ground contact: https://journals.plos.org/plosone/artic ... ne.0217730
- Mohammadreza Rezaie
- Posts: 412
- Joined: Fri Nov 24, 2017 12:48 am
Re: Rolling On Surface Constraint
Dear Dr. Dembia,
Thank you very much for the response.
Is there any sample model you would share?
I added these two:
And also Hunt-Crossley Force:
Are these correct? I don't know how to define the parameters like stiffness, dissipation and etc.
One more thing, when I run the forward dynamics, the force reporter gives me the contact forces. I suppose If I add multiple spheres (e.g. 25) beneath the foot, I can estimate the ground reaction forces during walking. Can I use the resultant forces for inverse dynamics?
The problem is that there is no center of force to create the external loads file. Would you please guide me to figure it out?
Your help is highly appreciated.
Cheers,
Mohammadreza
Thank you very much for the response.
Is there any sample model you would share?
I added these two:
Code: Select all
<ContactHalfSpace name="surface">
<body_name> ground</body_name>
<location> 0.00000000 0.00000000 0.00000000 </location>
<orientation> 0.00000000 0.00000000 0.00000000 </orientation>
</ContactHalfSpace>
<ContactSphere name="sphere">
<body_name> sphere </body_name>
<location> 0.00000000 0.0000000 0.00000000 </location>
<orientation> 0.00000000 0.00000000 0.00000000 </orientation>
<radius> 0.05 </radius>
</ContactSphere>
Code: Select all
<HuntCrossleyForce name="sphere_surface">
<isDisabled> false </isDisabled>
<HuntCrossleyForce::ContactParametersSet name="">
<objects>
<HuntCrossleyForce::ContactParameters name="">
<geometry> sphere surface </geometry>
<stiffness> 0.00000000 </stiffness>
<dissipation> 0.00000000 </dissipation>
<static_friction> 0.00000000 </static_friction>
<dynamic_friction> 0.00000000 </dynamic_friction>
<viscous_friction> 0.00000000 </viscous_friction>
</HuntCrossleyForce::ContactParameters>
</objects>
<groups/>
</HuntCrossleyForce::ContactParametersSet>
<transition_velocity> 0.00000000 </transition_velocity>
</HuntCrossleyForce>
One more thing, when I run the forward dynamics, the force reporter gives me the contact forces. I suppose If I add multiple spheres (e.g. 25) beneath the foot, I can estimate the ground reaction forces during walking. Can I use the resultant forces for inverse dynamics?
The problem is that there is no center of force to create the external loads file. Would you please guide me to figure it out?
Your help is highly appreciated.
Cheers,
Mohammadreza