[From Bill Powers (931129.0900 MST)]
John Gardner (931128.2000) --
Hi, John. Avery Andrews has already said most of it. The point of
the "14"-df model was to see what could be done to alter the
apparent kinematics of the arm by using cleverly-chosen control
systems controlling combinations of the joint angles as single
(one-dimensional) perceptual variables. My motive in doing this
was not really to solve the problem, but only to suggest an
approach by demonstrating a few elementary examples of it. As I
mentioned in a post a week ago or so, I'm specifically interested
in how to model a human arm, which is easier than the general
robotics problem in which people give arms 360 degrees of angular
motion and so on. I would be EXTREMELY happy to turn this whole
project over to someone who was (a) knowledgeable about the
mathematics involved, and (b) willing to examine the special case
of a human arm with its much more restricted motions.
No doubt my approach ends up doing Jacobians without my knowing
it, as you say -- no doubt using my own neural nets instead of
logic. Reorganization, you know, will eventually get you there
even if you don't understand what you're doing.
I'd like to repeat what Avery said: in the Little Man Version 2,
which I THINK you have, the arm dynamics are included for the
three dimensions of control; the main missing df is roll about
the axis of the upper arm. The dynamical calculations are in the
module ARMDYNAM.C, which also contains the model of the stretch
and tendon reflexes. Also there are some details such as an
attempt to include the branches of the biceps and triceps which
span two joints, an addition that had the interesting effect of
reducing interactions between the arm segments.
This model produces very stable behavior for step-changes in
reference signals (meaning for all joint-angle control
behaviors), without any calculations of inverse dynamics.
Interactions between arm joints are minimal for all movements.
The secret seems to be in the fact that nature has provided
feedback loops for acceleration, velocity, and position using
tendon forces and muscle length (magnitude and rate). Joint angle
sensing provides an outer loop that gives good position control.
With all derivatives under explicit control, stabilization is
almost a freeby.
I'm fairly confident that adding the upper-arm roll dynamics
would not make this system any less stable. But I don't know how
to write out the detailed equations in 4 df that will produce the
required physical model of the arm, so I'm sort of stuck. It
would be nice to have a general 3-D vector disturbance term, too.
If I could add that fourth df to the Little Man, and if the
stability proved as good as I predict, I think we could ignore
the remainder of the df because they contribute so little to the
stability problem, and treat the control problem from then on as
one of kinematics only. The 14df model sort of looks ahead to
that point, under the assumption that the dynamical problem has
been solved and each joint angle follows its reference signal
without any fuss or any unrealistic interaction effects.
You say:
One of the more interesting implication of 1) is that a torque
at one joint will, in general, cause motion at ALL joints. Note
that this coupling is in addition to the kinematic coupling
which Bill has so ably modeled. The implications of 2) are not
so clear EXCEPT, we can always fall back on a little 'hand
waving' (or maybe in our case, arm-waving) and say that if the
velocities are 'sufficiently small' we can neglect these
terms.
In the Little Man Version 2 model, these factors are not
neglected. If you look over the Little Man V2 source (not the
14df program), in the armdynam.c module you'll find all those
interaction terms for Coriolis forces and centrifugal forces for
the 3 df used. This is the model of the physical arm: inputs are
three torques, and outputs are angular position at each joint
derived by multiple integrations; the function is called once for
each dt. Avery has commented that I didn't make it clear in my
writeup that this model really does use physical dynamics of the
arm. Greg Williams found the dynamical equations in the
literature and got them into a form that I could program.
Also, I probably didn't make it clear that the dynamical
equations are used only in the _forward_ form, to calculate arm
positions as a function of torque applied to joints. The torques
are derived from a muscle model in which the driving signals
alter the equilibrium point of a mass-spring model; net torque
depends on the amount of driving signal and on the angular
position at the related joints. Opposing muscles are treated as
composite single muscles, and a linear rather than a square-law
version of the tension-length relationship is used. One day I
hope to expand that part of the model to make it more realistic.
It's possible that the organism's way of generating torques
contributes to the ease of stabilization. It's quite different
from simply turning on a torque motor at the joints. Applied
torque is not independent of joint angle. It depends on the
difference between actual joint angle and the momentary muscle
equilibrium point as set by the driving signals. Actual joint
angle is computed through the physical arm model.
The nonlinearities do make a little difference, but not much.
Moments of inertia depend on joint angle configuration, but the
changes in step-response are quite like those eyeballed in real
human arm movements. An engineer might not consider the system
response optimal, but that's not what I'm after. I just want the
model to behave like a real human arm, which, as nearly as I can
tell without instrumentation, it does.
As to energy efficiency, what you say about the states of the
muscles is true, but in the human system you'll find the same
movements being carried out with the muscles in widely variable
states, and therefore in widely variable conditions of energy
usage. Optimal energy usage is clearly not a major consideration.
You can move your arm up and down with all the muscles straining
at each other, or with the muscles almost completely relaxed. And
sometimes you do.
My point was that if you use the same muscle model I use, and the
same equations for arm dynamics, and make the model describe the
same trajectories, the same driving signals must be generated.
You have brought up the added consideration of muscle tone. If
you want to give any model the same muscle tone while describing
a particular trajectory, again you have to supply exactly the
same driving signals to the muscles that my model would produce
if it also controlled muscle tone. The only difference is that in
my model, the driving signals are derived from error signals in
control systems instead of being produced by some complex
calculation. When I split the muscles in my model into opposing
pairs and make all the control systems one-way as in the real
system, I will be able to vary muscle tone, too -- which will
have the effect of adjusting the muscle sensitivity to driving
signals, because of the square-law muscle characteristic.
Of course in the really final model we would have to use multiple
sets of muscles, not "opposing pairs", but I don't see any basic
difference because of that (except in complexity). Energy
considerations are still, in my opinion, of little importance in
choosing a model that explains motor behavior. They are not
model-dependent (that is, my model can waste or conserve energy
just as readily as any other).
ยทยทยท
----------------------------------------------------------------
Chuck Tucker (931129) --
I have some extra responsibility that I would like to share with
you. Please send instructions immediately for extracting it and
packaging it, and specify UPS or Fed Ex.
----------------------------------------------------------------
Best to all,
Bill P.