progress report on arm model

[From Bill Powers (920312.1000)]

For a couple of weeks I've been back on the Arm program Version 2 (in C),
trying to get it in shape to go out the door. It's now working about as
well as possible -- not perfect, but usable and instructive. The next step
is to send it on to Greg Williams, coauthor, who has some tests he can
apply to it. Greg and I will try to get a paper together which we will send
to Science (my letter on an open-loop model by Bizzi was rejected, mostly
because the referees (!) objected to my references to an unpublished arm
model ... the implication being that I should put my model where my mouth
is. So I will.). This version does not yet have nonlinear muscle spring
constants, nor does it use the available data showing how muscle force
converts to torque at various joint-angles. I've tried those features and
they seem to work, but I'm burned out for now. They can wait for Version 3.

···

----------------------------------------------------------------------
There was a big breakthrough this week. To explain it, I have to describe
the basic spinal-cord part of the model. I won't go into every detail.
----------------------------------------------------------------------
The kinesthetic control systems in this model are taken directly from the
basic known circuitry of the tendon and stretch reflexes. Schematically:

                              Alpha efferent
  Gamma efferent (voluntary reference
(length reference signal)
     signal) |
       > > (Spinal
       > (stretch | Motor
       V error sig) + | Neuron)
   Mechanical + V /
   Comparator --- Kg ---------->Comparator------------
       ^ ^ ----> - |
       > > > (force signal) | (contraction
       > > > > sensitivity)
       > (sensitivity)->--Kt-- (spring Ko
       > > constant) |
       > >force Ks V MUSCLE
       > anchor |||--O------- //////////////////--LOAD
       > receptor --||||||||
       > > stretch
       > (mechanical effects) | receptor
        ---------------<--------------------

This diagram really represents two control systems using opposing muscles
and balanced (push-pull) pairs of reference signals. I have reduced the
pair to a single system to make the model simpler. As a result, the
"muscle" can both push and pull on the load, and all signals can be both
positive and negative. Load position is an angular measure.

There are two loops in this system: the force loop involving the Golgi
tendon organs and the stretch loop involving the muscle spindle containing
the annulospiral stretch receptors.

The lower loop is a force-control system. The net reference signal is the
sum of the stretch error signal and the voluntary reference signal, the
alpha efferent signal. This system maintains the sensed force at the net
reference level, with a loop gain of KoKsKt (when the load point is fixed).
Pulling on the load point will cause the muscle to shift the load point in
the direction of the pull (one muscle will pull in the direction of the
load while the other relaxes). As a result, the sensed force in the tendon
will remain the same. This system reduces the effective mass of the arm
nearly to zero. It will apply the specified force regardless of the
position of the load.

The stretch loop controls the length of the muscle and thus the load
position. The feedback signal is a rate-plus-proportional signal, with the
two components independently adjustable (not shown). The mechanical
comparator is actually in the muscle spindle, the gamma efferent signal
shortening two muscles that stretch the annulospiral receptor supported
between them. Thus either an increase in the gamma efferent signal or a
stretching of the main muscle will cause a rise in the stretch feedback
signal. This feedback signal is actually the error signal.

The higher or outer control loop causes the muscle length to follow the
gamma efferent signal, by means of altering the reference level for muscle
force. Muscle force is actually equivalent to angular acceleration of the
arm. So the outer loop controls angular position of the arm by adjusting
angular acceleration, with the rate component of position feedback damping
the system.
----------------------------------------------------------------------

That's the basic idea. The remainder of the model is a visual control
system using binocular vision for depth. A target and a fingertip are
imaged on the retina, with x and y positions of the images being computed
by an abracadabra box. The outputs of the visual control systems go to
three spinal control systems as above: the depth error varies the elbow
angle, the y position error varies the vertical shoulder angle, and the x
position error varies the horizontal shoulder angle. There is no twisting
degree of freedom at the shoulder. The visual control systems use
proportional-plus-integral control.

Until last week, I used the gamma inputs as the reference inputs to the
spinal systems. After all, the gamma input is a position reference signal,
and on casual inspection I decided that either of the reference inputs
would have the same effect. So I just set the alpha reference signal to
zero. The model worked, but it seems skittish, hard to stabilize. It
couldn't move very fast without driving some signal to a limit (I used
fixed-point arithmetic in the visual systems). I kept fiddling with it
because it wasn't pretty.

Then last week it occurred to me to try using the alpha reference signals
instead, just to see what would happen, fixing the gamma reference signals
at constant values. Wow. Suddenly I could get the arm to travel through a
full-scale movement in 0.1 second and it was an order of magnitude more
stable than before. Then I figured out the problem. The gamma input path
contains fast rate-of-change feedback for stabilization. When I hit the
gamma reference input with a square wave (the testing mode), the rate part
of the stretch signal went sky-high and caused all sorts of problems.
Changing the input to the alpha input couldn't cause the muscle length to
change that fast, because of the mass of the arm, so the rate signals
behaved themselves.

I should have tried that right away. The alpha reference signal is the
input from the voluntary systems in the brain; the gamma reference signal
is not. Now I realize that the gamma input is just for slower reflexive
adjustments (as I have read many times), such as setting a base arm
position and holding it against gravity while the alpha system varies the
arm position around the base. The alpha reference signal initially changes
the force being controlled, accelerating the arm. But that changes the
muscle lengths, and the gamma system alters its reference input to the
force control system, bringing the arm to a stop in a new position. It's
perfectly clear now, but I just didn't see it. I was fooled because the
alpha input would seem to control force or acceleration, not position. But
because of the gamma system, it ends up altering position in a stable and
controlled way!
--------------------------------------------------------------------
I made one more change to the model. When the target jumps to a new
position, a "virtual target" is computed which moves to the new position at
a constant fast speed (adjustable) in x, y, and z. This virtual target is
the one that the visual system follows. This is equivalent to the operation
of a higher-level system that perceives in objective coordinates. The
moving virtual target is like a reference signal for position in objective
space that moves toward the new target position, dragging the finger along
behind it. The result is that the finger is always moving toward a
reference position in objective space that is on a straight line connecting
old and new target positions.

Before doing it this way, I put some perceptual computations into the model
to compensate for the visual distortion of an xyz space into an r-theta-phi
space. This worked, more or less, but clumsily. As I didn't want to get
into a real design of the fourth level of this model, I decided to set up a
system equivalent to what the real perceptual system would accomplish,
which would be to perceive the fingertip as following a reference position
moving in a straight line toward the new target position.

Now the motion of the fingertip toward the new target position is
controlled at all times, with only a modest amount of error even for large
movements taking only 0.25 second. For slow motions (as when the fingertip
describes a circle around the target), the errors are very small. It draws
a nice round circle.

The screen now shows the joint angles and the torques applied to each
joint. When the target makes a very large jump, the relevant torque rises
until the arm velocity is keeping up with the virtual reference position,
then falls nearly to zero. After a short "ballistic" interval, the same
torque peaks in the other direction, slowing the arm to a stop. So now the
arm shows the kind of behavior that has been noted qualitatively in the
literature -- but control is continuous and there is really never any
ballistic motion. The motion seems to be ballistic only because the arm is
coasting at nearly the same speed that the reference position is changing
and there is little error to produce any muscle force.

Another rather astonishing effect showed up when I started using the right
reference input for the kinesthetic systems. If the visual feedback systems
are cut off from the kinesthetic systems (in a testing mode), and if
gravity is turned on, the arm very slowly sinks toward the straight-down
position. This is the condition known as "waxy flexibility"; it results
from loss of the reference signals from supra-spinal systems, as in a
spinal transection above the level of the control systems. The cause is the
interplay between the gamma loop and the alpha loop -- if you look at the
diagram, you'll see that the feedback signs from these loops are opposed.
The best values for the constants Kg and Kt, the stretch and tendon
sensitivities respectively, are largish numbers (30 to 60), equal to each
other. The equations show that when Kg and Kt are nearly equal, there is
very little active position control! I thought at first that I'd
inadvertently broken some control loop in switching to the test mode -- but
then I remembered something I'd read years ago about types of paralysis,
and the descriptive name, waxy flexibility, popped up (I had remembered
"waxy immobility" but Mary remembered the right name).
------------------------------------------------------------------

[From Rick Marken (920313)]

Bill Powers (920312.1000) says:

Until last week, I used the gamma inputs as the reference inputs to the
spinal systems. After all, the gamma input is a position reference signal,

Then last week it occurred to me to try using the alpha reference signals
instead, just to see what would happen, fixing the gamma reference signals
at constant values. Wow. Suddenly I could get the arm to travel through a
full-scale movement in 0.1 second and it was an order of magnitude more
stable than before.

Now I realize that the gamma input is just for slower reflexive
adjustments (as I have read many times), such as setting a base arm
position and holding it against gravity while the alpha system varies the
arm position around the base. The alpha reference signal initially changes
the force being controlled, accelerating the arm. But that changes the
muscle lengths, and the gamma system alters its reference input to the

force control system, bringing the arm to a stop in a new position. It's

perfectly clear now, but I just didn't see it. I was fooled because the
alpha input would seem to control force or acceleration, not position. But
because of the gamma system, it ends up altering position in a stable and
controlled way!

Bill, could you help a poor old non-physicist here. It sounds great
but I don't quite get it. I guess I could set up a computer simulation
of the model but first let me explain my problem and maybe you can clear
it up real fast: isn't load (arm, I presume) position proportional
to muscle length and isn't the stretch receptor signal also proportional
to muscle length? So if the gamma efferent is fixed at some value
won't it keep stretch signal (and, hence, load position) constant despite
variations in alpha efferents changing the requested force exerted on the
load? I don't understand how variation of the alpha efferent moves the load
(as you say it does in your new scheme). Wouldn't the stretch error offset the
alpha efferent to keep the force at the level needed to preserve the
stretch input at its gamma efferent reference? I believe it works --
I'd just like my mental model of it to work too.

Also, great post on the misnamed GAs. I'd love to hear Tom Bourbon's
description of his adaptive control system. I hope this encourages
another discussion of evolutionary mechanisms.

Best regards

Rick

···

**************************************************************

Richard S. Marken USMail: 10459 Holman Ave
The Aerospace Corporation Los Angeles, CA 90024
Internet:marken@aerospace.aero.org
(310) 336-6214 (day)
(310) 474-0313 (evening)