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.