[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