[ODE] Bug in dxQuickStepper ?
Marco Grubert
mgrubert at conitec.net
Wed Mar 16 20:25:15 MST 2005
Okay, it looks like the problem has to do with a joint not always reporting
the right number of rows to allocate in the Jacobian.
The dxJointLimitMotor::limit flag is only updated when
testRotationalLimits() gets called. For hinge, hinge2 & universal joints
this only happens when the limits are within +/- PI, lo<=hi, etc. Setting
lostop/histop to say -90deg/+90deg will cause testRotationalLimit to be
called and limit might get set to 1 or 2.
Now in the next frame when setting the stops to 0/+270 or -inf/+inf
dxJointLimitMotor::limit will not be reset causing an additional row to be
inserted by addLimot that was not anticipated by hingeGetInfo1() resulting
in a stack overwrite.
So... what's the best way to fix this ?
What is the preferred way of disabling limits ?
Why is there a +/- PI restriction on the angles ? Aren't they supposed to be
relative to starting angle ? What if I want a joint to only go in one
direction but more than 180 degrees?
- Marco Grubert
More information about the ODE
mailing list