Alt-BEAM Archive

Message #09990



To: beam@sgiblab.sgi.com
From: Erik Stone kestone@socket.net
Date: Wed, 09 Feb 2000 22:54:17 -0600
Subject: [alt-beam] Re: bicore photovores


Hi

Just use the light seeking part of the PSH circuit to get a photovore
that turns both motors at the same time when locked on.

iphotope@canada.com wrote:
>
> Hi it's me again!
> I have had this site in my files for a long time and it should
> have a bicore photovore which (supposedly) spins both
> motors at the same time.
>
> http://www.geocities.com/soho/lofts/1121/beam/
>
> Iphotope
>
> __________________________________________________________
> Get your FREE personalized e-mail at http://www.canada.com



9991 Wed, 09 Feb 2000 21:54:03 -0800 [alt-beam] Re: Wilf's thought experiment (part 2) beam@sgiblab.sgi.com Bruce Robinson This is pretty advanced stuff for many BEAMers. But keep in mind that I
built my first microcore circuit only seven months ago. Private e-mail
suggests that there is certainly some interest in these ideas. So here
goes with the second installment.

In part 1, I suggested using a pulse generator to feed pulses to a
number of Nv neurons; use the Nv neurons to change the width of the "on"
portion of the pulses in response to various stimulae; and accumulate
the pulses in a Nu neuron. I suggested having a slight drain of charge
on the Nu neuron sso that they would only fire if signals were arriving
above a minimum rate. And I brought up the idea of using "inverted" Nv's
to inhibit the signals to a Nu neuron. A pair of circuits like this
could be used to influence the drive of a BEAM robot, although I did not
suggest how this might be done (and deliberately so).

The circuits I suggested would allow a number of different sensors to
influence directly the movement of a robot. Let's introduce a second
level of "intellegence" here. A robot with a goal has two different
types of conditions to consider: those related to achieving its goal
(e.g., go to the brightest, noisiest place south of here), and those
related to survival (e.g., don't walk off any steep cliffs, keep away
from fire, don't run into walls, and stay out of the water). The first
set of conditions should INFLUENCE the robot. They can be a little fuzzy
-- there is room for deviation. The second set of conditions are
IMPERATIVE. The robot shouldn't have much leeway. However, even the
imperatives are not absolute. Walking off a cliff or into a lake may be
preferable to getting caught in a fire.

So let's modify our hypothetical design a little. We have a pair of Nu
neurons directly affecting our robot's motion. Let's feed signals to
those Nu's only from sensors related to survival, and have ONE
additional signal to each Nu that is related to a prefered direction.
Our survival neurons will be mainly inhibitors. A tactile sensor detects
a wall: inhibit the Nu on that side so the robot won't turn toward the
wall. A heat sensor detects high temperatures on one side: inhibit the
Nu on that side so the robot won't turn toward the heat.

Now we have the challenge of combining all the PREFERED direction
signals into one. Well, we've already done that. We just need to feed
these signals into a new pair of higher level Nu's. The outputs from
those Nu's will feed into our low level direction Nu's.

From this point on, when I talk about the Nu pair, I'm referring to the
SECOND LEVEL Nu's -- the ones that will tell the lower level ones which
direction is preferred.

We can have a pair of Nv's to signal noise level on each side of the
robot; another pair to signal light intensity; yet another pair
connected to a solid state compass (yes, they are available). All these
signals feed into our higher level Nu's, which effectively sum them.

Remember, too, in part 1 I suggested that whichever Nu of a pair fires
first can be used to inhibit the other Nu. This means that whichever one
fires sooner gets to take charge.

So imagine that in addition to various sensors that influence direction,
we have yet another sensor that detects tilt. If the robot starts to
tilt upward too much, indicating a steep hill, we might want our robot
to turn. Which way? Does it matter?

We can have our tilt sensor influence a single Nv, which in turn feeds
to BOTH the high level Nu's. This will tend to push whichever one is
higher over its threshold. So the robot will turn away from the tilt,
but to whichever side was already gaining the upper hand. This kind of
action increases the SENSITIVITY of an Nu (something that Wilf aluded
to).

There is one problem with all this. To make our high level Nu, we simply
copied the design of the original low level Nu. Since the low level Nu
drives a motor (or activates a circuit to influence a motor), it has a
steady output: on or off. Or perhaps it has a steady but variable output
using op-amps. The problem is, up to now all our sensory inputs are from
Nv's which pass on pulses. So how do we get our high level Nu to act the
same as a sensor, and send pulses?

As it turns out, that isn't such a big deal. We can connect a resistor
between the input and output of the inverter in our high level Nu. This
will, in effect, cause our Nu to turn itself off after a brief delay. So
as long as that high level Nu continues to receive sensory input about a
preferred direction, it will keep getting turned on, and then turning
itself off again. Pulses. Not variable width pulses such as our Nv's
produce, but variable frequency pulses.

Warning: not very good ASCII follows. This is an abbreviated look at the
two-level network, showing a pair of high level Nu's accumulating sensor
signals, and using those signals to influence a pair of low level Nu's,
which are also affected by inhibitor signals. I also show the low level
Nu's inhibiting each other. I DO NOT show the resistors used to make the
high level Nu's pulse.

+----+ +- - +
| PG |-----> Nv ----|<---+ +--->|---- Nv <-----: pg :
+----+ | | + - -+
| |
+- - + | | +- - +
: pg :-----> Nv ----|<---+ +--->|---- Nv <-----: pg :
+ - -+ | | + - -+
| |
+- - + __ | | __ +- - +
: pg :-----> Nv ---->|---+ +---|<---- Nv <-----: pg :
+ - -+ | | + - -+
Nu Nu HIGH LEVEL
| |
+---------+ +--------+
| |
| |
+----|<---+ +--->|----
| |
+- - + __ | | __ +- - +
: pg :-----> Nv ---->|---+ +---|<---- Nv <-----: pg :
+ - -+ | | + - -+
| |
+- - + __ | | __ +- - +
: pg :-----> Nv ---->|---+ +---|<---- Nv <-----: pg :
+ - -+ | | + - -+
| |
| |
+---->|---+ +---|<---+
| | | |
| | | |
| Nu Nu | LOW LEVEL
| | | |
| +-- | -------+
| | |
+-------- | --+
| |
| |
V V
turn Left turn Right

In the above diagram:

PG = the pulse generator.
pg = additional pulse generators, OR signals from the original.
Nv = nervous Neuron.
__
Nv = inverted nervous Neuron (an inhibitor).
Nu = neural Neruon.
->|- indicates a diode.

CAUTION: Although I have tested the Nv / Nu arrangements, and although I
have created a pulsing Nu output, I have NOT hooked the two sets of
circuits up together as shown. Play at your own risk. Use a breadboard
and lots of LED's. Start with really slow pulses (e.g. one per second)
so you can see what is going on. Be sure you have the output signal
polarities correct: be prepared to throw in some extra inverters, just
to invert the signals.

And above all, tell us what you learn :)

Regards,
Bruce

PS: be sure not to burn out any neurons, including your own.

BR



9992 Thu, 10 Feb 2000 17:04:24 +1100 [alt-beam] NiCad Overcharging Beam Mailing List Elmo I am thinking of using a cell to charge a NiCad battery to run a bot,
but isn't is possible to overcharge a NiCad?

Elmo


Home