[ODE] ODE BUG: 2nd order integration?
Ryan O'Connor
ryan at pcsoftware.co.nz
Mon Dec 5 02:12:21 MST 2005
Why don't we use something more accurate like Rung-Kutta second order
integration instead of first order? I don't think it would be that much of a
performance hit for what it's worth. There doesn't seem to be any
justifications for decisions like that in the docs, so it's really hard to
know the reason behind some things.
Roc
From: ode-bounces at q12.org [mailto:ode-bounces at q12.org] On Behalf Of Andrew
Aye
Sent: Friday, October 21, 2005 10:13 AM
To: ode at q12.org
Subject: RE: [ODE] ODE BUG
I believe the following is true <shrug> IMHO
acceleration = a
velocity is the time integral of acceleration or v(t) = v0 + t*a position
is the time integral of velocity or s(t) = s0 + t*v0 + 0.5*a*t*t
So to be precise, neither of the equations as listed are correct
However, even though its slightly incorrect the way ODE does it is:
Calculate:
v1 = v0 + at ( or in their case v1 = v0 + (inverse Mass) * (Force) *
t )
s1 = s0 + t(v1)
As you can see this will slightly overestimate the integration process.
-----Original Message-----
From: kalikali at tlen.pl [mailto:kalikali at tlen.pl]
Sent: Thursday, October 20, 2005 3:26 PM
To: ode at q12.org
Subject: [ODE] ODE BUG
I think I found some serious bug in ODE.
Position of the body (changed by applied force) is incorrectly calculated.
Position in timestep should be calculated as:
x = x0 + v0 * (t - t0) + 0.5 * a * (t - t0)
Currently it is calculated as:
x = x0 + v0 * (t - t0) + a * (t - t0)
(without * 0.5 !!!!)
//==============================================================
unit util.cpp (dxStepBody)
b->pos[j] += h * b->lvel[j];
//==============================================================
Put some body in field of gravity, and do dWorldQuickStep(,10) Check body
position Now, do the same, but in loop:
for (i=0;i < 10;i++) dWorldQuickStep(,1) Check body position Positions are
not the same !!!
This is the problem
//==============================================================
I've made a little patch (currently only for quick step) but I don't know is
this correct.
Lukasz
_______________________________________________
ODE mailing list
ODE at q12.org
http://q12.org/mailman/listinfo/ode
_______________________________________________
ODE mailing list
ODE at q12.org
http://q12.org/mailman/listinfo/ode
More information about the ODE
mailing list