Alt-BEAM Archive

Message #09933



To: beam@sgiblab.sgi.com
From: Bruce Robinson Bruce_Robinson@telus.net
Date: Tue, 08 Feb 2000 22:55:46 -0800
Subject: [alt-beam] Re: Wilf's thought experiment (part 1)


Wilf Rigter wrote:
>
> Here is a little thought experiment: in an open ended 6Nv
> (74HC14) chain with LED indicators, what is the maximum
> number of processes (output low pulses/LED on) that can be
> active at a time? ...

> ... Longer chains of n Nv should be capable of maximum n/2
> processes but no more before saturating. A bottom up tree-like
> Nv structure would see a process propagate down the trunk before
> radiating along the branches. ...


> ... What about a top down tree with processes propagating down
> the branches toward the central neural chain (trunk). Add some
> logic such that two processes must be counted or be present at
> a junction where branches meet before processes can propagate
> any further. ...

> ... How about some memory (Nu) at the junctions so that the
> junction remembers the last process and "sensitizes" the
> junction to lower the propagation threshold.

Wild and wonderful ideas. Here is how some of them relate to human (and
other mammal) biology.

Our muscles are composed of thousands of fibers which slide past each
other when triggered by an impulse from a neuron (technically, a motor
neuron). Each muscle fiber has it's own neuron, and the neurons are
bundled together into nerves, which find their way to our spinal cord,
which is an extension of our brain. The muscle fibers are encased in
connective tissue that bundles together into tendons, which attach to
our bones.

Muscles can only pull (contract) and relax; they can't push. And a
muscle fiber will not remain contracted indefinitely. It needs to be
re-energized by pulses from the attached motor neuron (hundreds of times
a second). So how can we exert a steady pull? How can we vary the
intensity of our muscular efforts? Our nervous system can simultaneously
activate a few or a great many muscle fibers at varying pulse rates. The
effects average out to a smooth and variable pull.

So let's try to approximate this behaviour using BEAM type neurons:
nervous (Nv) and neural (Nu) to use the common BEAM terminology. Let's
begin with a simple pulse generator which produces a square wave. Say
1/10 second high and 1/10 second low. That's 5 complete high-low cycles
a second.

Now let's feed that pulse stream into a conventional Nv, causing it to
fire five times a second. How long does the Nv stay "on"? Well we can
vary it with a sensor, such as a photocell, or noise detector, or heat
sensor. The longest delay (or "on" period) should be no more than the
pulse length -- in this example 1/5 second. It could be much shorter. So
now we have a stream of "on" pulses of varying length, coming at the
rate of 5 per second. So what?

Let's feed the Nv output through a diode and into a Nu input. This will
slowly "charge" our Nu. The wider the pulses coming out of the Nv, the
faster the Nu will build up a charge. Eventually the Nu will reach the
trigger point and turn "on". Possibly we can use the Nu output to run a
motor, or run it in one particular direction, or somehow cause a robot
to turn in one direction.

But there's a problem with this idea. So long as our pulse generator is
running, we'll be feeding pulses, however small, into our Nu. Eventually
it is going to fire. What if we don't want it to fire if the incoming
pulses are very short? What if we only want the Nu to fire if the charge
is building up at a certain rate or higher? We can modify the Nu by
adding a large resistor that will slowly drain the charge from the Nu.
This means it can only fire if the incoming pulses build up a charge
faster than it can drain away.

The variable width pulses coming in are approximately like the signals
sent to the muscle in our nervous system. The drain on the Nu
approximately represents the tendency of our muscles to relax when not
activated. The Nu itself is an analog of a human motor neuron.

So what has this gained us? We've now got a circuit that uses a pulse
generator, a Nv, and a Nu, all to accompish what we normal do with one
Nv. This is progress?

Hang on. Let's say we want to influence our robot not just with light,
but also with noise. We want the robot to turn toward light, AND turn
toward noise. The brighter and louder, the stronger the tendency to
turn. We can easily accomplish this with our new type of circuit. We
just add a second Nv, and feed it's output into the Nu that we already
have. We don't need a second pulse generator either -- we can use the
one we've got. So what exactly happens here?

Presumably we have two sets of circuits, one to make the robot turn one
way, and one to make it turn the other way. Each circuit consists of a
pair of Nv's feeding into a Nu. One Nv in a pair is influenced by light,
and one by sound. Only one pulse generator needed to drive the whole
works.

The effects of the two Nv's in a pair are additive. Sound and light on
the same side of the robot make it respond more quickly. Sound on one
side and light on the other charge up the two opposing Nu's at about the
same rate. By tuning the Nv's we can alter the relative effect that
sound and light will have.

But wait, there's more. A robot that turned toward sound and light would
have a short life in my house in the winter. A good deal of my heat
comes from a wood stove. It pops and ticks as it heats up (noise) and
has a transparent ceramic door, which emits light AND heat. The robot
turns toward the noise and the light, and gets melted by the heat! So
what if I add a pair of heat sensors, simple temperature sensitive
resistors, each influencing a third Nv. These Nv's are INVERTED. They
produce an opposite output signal. So I can use these to DISCHARGE my
Nu's. Too much heat, on one side, and this counteracts the light and
noise detectors. This is the exact equivalent of human INHIBITOR
neurons, neurons that interfere with the normal reception of signals.

The beauty of this system is that I can keep adding Nv outputs to my Nu,
with only a diode to connect them. No need for AND gates and OR gates.
But I have one little problem. What happens if my hypothetical robot is
hit from all sides by a series of camera flashes (it's a famous little
robot) and surrounded by noise. If I have a pair of Nu circuits, one to
influence each side, they are both going to charge up at about the same
rate, and they are both going to fire at roughly the same time. Kind of
like trying to bend your arm and straighten it at the same time. Very
wasteful of energy. Very hard on H-bridges. Well, here's a little trick,
also taken from human physiology. When the Nu on one side fires, it
INHIBITS the Nu on the other side. So whichever one fires first, wins.
And if they both fire simultaneously, it's a tie and neither one wins.
They BOTH discharge.

And that is a more directed application of some of the ideas Wilf was
throwing at us. But wait, there's more ...

Up to this point, we used a typical Nu to accumulate charge from one or
more Nv's (or lose the charge to one or more inverted Nv's). The Nu has
a Schmitt inverter which "fires" when its threshold is reached. Let's do
something a little radical. Let's remove the Schmitt inverter and
replace it with an op-amp, say an LM324, which has been configured as a
voltage follower. What this means is that whatever voltage level appears
on the capacitor in the Nu circuit is reproduced at the output of the
op-amp (but without AFFECTING the charge on the capacitor). We can use
the op-amp output to (say) drive an H-bridge, or some other analog motor
driver. This means instead of the usual on-off output of the
conventional Nu, we get a variable output.

That's it for Part 1. Fairly advanced. Definitely something to try on
the breadboard first. Use Nv and Nu circuits to work a little more like
the human nervous system. And yes, it does work. Not the noise part,
just heat and light so far. And not in a completed robot (not for a
while), but on the breadboard for sure. My problem (as always) is there
never seems to be enough breadboard to try out all these ideas.

To quote the master, enjoy.

Bruce



9934 Tue, 08 Feb 2000 23:24:35 -0800 [alt-beam] Re: Snake robots beam@sgiblab.sgi.com Bruce Robinson "Leonardo Boulton F." wrote:
>
> Try this: http://www3.sympatico.ca/rfws/bwi/
> Not sure.....

#@&$*% USP provider went and changed their name on me. The new URL for
this one is:

http://www3.telus.net/rfws/bwi/

Anyway, you won't find a true snake-bot on this list yet, but there's a
link to Darrel Johnson's Mod-Worm, which is definitely worth a look.

Regards,
Bruce



9935 Tue, 08 Feb 2000 23:24:28 -0800 [alt-beam] Re: [Andrew Millers site] beam@sgiblab.sgi.com Bruce Robinson Steven Dang wrote:
>
> The URL to millers walker tutorial is:
> http://vsim.freeservers.com/amiller/microcore.html
> I don't know the URL to his homepage

Andrew had to close his site down, but arranged with Bram to set up a
mirror site. Bram later had to change to a new ISP. The above is the
current address.

And, yes, Andrew is still lurking about. Just kind of busy, I suppose.

Bruce



9936 Wednesday, 9 February 2000 17:48 BEAM NET URL? beam@sgiblab.sgi.com Ian
Hi guys, I lost the URL for a site named "BEAM NET" that was on my links
page. If you have it bookmarked or whatever can you please e-mail me the
URL. Thanks in advance.

Laterz

--------
There is only one true "SyNeT"
BEAM Online - http://www.beam-online.com

+===============================================================+
| DISCLAIMER: The above expressed views are not necessarily |
| that of the author. In fact, he disclaims all knowledge of |
| his statements and rebutes his own stated beliefs. That said, |
| his recommendation: "Take my words to heart." |
+===============================================================+


Home