Page 1 of 1

MLCP solver blows up for smaller timestep?

Posted: Wed Feb 18, 2015 3:38 pm
by maletinkert9n
Strangely, the MLCP solver blows up as I decrease the (fixed) simulation timestep from 10 us down to 1 (some instability) and 0.1 us (totally blows up). Is this an intrinsic property of the MLCP algorithm or is it just because timesteps this small get into rounding off errors?

Strangely, the simulation works just fine for the largest timestep of 10 us.

Re: MLCP solver blows up for smaller timestep?

Posted: Thu Feb 19, 2015 4:39 am
by Basroil
maletinkert9n wrote:Strangely, the MLCP solver blows up as I decrease the (fixed) simulation timestep from 10 us down to 1 (some instability) and 0.1 us (totally blows up). Is this an intrinsic property of the MLCP algorithm or is it just because timesteps this small get into rounding off errors?

Strangely, the simulation works just fine for the largest timestep of 10 us.
For timesteps that small you'll likely need double precision, and even then it might not be perfectly stable. Considering the default step is ~16ms, 1us is quite a bit outside the intended step size

Re: MLCP solver blows up for smaller timestep?

Posted: Fri Feb 20, 2015 4:34 pm
by Erwin Coumans
There is no 'MLCPSolver' that you can execute, it is just an interface. Please provide the actual MLCPSolver that you use,
such as btDantzigLCP, btLemkeSolver,btSolveProjectedGaussSeidel or btPATHSolver.

It is very common to run the regular btSequentialImpulseConstraintSolver at 1000Hz or 3000Hz, using double precision. I haven't done much testing running the other solvers at small time steps.
Thanks,
Erwin