Greetings!

[From Chris Love (920512.1200)]
[To CSG-l]

Hello everyone,
  I have finally gained access to csg-l after a few difficulties at our base.
I suppose some intros. are in order so I'll get these over with first. My name
is Chris Love and I'm a contractor working with Martin Taylor. My background
is in electrical engineering (from University of Manitoba). Martin has had me
start work on a somewhat parallel system to Bill Powers "Little Man."

  This work is being done on the Macintosh computer and developed using a
language called Prograph. For those of you who are not familiar with
language I will briefly describe it, since it is very interesting. It is
an object orientated language. The beauty of it is that, in the Macitnosh
philosophy, there is no line-by-line programming. To build a program, one
simply draws symbols on a window (a symbol may be a addition square,etc.) and
then connects the data lines (really lines) to the input terminals and the
sum is produced from the root. You can think of this methodology as drawing
flowcharts that actually work in the same manner as line code. And, if you
have a color monitor, it look great too!

  Ok, so what have I done with this??? Well, as I mentioned, I am in the
process of developing a similar application to that of Bill's "little man".
Initially, I spent my efforts developing the cool 3D environment and the
routines to move the target around as well as rotate the box and my "little
baby" about the 3 axes.

  This little baby I speak of is somewhat like Bill's (I hope most of you are
familiar with this model/software - if not ask me to provide more details and
I will). The little baby has one arm (only basics now), which includes an
upper arm connected to a shoulder and a lower arm connected to the elbow. The
baby is pinned to one of the walls of the box. He has a head and a neck and
two eyes. The objective of the baby is to dynamically move his finger to the
location of the target in the box space. Why do we need to rotate this entire
problem about three axes one may wonder? Well, because then you, the observer,
may view this experiment from any perspective!

  The next question may be how does the baby know how to move his finger toward
the target. Oh yeah, the target has six buttons to move the target along each
axis. This is what you are supposed to do. Ok, back to the movement problem...
The baby uses "retina projections" to provide the percepts. First off, I'm
no vision expert (only 4 weeks experience here, ok) so go easy! Basically,
the baby receives the X,Y,Z of both the target and finger tip and translates
these back to each eye and then divides by the depth coordinate. This gives
the baby 8 percepts to feed to his "brain"; 2 coordinates from the target and
2 for the finger tip, and this applies to both eyes. His highest level
percept is to minimize these, i.e., put the finger on the target.

  One really neat thing I've done (based on a suggestion from a fellow
contractor) is to "draw" two retinas on the screen and project *what* the
baby sees on to them. So, as the baby moves his finger you see the target
and finger tip move on his retina. Quite exciting, especially when the
distance between the two of them gets smaller, i.e., it's working!

  Well this phase was only to scratch the surface since the actual "control",
if one could call it that, was derived from 3 rules. The shoulder, which
has 2 degrees of freedom, use two of the rules. The first was to rotate the
arm across the body, and the second was to rotate it beside (up/down) the body.
The third rule was to control the elbow movement.

Ok how did the baby resolve depth??? It's a good question. Well since this
was a VERY simple model, and since he only had 2-D coordinates to work with,
he used this third rule to resolve this issue. What happens is that, "if the
sum of the squares of the target is smaller than the sum of the squares for
the finger then the target is further out than the finger, therefore increase
the elbow angle, thereby moving the fingertip out further." This is, I
suppose, what vision experts call the binocular vision alogorithm??? Anyways,
it seemed reasonable and it worked (most of the time!!!). There are a few
cases, as one may find after thinking a bit, in which this rule fails
miserably. But, to summarize at this point, this phase was to get "things"
(the environment) up and running.

  The next phase, which I am currently deep into thought and development over
is to build some *control* into this control system. The system will be
composed of about seven elementary control modules (ECM). Each ECM has
the percepts/reference signals, which are normally associated with it as well
as the comparator and a few shifted sigmoids to smooth things out. So
the highest level reference signals are zero inputs (math finger to target) and
the lowest levels ones are the 8 2-D retina values. The outputs to the
external environment are the 3 angle adjustments (shoulder - Phi,Theta and
elbow - Alpha). These are delta values which are then added to the existing
angles. The baby automatically recieves these changes regularly and
automati-lly so the experimenter simply has the job of moving the target away
from his
finger tip. What a nice person the experimenter is - always taking the ball
away from the baby!!! Well, once in while I let the baby have it while I check
some calculations!

  So, how does these ECSs' learn anything?? I intend on using a basic Hebbian
learning rule to train the weighted connections in the system to respond
to the the two way signals, thereby learning the space (I hope). I haven't
gotten to this point yet so any suggestions are graciously invited.

  Well that's all for now. I have another 15 min. for lunch so I'm off!
Take care,
Chris.