[ODE] Inverse Dynamics in ODE -- does it take more
computation thanjust pure forward dynamics?
Joe Ante
joe at otee.dk
Fri Sep 24 01:29:34 MST 2004
> The problem is probably that, when you specify a joint limit, the code that
> accepts the joint limits will not allow you to set a constraint that is
> internally inconsistent. It sounds crazy, but if you just run the low
> constraint-setting code twice per step, it'll work.
>
> For example:
>
> Current Low = 3
> Current High = 4
>
> Desired Low = 5
> Desired High = 6
>
> Set Low Limit to 5 -> current high is 4; set call is silently rejected
> Set High Limit to 6 -> current low is 3; set call is accepted
> Set Low Limit to 5 -> current high is 6; set call is accepted
>
>
> Personally, I'd be happy if we just removed the self-violating constraint
> checks in the setting, and instead asserted on the consistency of the joints
> when time came to step the world (in debug mode). This is one of those gotchas
> that seem to hit people all the time and gives out an unnecessary image of ODE
> as hard to use (or, worse, not very stable).
I totally agree that this is a pain.
We could also simply make sure that the low limit is always smaller than the
high limit.
Like this (Joint.cpp line 404):
case dParamLoStop:
lostop = value; if (histop < lostop) histop = lostop;
break;
case dParamHiStop:
histop = value; if (histop < lostop) lostop = histop;
break;
Joachim Ante
More information about the ODE
mailing list