Analog_Binary system with associative memory


Greetings! This first post will be an attempt to introduce one of the projects I've been working on lately.

If the photo can be enlarged, then you'll notice I've tagged the chips for identification....which also hints at what is being built. The base and wheels for the robot are not pictured, this is just the experimental board for a portion of the memory system and one of the A/D converter chips used for the CDS pair for detecting light amplitudes.
There is no mcu or processor used in this project, as it's more of a memory processing architecture. The Ram is a simple 1024 x 4 bit chip,of which there will be several. One of the ideas behind the process is that each sensor or sensory array has its' own memory processing circuitry with additional provisions for memory match detection, novelty, attention, etc...The basic rule to this type of architecture is separate memory regions for all inputs and outputs. There is also memory for "higher cognition" and further sensory I/O processing as it relates to the overall state of the machine.
The primary difference between this machine and other smaller scale robots is in the use of distributed functions and associative memory, at several "Orders" of processing, as I like to call them. Orders can be thought of as levels or layers of processing. Theoretically several orders are possible within a particular machine, but in practical terms, perhaps 3 is a realistic goal.

The associative memory scheme is  key to the robot's operation. Consider the address input to a ram chip as vector A, the data input as vector b and the data output as vector a'. In a very simple example, a sensory input vector A provided by possibly an analog to digital converter, activates particular address lines which in turn outputs an initially random 4 bit data pattern as vector a'. The ram defaults to read mode and will output whatever contents happen to be in the output register when a valid address pattern is activated (Vector A). The output vector a' can be considered to be associated with vector A, the address input pattern. In this example we can use 4 infrared obstacle detectors (  RB-Cyt-75 or equiv), connected to the input port, representing vector b. The detectors would be positioned to best detect possible interference from obstacles in the robots path (naturally). A comparison between the output data on vector a' and the input data from vector b, is constantly monitored by additional circuitry. When a mismatch between the 2 vectors is detected, the ram switches to write mode and writes the data on vector b into the register currently addressed by the primary input sensor, the A/D converter. Let's say the input to the A/D converter is an ultrasonic ranging sensor....the binary output from the converter is a representation of the distance between the robot and an obstacle. I never make direct connections from memory devices to motor controllers as I believe there should be at least several layers of "decision making" between the primary memory processes and any physical output; motors, end effectors, etc. But for the sake of this article we will allow motor control from output vector a', possibly with the aid of some minor steering logic. To continue, after the data pattern of vector b is saved in ram, the ram switches back to read mode and now outputs the vector b pattern through vector a' output which is now connected to a decoder and motor control. The motor, via the decoder, will adjust itself to steer away from the obstacles. The ram continues in the read mode as long as vector a' and vector b match. In essence, the robot is learning to associate the ultrasonic ranging data with the obstacle detection data.

More information will be included as the project advances...I'll also add plenty of photos and schematics when I can.
Later I will describe some of the analog functions and how the system integrates it all into a working robot.



 

Demonstrates non-numerical associative memory and learning.

  • Actuators / output devices: 2 servos modified for continuous rotation, dagu pan and tilt, possible grippers
  • Control method: autonomous, self-learning
  • CPU: NO CPU, non-numeric, discreet components
  • Operating system: dynamic homeostasis
  • Power source: (2) Rechargeable 7.2 volt x 1800 mAH LiPo dual packs
  • Programming language: none
  • Sensors / input devices: IR, ultrasonic, PIR sensor, CDS cells
  • Target environment: indoor, home/lab environment

This is a companion discussion topic for the original entry at https://community.robotshop.com/robots/show/analog-binary-system-with-associative-memory

**wow! **

finally! you have posted it! 

now this is what i call “advanced”, not like my neural nets, w/c is made just for small personal reseach purposes only.(just like grey walter’s tortoises with 2 neurons {i really don’t think that grey walter’s neurons are simulating like real ones, my neurons are made using some of mcCulloch-pitts principle, but i used my own circuit and my own philosophy, and it’s so simple that it is only as smart as an ant, my neurons simulate a real neuron, but doesn’t really do that much[must be because i need billions of them]})

what neural nets did you use? if you made yer own, do you have some schematics for it?

and what memory did you used? i only used some capacitors and transistors connected uniquely for the over all neuron (including the memory)

and lastly, how do you “punish” it?

And everything goes over my head…

how do you “punish” it?I

how do you “punish” it?

I think maybe in a system like this, punishment is the same as for us… injury or death.   Survival = success?

What an amazing project!

Lol, in neurological sense,

Lol, in neurological sense, punishment is a way of learning, just like pavlov’s dogs.

“punishment is just a cruel reward, reward is just an awesome punishment”

                                                                                    -oz

Some schematics would be

Some schematics would be nice. 555 timers are from my experience not accurate enough. I would recommand a clock based on a quartz oscillator and according dividers.

timers

So far the 555s have worked ok with the exception of the Dagu pan and tilt unit…it’s hard to keep them from chattering. The same circuit works fine for a GWS servo but the Dagu type maybe a little too cheap.

Thanks, I’ll consider the oscillator…I’m just getting the circuits to all cooperate with each other now, so a (somewhat) flimsy 555 will do the job…Thanks.

 

punish

At this stage, and in this particular model, no “punishment” is really required. Everything is learned by association, therefore if you have a set of obstacle detectors that are pre-wired to perform certain behaviors, like turn motors, left, right…etc…Then those behaviors will be associated with another sensing function if it is activated relatively simultaneously, for example if the sonar is picking up close distance readings while the obstacle detctors are being activated. It’s actually a simple classical conditioning example. But because of the possible “depths” that the Orders are capable of, it will be interesting to see what behaviors are learned with what sensor activity. After some experience, the machine will learn to associate many environmental conditions with the correct behaviors. So, you’re correct in assuming that survival=success…there’s just no “pain” involved, so to speak.

Thanks for the interest. I’ll post as much as I can with the time I have.

 

;))

You’re right on the money Mmlad, classical conditioning is part of what’s going on here… Which oz is that a quote from? Or am I reading it wrong? ;))

wow

Thanks for the interest Mmlad…I addressed the “punishment” issue in another post to Jorgen, you can read that and see what you think.

If your nets are as smart as an ant, then you’re doing pretty well…they are smart little buggers.

This design is uncommon for nnets…as a matter of fact it has no weights to adjust, it learns it’s associations with 1 pass and will update that knowledge when similar situations occur again. On the binary side of things, the circuit is a self-learning dynamic look-up table. Dynamic in the sense that the ram contents are constantly changing to correspond with other memory regions and functions. The original idea is very neural net-like…but the hardware just isn’t available and after years of fiddeling around with discreet components for memory cells, I decided that an inexpensive ram chip would fit the bill. It has plenty of I/O lines, it remembers the data you feed it and is by design, associative…meaning the pattern of address lines that are active will elicit an output associated with just that input pattern. This model is using a myriad of 2114A static ram chips that are 1024x4 bits capacity. So thats 1k memory per chip. Doesn’t sound like much,but I’m not running any code or software or anykind of operating system. On the larger model I’m designing for home and security use, the rams will be a much larger type, probably 32k to 64k or higher per chip…and preferably the non-volatile type ( tiny battery built into the case). As it is now, when I shut off the power, I lose all the memory…so as a private challenge to myself, after this small model is built, it can never be turned off for fear of “killing” it, or at least the personality it may assume. It takes a lot of time to build up the experiences it needs to get around on it’s own,and I’m impatient, haha. As I stated in another post, I will try to get some basic schematics online so you guys can take a look at it. It’s definitely nothing you’ve seen before ( I don’t think), so don’t let the novelty scare you off. Personally I’d love nothing more than to see a bunch of LMR’ers try their hand at non-numerical robotics…there is just so much more than can be done…code tends to restrain imagination, in my opinion.

Thanks Monkey

over your head?

Read it again a couple times…I’ll answer all your questions…

Thanks for the interest ;))

 

OZ

lol, i’m oz! that’s a shortcut for my pseudo-latin name, Ozmus Ferous.

yes, my nns doesn’t even

yes, my nns doesn’t even have any weight either,

on yer circuit, you must mean that it already had a “learned” process created by connecting the circuit up, right? and it would learn more by adding some things that it “chaotically learned”* by itself, right? so…you don’t know what will happen after this? if yes, then that’s great! random(chaotic) things happening on a machine learning project is a great expectation!

 one thing i like about analogue is that you are the one who’s making and inventing yer own circuit rather than buying an arduino and programming it just as buying a robot kit, you’re not making the robot, you are just assembling it (in the arduino or other ucontrollers sense).

*chaotically learned= learned by mistake or something like that.

Nnets

Your on track in a way. For now there would be motor behaviors connected to some obstacle detectors…hardwired, not actually learned (more on that later, they can be learned also)…Whatever other sensors are active at the same time an obstacle detector is triggered, the circuits will associate those actions together…so the next time the other sensor detects the same or similar pattern, it will activate the same behavior that the first obstacle detector produced. With several of these circuits connected and all feeding and learning from each other, it’s hard to tell at this point how the machine will eventually behave…so instead of a chaotic system, it’s more of a self organizing scheme. I’m sure chaos finds its way in there somehow…haha.

On your statement about building your own creations from scatch…I have exactly the same thought…the skys the limit when you use your imagination and conceive of your own creation ;))

 

@MarkusB…It turns out the

@MarkusB…It turns out the 555 does drift a bit to be bothersome…did you have a good suggestion?

Thanks for any info.

 

I would recommand a quartz

I would recommand a quartz clock oscillator (for example here) and according dividers (flip-flops, binary counters etc.). You could use a clock crystal (32768 Hz), see here.

I’ve seen the TTL type

I’ve seen the TTL type circuits before…What’s nice about the 555 is the ability to do pwm with voltage control ( as on pin 5 of the 555). Currently that’s how I’m controlling the servo; by feeding proportions of the 5 volt power supply to the 555 (pin 5). For example, 2.5vdc creates a 1.5ms pulse (center) on the servo. It’s actually a very useful way to control the servo. Any ideas?

 

12/15/12

I’ve taken a break for a few months to concentrate on another project…the robots had to wait but I feel I’m ready to start contributing again and finish the original project I had started here. Normally I would put a message like this on a blog for this site but not sure how to do it. If anyone could point out how to start a blog here, let me know…thanks.

Today I just wanted to comment on an interesting concept I ran across while reading a paper written by Ezequiel Di Paolo, School of cognitive and computing sciences, university of Sussex, Brighton, UK. It’s called “Organismically-inspired robotics: Homeostatic adaptation and teleology beyond the closed sensorimotor loop.” The title grabbed my attention since most of my designs hinge on the process of homeostasis.

To get to the point, the author describes a problem he wanted his robot to solve: Imagine a small robot that operates on phototaxis (follows light), and it has a learning mechanism to achieve this. The understanding is that only two photo sensors are used, in his case, two cds cells. Similar to a Braitenberg vehicle, the robot turns right when bright light is detected on the right cds, and turns left when bright light is detected on the left cds, otherwise the robot drives straight towards a centered light source. A very basic operation. For clarification of the circuit we will say cds1 connects to motor1 and cds2 connects to motor2, without mentioning the learning circuitry. Let’s consider the task has been learned ( by whatever process, the author uses a simple neuro-net in his model). Now, in his scenario, being attracted towards light is the only correct move allowed and any other deviation from that target is considered a wrong move. Now let’s consider what he does next; he swaps the cds wiring so that cds1 connects to motor2 and cds2 connects to motor1. Now the robot has to track the light source as before but with a reversed sensory connection. At first glance this seems pointless, but what is trying to be proved is interesting; adaptability. He uses the premise of an earlier experiment by a psychologist whereby a subject is given a special pair of glasses that reverses the observed scene and the subject is tasked with adapting his behavior accordingly. The glasses would cause the subject to see his left field of vision through the right eye,and the right field of vision through his left eye…very similar to what the author did with his robot. The point of the experiment by the psychologist was to measure and determine the amount of adaptability to the new environment by the subject. It was stated in the paper that the subject got to the point where he could navigate quite successfully with or without the glasses; the brain had learned to adapt and compensate for both visual scenarios. The author also mentions that he was able to get his robot to adapt similarly; it learned to navigate toward the light source whether or not the cds cells had been reversed.

I think this is an excellent example of learning and adaptation which goes beyond just visual navigation, but can be further refined to accommodate for generalization. In other words, given certain tasks or scenarios, the robot would be able to execute them in a wide range of environmental conditions, and should be also able to compensate for broken or damaged sensors.

If anyone else thinks this is interesting, drop a line or comment. I think it would be interesting to see how many robots in this group could execute a similar experiment. Or even if anyone has an interesting or novel way of producing this behavior, let us all know.

Personally, I’ll be looking into this and see if this form of generalization can be built in using my circuits.

Thanks.