Page 1 of 1

Rolling On Surface Constraint

Posted: Wed Aug 19, 2020 4:49 am
by aspenect14
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!

Re: Rolling On Surface Constraint

Posted: Wed Aug 19, 2020 10:21 am
by chrisdembia
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

Re: Rolling On Surface Constraint

Posted: Sat Oct 03, 2020 6:15 am
by kernalnet
Dear Dr. Dembia,

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>
And also Hunt-Crossley Force:

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>
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