MATLAB Answers


How do you represent contact with the ground in simscape?

Asked by Josh
on 13 Oct 2013
Latest activity Answered by Steve Miller on 6 Aug 2017
I am (eventually) attempting to create a model which I can use to simulate control algorithms on a humanoid robot.
However whilst starting with simple models - I can't work out how to represent the ground, so that when any part of the bodies come into contact with this - they stop/bounce etc.
Is there any way of doing this?

  1 Comment

check:sm_double_wishbone_suspension in simulink model. This should help you out. Check out the implementation of hard stop between the tyre and the road profile. That should help.

Sign in to comment.

3 Answers

Answer by Steve Miller on 6 Aug 2017

For 1D contact problems where only viscous friction is present, the hardstop block may be sufficient. However, for 2D and 3D problems or if the friction force depends on the normal force, I recommend looking at the File Exchange submission Simscape Multibody Contact Forces Library. It contains a library of blocks for use with Simscape Multibody that detect collision between various shapes, calculates the normal force and friction force on each part, and applies them to the colliding parts.
Below are a few animations that test models included in the submission. The Simscape Multibody Contact Forces Library contains the library for current and previous MATLAB releases.
Here is another one:


Sign in to comment.

Answer by Ryan G
on 14 Oct 2013

You want the translational hard stop block.
With a bi-ped robot you'll probably want to make some design decisions with the model in terms of trading off fidelity for simulation speed and usability. Each point that is capable of hitting the ground would require a hardstop. So, if you don't need to model the robot falling over, you can skip modeling that ground-body interaction.


Sign in to comment.

Answer by Zafb
on 4 Apr 2015

Hi, I am trying to do the same thing in 2015...Got some help from the following link which uses translational "hard stop" block
But the leg never bounces back, instead it goes through the ground. Even though I can see the contact force being produced when the leg hits the ground and is going through it.
Do you have any idea what might be wrong in my model?
Thanx in advance,


Try increasing the spring coefficient in the Translational Hard Stop block. This is equivalent to modeling a harder surface, which should prevent the falling body from cutting through the ground. Beware, though, that a very large spring constant can slow down simulation. You want to increase the stiffness just enough to ensure the falling body does not penetrate the contact surface.
Hi, thanks for the answer.
10 months on, still no luck! the contact stiffness value is already set to 1e6 N/m. Even tried 1e15, but nothing seems to be working.

Sign in to comment.