[ODE] Inconsistent joints

Jon Watte (ODE) hplus-ode at mindcontrol.org
Fri Sep 1 11:25:15 MST 2006

Roland Plüss wrote:
> With nT I tried to reference the 'contact normal' btw. Judging from the
> multi-stepper I thought the joint constraints are checked more than once
> for one simulation step ( dWorldQuickStep ). So the constraint force is
> calculated only once per simulation step and not per interval?

Ah, sub-steps. The problem with contact joints is that they depend on 
arbitrarily complex topology, so to really calculate a new depth, you 
would have to re-run collision between the geoms, which is usually not a 
good idea from a performance point of view.

You could re-derive the points of the bodies that interact, and 
re-calculate the distance for each sub-step, if you want. That would 
probably work "OK" but wouldn't be any more "correct" than assuming the 
same depth each sub-step; you just don't have more information.

The contact joint was formulated when dWorldStep() was the only solver, 
and there were no incremental methods.

However, the incremental solvers don't necessarily divide time in X 
steps, and just solve each of those steps discretely. Instead, the 
incremental solvers solve the matrix that comes out of the joints using 
an incremental (converging) method, rather than doing the O(N^3) matrix 
solution. This does not mean that physics steps are subdivided, just 
that the matrix solution is iterative.

Caveat: I haven't been on the inside of either of the solvers for a long 
time, so it may be that one of them does time sub-steps, and the other 
one doesn't.


          / h+

More information about the ODE mailing list