[ODE] Improved QuickStep stability...?

Adam D. Moss adam at gimp.org
Wed May 19 10:29:55 MST 2004


Don't hit me -- I added random constraint reordering to QuickStep
and it helped stability a lot, partially in terms of stacking
stability (test_crash's wall) but mostly in terms of stopping
test_crash's buggy from jiggling and flying apart (test_crash
now does a good impression of being stable at very very few
iterations).  This trumps REORDER_CONSTRAINTS, so there's no
point in using them together unless you like wasting time.

The patch is below.  NOTE: For best stability use this with
the version of QuickStep before warm-starting was introduced --
warm-starting seems to play havoc with test_crash's buggy stability.

This is just for testing...

Regards,
--Adam
-- 
Adam D. Moss   . ,,^^   adam at gimp.org   http://www.foxbox.org/   co:3
-------------- next part --------------
Index: quickstep.cpp
===================================================================
RCS file: /cvsroot/opende/ode/ode/src/quickstep.cpp,v
retrieving revision 1.2
diff -u -u -r1.2 quickstep.cpp
--- quickstep.cpp	19 May 2004 05:30:35 -0000	1.2
+++ quickstep.cpp	19 May 2004 09:17:56 -0000
@@ -30,6 +30,7 @@
 #include <ode/timer.h>
 #include <ode/error.h>
 #include <ode/matrix.h>
+#include <ode/misc.h>
 #include "lcp.h"
 #include "util.h"
 
@@ -231,6 +232,16 @@
 		}
 		qsort (order,m,sizeof(IndexError),&compare_index_error);
 #endif
+
+#if 1
+                // adam
+                for (i=0; i<m; ++i) {
+                  IndexError tmp = order[i];
+                  int swapi = dRandInt(m);
+                  order[i] = order[swapi];
+                  order[swapi] = tmp;
+                }
+#endif                
 	
 		//@@@ potential optimization: swap lambda and last_lambda pointers rather
 		//    than copying the data. we must make sure lambda is properly


More information about the ODE mailing list