[ODE] An unsolvable LCP
Thomas Jung
mail at thomas-jung.de
Tue Jul 11 02:10:23 MST 2006
Hi guys!
I am using just the lcp solver from ODE for my own engine by calling the
method dSolveLCP(.). My LCP is built by a time stepping approach and by this
is solved for the system's new speed vector as introduced in "A
Constraint-Stabilized Time-Stepping Approach for Rigid Multibody Dynamics
with Joints, Contact, and Friction" by Anitesuc (2002).
Until now I just realized equality constraints for joints which work quite
fine. Now I tried to realize a non-penetration constraint, but the solver
returns the internal error (because s <= 0).
The LCP looks like this:
A * x = b + w, hi, lo
hi:
DBL_MAX^13
lo
-DBL_MAX^12, 0.0
Matrix A:
5 0 0 0 0 0 0 0 0 0
0 0 0
0 5 0 0 0 0 0 0 0 0
0 0 0.36
0 0 5 0 0 0 0 0 0 0
0 0 0.93
0 0 0 1 0 0 0 0 0 0
0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0
0 0 0 0 0 1 0 0 0 0
0 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 -0.36
0 0 0 0 0 0 0 0 1 0
0 0 -0.93
0 0 0 0 0 0 0 0 0 1
0 0 0
0 0 0 0 0 0 0 0 0 0
1 0 0
0 0 0 0 0 0 0 0 0 0
0 1 0
0 -0.36 -0.93 0 0 0 0 0.36 0.93 0
0 0 0
( as you see, the last line represents the non-penetration constraint, just
for translational yet )
Vector b:
0 0 0 0 0 0 0 0 -1.66713 0 0 0 0
(Body 1 doesn't underly gravity)
The solver results:
x:
0 0 0 0 0 0 0 0 -1.66713 0 0 0 0
w:
0 0 0 0 0 0 0 0 0 0 0 0 -1.55533
... and the internal error message.
If the constraint is defined as equality constraint, i.e. lo[12] = -DBL_MAX,
the collision works, but - as it should be - the bodies are also pulled
together when the simulation proceeds.
Can somebody explain, why this LCP is unsolvable?
Thanks a lot in advance,
Best regards,
- Thomas
More information about the ODE
mailing list