Featherstone Stability
Posted: Tue Jan 30, 2007 2:11 am
I've implemented Featherstone's algorithm in 2D and I've observed some stability problems for multi-link pendulums at large angular velocities.
The case I'm using is identical to Demo 0 in Box2D: a 10-link pendulum starting with zero velocity, aligned with the horizontal axis. The pendulum swings down then folds over onto itself (no collision), then starts whipping around and shortly blows up.
My integrator is semi-implicit Euler:
qDot = qDot + dt * qDotDot
q = q + dt * qDot
I believe the instability is due to velocity-squared inertia forces. I can't remove the v-squared terms because they are necessary to get a plausible simulation.
Here are some solutions:
- clamp the joint's relative angular velocity and use damping.
- if the angular velocity is large then integrate the v-squared terms with sub-steps. This can be viewed as adaptive integration.
Has anyone ran into this problem? Are there any other tricks to deal with the instability?
The case I'm using is identical to Demo 0 in Box2D: a 10-link pendulum starting with zero velocity, aligned with the horizontal axis. The pendulum swings down then folds over onto itself (no collision), then starts whipping around and shortly blows up.
My integrator is semi-implicit Euler:
qDot = qDot + dt * qDotDot
q = q + dt * qDot
I believe the instability is due to velocity-squared inertia forces. I can't remove the v-squared terms because they are necessary to get a plausible simulation.
Here are some solutions:
- clamp the joint's relative angular velocity and use damping.
- if the angular velocity is large then integrate the v-squared terms with sub-steps. This can be viewed as adaptive integration.
Has anyone ran into this problem? Are there any other tricks to deal with the instability?