[ODE] CFM, ERP, stepsize, bNormalizationResult failed

ode@thoemsen.ch ode at thoemsen.ch
Wed Nov 21 01:51:48 MST 2007

Thanks for the help.
I know that ODE can't simulate perfectly stiff joints but the deflection of the
suspension is way too big. My rover is similar to NASA's rocker-bogie type
(Spirit/Opportunity, Sojourner, etc.) but with a more complex suspension
mechanism. To describe what happens in my simulation, imagine the Mars rovers
on a horizontal plane (initial state) but the body has a pitch angle of several
degrees because of the deflection of the suspension.
Do you think the reason why I can't set my CFM value smaller could be related to
redundant joints in my system?
By the way, I have another problem: if I set gravity to 9.81 my robot falls
through the ground. Initial position of the robot is about 10cm above ground
and it weighs about 35 kg. Any ideas on that? 


Quoting "Jon Watte (ODE)" <hplus-ode at mindcontrol.org>:

> It's not possible to simulate "perfectly stiff" joints in ODE, because 
> it is a solver that will find the system out of sync each step, and each 
> step try to bring it into sync based on the rules (constraints) you 
> provide. Something as simple as gravity will pull the system out of 
> sync. This is just a fact of life with game physics simulations (you get 
> similar behaviors in PhysX, Havok, et al).
> However, you should be able to use tighter constraints (0.9 and 0.0001, 
> say) if you apply rotational dampening to each body each step. Try this, 
> for each body, for each step:
>   float const *f = dBodyGetAVel(body);
>   scale = get_body_scalar_mass(body) * 0.01;
>   dBodyAddTorque(body, -f[0] * scale, -f[1] * scale, -f[2] * scale);
> This ought to stabilize the system without negatively affecting the 
> simulation too much.
> You can do the same thing with linear velocity, too.
> Cheers,
>           / h+
> ode at thoemsen.ch wrote:
> > Hi,
> > I'm simulating a 6-wheeled mobile robot with a rather complex suspension
> > mechanism (parallel and closed kinematic loops). I get it to work but only
> with
> > a "spongy" behavior. I've been experimenting with the CFM, ERP and
> simulation
> > step parameters. The "hardest" constraints I can impose are: ERP=0.9 and
> > CFM=0.001 at a step size of 0.005.
> > Even if I set ERP to the default 0.2, I can't get any closer to the
> default
> > value for CFM (9.9*10^-6). This means that the rover cannot be simulated
> with
> > default ERP and CFM because l get an error that "bNormalizationResult"
> failed.
> > Any ideas?
> > With the current settings the rover is not stable in its initial state,
> i.e. the
> > suspension is bending under the load of the body even though everything is
> made
> > of rigid bodies. This indicates to me that ERP and CFM are too "soft". How
> can
> > I fix this problem?
> > Thanks for any help.
> >
> > Thomas
> >
> > _______________________________________________
> > ODE mailing list
> > ODE at ode.org
> > http://ode.org/mailman/listinfo/ode
> >
> >
> >   

More information about the ODE mailing list