[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