[ODE] Jittering of light weighted model

Daniel Hein dhein at informatik.hu-berlin.de
Mon Apr 3 17:15:00 MST 2006


Hello,

I know, there are already mass of stuff about units, scaling and 
jittering - but I couldn't found the answers to my  problem:

I wanna simulate a real humanoid robot, approx. 34cm height, 2kg total 
mass.
After modeling everything in a meter-kg-second system I encountered 
problems with jittering of the whole robot when it just stands on the 
ground. As I understand this is caused by the collision handling. I 
could reduce the jittering, adjusting contact[i].surface.soft_cfm and 
contact[i].surface.soft_erp in the nearCallBack function. The best 
result I had at erp=0.682 and cfm=0.0014874. But I am not able to 
eleminate the visible jittering. For further reducing the jittering I 
only found decreasing the dWorldStep time length (actually I use 
dWorldStep (world, 0.03)) - but this reduces the simulation time heavily.

The thing is - I am wondering, because if I scale all masses of the 
robot to the 10 times, the jittering is not visible anymore, so ODE is 
able to simulate the model without visible jittering at a dWorldStep 
length of 0.03. So for my understanding it should also be possible with 
the (real) light weighted model, scaling accordingly all collision 
handling forces...(?) Since I use double precision and no further speed 
optimization options of ODE I think this cannot be caused by precision 
problems - or am I wrong?

That's why I have these questions:

1. How can I adjust ODE to the (real) weighted robot model, in that way 
that there is no visible jittering - without touching the dWorldStep 
time? (or in other words: How can I adjust ODE that the absolute 
amplitude of jittering of the light weighted model is the same as with 
the 10times weighted robot?)

2. It is said, I can choose the units for myself as long as I stay 
consistent. The relationship between length, time and gravity is clear, 
but I have still problems to understand happens if I scale the masses to 
the 10times (so using a meter-100g-second system): Except adjusting the 
forces/torques of all joints, what else do I had to attend to? If in 
real life I would scale the robots mass to the 10times, the whole body 
caracteristics (e.g. body frequency) would change - so if I just scale 
the masses and torques in ODE would it really have still the same 
simulation behavior?

What is use:
- Gravity is set to (0,0,-9.81)
- PRECISION=DOUBLE
- BUILD=release
- dWorldStep (world,0.03)
- nearCallBack function taken from test_boxstack.cpp

Thanks in advance,
Daniel Hein,
Humboldt University of Berlin, Germany


More information about the ODE mailing list