[ODE] Falling Through the ground (that old problem again)

Wesley Smith wesley.hoke at gmail.com
Tue Sep 19 11:46:37 MST 2006

I have a very simple test case of dropping a sphere on a plane just to
make sure the environment is setup.  When I drop the sphere, it
bounces appropriately and eventually comes to a near standstill.
However, it never gets completely still and eventually falls through
the plane.  This is what my contact joint params look like:

for (i=0; i < MAX_CONTACTS; i++) {
		contact[i].surface.mode = dContactBounce | dContactSoftCFM;
		contact[i].surface.mu = dInfinity;
		contact[i].surface.bounce = 0.8;
		contact[i].surface.bounce_vel = 0.5;
		contact[i].surface.soft_cfm = 0.01;

This happens with both normal time stepping and quick stepping.  I've
also intentially set bounce_vel quite high to test if it's working.
It seems that this is where my simulation is failing.  When I look at
the velocity of the ball at each timestep, the value converges to (0,
0, -0.08) which is way below the threshold.  The threshold should take
effect since I've enabled the dContactBounce flag.

Now, I believe that ODE should set surface.bounce to be 0 when the
velocity of the sphere has a linear_vel magnitude below 0.5 with the
way I have things setup.  Does ODE not then set the linear_vel to be
(0, 0, 0) on the next time step since there was no bounce?  Do I have
to take car of this myself?  I think this is my problem, but I'm not
sure if it's my responsiblity or ODE's to take care of this.  What I'm
seeing is a contant (0, 0, -0.08) such that the object eventually
falls through the plane and off the screen.

Any insights are appreciated.


More information about the ODE mailing list