Hi, Isaac --

[

For cc'ers: The Loeb article referred to below is

Loeb, G. E., Brown, L.E., and Cheng, E. J. (1999); A hierarchical

foundation for models of sensorimotor control. Experimental Brain Research

_126_: 1-18.

]

I finally found the reference to the URL mentioned in the beginning of the

Loeb article. It's in the caption of Fig. A4:

http://brain.phgy.queensu.ca/muscle_model

This is a link to a discussion of a MATLAB simulation of a muscle model.

The model is rather amazing -- it starts with properties of individual

muscle fibers and allows grouping them together to make a model of a muscle

which then responds to trains of activating impulses as a real muscle

would. This is one of those deals where you have to accept what the writers

of the model say about it, or start from scratch and learn everything that

they know -- including all the conventions of MATLAB and the other program

packages that are needed to run the full model.

This is great work, but it has its problems. The properties of the

individual fibers, as far as I can tell, come from studies of muscle

preparations, with the behavior of the fibers being approximated by

curve-fitting using exponentials and logarithms and such. There's a point

where you just can't keep delving deeper into the details, trying to base

your model on fundamental physics. I don't think there's any fundamental

basis for the equations, though there may be some. Once you have equations

that represent the individual twitches, you can construct a muscle by

adding up all the twitches (force versus time curves) and connecting them

through elastic or viscoelastic elements. This system even allows for

recruitment -- fibers which become active only above some lowest frequency

of activating impulses.

But here's the catch. To _test_ this model muscle, you have to compare its

behavior with what you can measure of real muscles operating in real limbs.

And what you can measure are only the _aggregate_ properties -- that is,

what the whole muscle, stretched between its attachments, does. Then, if

the model muscle you got from adding up all the properties of individual

fibers doesn't behave quite like the real muscle, you have to go down into

the details and adjust the parameters (of which there seem to be dozens)

you've assumed for the individual fibers and the ways they're connected

together .

That's OK if the point is to test your model of how sarcomeres and

connective tissue work. But if you're trying to model gross behavior, it

makes no sense to start the model with the individual fibers. You should

start with the observations of how whole muscles work, because that's the

only level at which the whole-muscle model is tied to reality. This means

starting with the kind of data that Atkinson at MIT has published: curves

showing the relationship of muscle force to frequency of driving impulses,

force-velocity curves, and so on.

I looked at all this stuff when constructing the Little Man model, in order

to decide what approximations seemed reasonable. The force to length

relationship in a muscle, for example, follows very closely a parabolic

curve, where the restoring force is proportional to the square of (length -

resting length). I measured some of the curves and found that they deviate

from a parabola by less than one percent, except at the very greatest

amounts of stretch. Since my model was based on treating opposing pairs of

muscles as a single unit, I worked out that when you use muscles with these

parabolic curves in opposition to each other, the _net_ spring constant,

given that both muscles are active, becomes very nearly linear. I did test

the model using a parabolic curve for a spring constant, and found that it

worked essentially the same way (control systems are not very sensitive to

the detailed properties of their output functions). However, I decided that

since the combined muscles could be shown to act as a linear spring over a

reasonable range, it was OK to assume a linear spring constant and make it

adjustable, to account for different levels of activation of opposing

muscles (muscle tone).

After that, what's left? The effect of overall driving signals on the

muscles, including recruitment effects, is roughly linear, and so are

effects of the feedback signals from the tendon and stretch receptors. The

muscle time constant can be approximated by a leaky-integrator effect, and

delays in the loop by the basic choice of time per iteration of the

simulation. So we end up with a perfectly straightforward model, in which

nothing remains to be decided but the values of the various constants in

the equations. In line with all modeling methods, that is a matter of

adjusting the constants until the simulated arm becomes as stable as the

real arm, and as able to move from one position to another in a tenth of a

second or so without serious overshoot or oscillation. One could start with

estimated values from physiological measurements, but as in the case of the

muscle model, the proof of the pudding is in the observed and modeled

behavior at the whole-limb level.

So while I greatly admire the muscle model to which Loeb et. al. refer, I

think it's probably overkill for the purposes of modeling arm behavior.

MATLAB does allow for setting up models of the control systems using the

muscle, but unfortunately it can't handle the arm dynamics. That's why Loeb

et. al. resorted to massless loads with strange physical characteristics.

Basically they were using the MATLAB package, but without much

understanding of what it was doing, even though the muscle model was done

by one of the authors. It's the control system part of the model that these

guys are confused about. As far as I can tell, they were just experimenting

around with various possibilities, but without any guiding principles. What

MATLAB did was just as mysterious to them as what the real arm does.

Best,

Bill P.