Rolling On Surface Constraint

Provide easy-to-use, extensible software for modeling, simulating, controlling, and analyzing the neuromusculoskeletal system.
POST REPLY
User avatar
Aspen Taylor
Posts: 7
Joined: Mon Mar 02, 2020 7:27 pm

Rolling On Surface Constraint

Post by Aspen Taylor » Wed Aug 19, 2020 4:49 am

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!

Tags:

User avatar
Christopher Dembia
Posts: 506
Joined: Fri Oct 12, 2012 4:09 pm

Re: Rolling On Surface Constraint

Post by Christopher Dembia » Wed Aug 19, 2020 10:21 am

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

User avatar
Mohammadreza Rezaie
Posts: 412
Joined: Fri Nov 24, 2017 12:48 am

Re: Rolling On Surface Constraint

Post by Mohammadreza Rezaie » Sat Oct 03, 2020 6:15 am

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

POST REPLY