[ODE] motors vs. torques (was: hexapod walking example)

Adam Rotaru adam_rotaru at yahoo.com
Fri Dec 28 18:35:02 2001


--- Russ Smith <russ@q12.org> wrote:
> the "motors" in ODE are there precisely to prevent
> people from having 
> to use PD or PID controllers to actuate joints. the
> problem with PD
> controllers is that they have a couple of constants
> that have to be
> tuned (proportional and damping constants). the good
> values that you
> find in one region of operation may not apply to
> another region.
> as adam pointed out, the values for a leg being on
> the ground are
> no good when the leg is in the air. PD controllers
> are a classic
> source of instability in a sim. BTW, PID controllers
> are worse as
> it's very hard to find one integral constant that
> works everywhere -
> and the extra system state introduced by the
> integrator makes
> debugging the system much harder.
 
> instead of applying a force, try using a motor: set
> the dParamVel and
> dParamFMax parameters on the joint to set the
> desired speed and 
> maximum force. as a rule, set dParamFMax to 2-3 time
> the "just enough" force you need. this should save
you some
> headaches. note that
> motors and joint stops have one case where they
> interact badly, see the
> definition of dParamFudgeFactor.
 
First, could someone tell me what is a PD and PID
controller?

For my hexapod first I tried to use the provided
motors, but 
I scrapped them.  I have to admit that I don't
understand fully how
they work, and had some prejudices against the motors.
Specifically:

- in my previous controllers, I always used
forces/torques as
the output from the controller, and input for the
simulator.
it doesn't seem plausible to produce desired speeds
from a 
biologically-based controller.  For example, to use
my bug,  even if the bug is standing, some torque
(force)
must be applied so that the leg keeps the body.  What
should I set
my desired  velocity?  If I set to 0, will that cause
a
force/torque?
If I set to a fixed positive value, I have to
oscillate as the
as the position oscillates around my desired position.

- I found that the joint stops did not work.  I set
the joint limits,
but the legs kept extending beyond it, until they
spread out laterally,
and the body touched the ground.  This happened in
small steps,
as the end of the legs were touched the ground
intermittently.
Setting the Fmax to larger values helped somewhat, 
but
then the simulation
often went astray (i don't remember exact values).

- how does the motor work? Does it apply
forces/torques on the
joint based on my desired velocity?  If it does, how
is that different
from my applying torques externally?  Also, does it
use
forces or torques?  (the param is called Fmax not
Tmax).

- if I need to account for the energy (work) used to
actuate
the joint, can I obtain the work consumed of the
motors?

If you (Russ) tell me that using motors is better, I
believe you, and I plan to give them another try.

regards,
  Adam




__________________________________________________
Do You Yahoo!?
Send your FREE holiday greetings online!
http://greetings.yahoo.com