01270 747 008 (UK)

# Robotics Research

This page shows information regarding various robotics research projects from around the world. The image on the left shows the MIRC which is shown at the bottom of this page.

# A Simple Robot to Demonstrate Automatic Learning Processes.

My robot has two motors, each connected to one of its two wheels. It is very small (about 6 cm wide/high and 8 cm long), so that a table suffices as its “world” to move around on. Around the edge of the table there’s a wire carrying an AC current. At the front of the robot there’s a contact sensor to sense when the robot bumps into the wall wire, plus there’s a coil that senses the AC wall wire from a distance of about 5 cm. On the table there’s a “food pellet” (made of metal) with an IR sensor on top of it. The robot has another contact sensor at its front, which senses if the robot bumps into the food pellet. The robot has two “eyes” made of IR leds: The left eye (IR led) looks forward left, the right eye looks forward right. Both “eyes” have “vision angle” of about 20 degrees.

The five sensor signals from robot to brain are thus:
– Bump into wall
– Sense wall ahead at 6 cm distance
– Bump into food pellet

Each sensor is either on or off.

The five motor actions are:
– fwd = Move a step forward with both wheels
– fwdL = Step forward, then one turn left
– fwdR = Step forward, then one turn right
– seek = Sharp turn left or right
– evade = A step back, then sharp turn left or right

All the motor actions are implemented as the robot performing a discrete “step”, i.e. in one motor action the wheel(s) turn(s) a certain portion/distance of their circumference. The robot should learn to avoid the walls (i.e. it should turn already when it senses the wall at 6 cm ahead and should not bump into the wall), and should learn to seek and move “into” the food pellet.

The goal is that the brain of the robot should learn to line up the incoming sensor inputs to the “right” motor action to execute next. The bump-into-wall and bump-into-food sensors are “hard-wired” into the brain as feedback signals. (More on that below.)

The brain itself is simply an array (table) of all possible sensor value combinations for the remaining sensors, and for each of these sensor combinations all possible motor actions:

 wallSense foodLeft foodRight Motor Status Priority 0 0 0 Fwd 1 0 0 0 FwdL 1 0 0 0 FwdR 1 0 0 0 seek 1 0 0 0 evade 1 1 0 0 Fwd 1 1 0 0 FwdL 1 1 0 0 FwdR 1 1 0 0 seek 1 1 0 0 evade 1 0 1 0 Fwd 1 0 1 0 FwdL 1 0 1 0 FwdR 1 0 1 0 seek 1 0 1 0 evade 1 0 0 1 Fwd 1 0 0 1 FwdL 1 0 0 1 FwdR 1 0 0 1 seek 1 0 0 1 evade 1 0 1 1 Fwd 1 0 1 1 FwdL 1 0 1 1 FwdR 1 0 1 1 seek 1 0 1 1 evade 1

I call each line in the table a “neuron”. (Expressed in neural-net lingo, each neuron “detects” one sensor input pattern, has one of the possible motor actions as its “output wire”, and “fires” with a certain likelihood “priority” if its sensor inputs are triggered.)

The robot and the brain operate in discrete steps. First, the current sensor values are sent from robot to brain. Then the brain consults its table, and extracts from the table all the entries (and only those) that fit with the current comination of sensor input values. From this sub-table, the brain chooses one of the entries, by chance, weighted by the (floating-point) priority of each entry (so that higher priority has a higher chance of being selected). Then the brain sends the motor command from the selected table entry to the robot, and the robot executes that command. Then the cycle repeats with a new reading of the sensors.

The “bump-into-wall” and “bump-into-food” sensors are hard-wired into the brain, and provide feedback that makes that the brain learns. When the robot bumps into the wall, the last (few) neuron(s) (= table entry) that was/were selected (=executed) get(s) its/their priority scaled down by (= divided by) a factor of about 2 to 5. When the robot bumps into the food pellet, the last (few) neuron(s) (= table entry) that was/were selected (=executed) get(s) its/their priority scaled down by (= multiplied by) a factor of about 2 to 5. All the priority values are initialized to 1. After about 750 motor-action-and-brain-consult cycles, the priorities in the “neurons” have adapted to typically something like the following:

 wallSense foodLeft foodRight Motor Status Priority wall0 foodl0 foodr0 Fwd 272.767 wall0 foodl0 foodr0 FwdL 56.2088 wall0 foodl0 foodr0 FwdR 59.663 wall0 foodl0 foodr0 seek 532.763 wall0 foodl0 foodr0 evade 27.0606 wall1 foodl0 foodr0 Fwd 0.322468 wall1 foodl0 foodr0 FwdL 1.82265 wall1 foodl0 foodr0 FwdR 0.146926 wall1 foodl0 foodr0 seek 5.55416 wall1 foodl0 foodr0 evade 5.56077 wall0 foodl1 foodr0 Fwd 300.611 wall0 foodl1 foodr0 FwdL 1.28166 wall0 foodl1 foodr0 FwdR 1.22764 wall0 foodl1 foodr0 seek 2.6522 wall0 foodl1 foodr0 evade 1.22422 wall0 foodl0 foodr1 Fwd 1.33706 wall0 foodl0 foodr1 FwdL 2.38871 wall0 foodl0 foodr1 FwdR 172.319 wall0 foodl0 foodr1 seek 11.9087 wall0 foodl0 foodr1 evade 10.3902 wall0 foodl1 foodr1 Fwd 745.131 wall0 foodl1 foodr1 FwdL 5.90719 wall0 foodl1 foodr1 FwdR 2.07576 wall0 foodl1 foodr1 seek 1.64707 wall0 foodl1 foodr1 evade 4.07005

From this, one sees that the robot has learned that when the “wallSense” sensor input is high, it had better not move forward (second set of 5 table entries). And the robot has learned to execute an appropriate move forward when the food is in sight (last 15 table entries). So this is one way to do it for a *very* simple robot.

Even with the simple robot, it took me some time to get it working though. The thing that cost me the extra time is that apparently, at least with this simple brain, in order for learning to occur, the robot can not be “any arbitrary” thing, but its sensors and motors must (apparently) be organized in a certain way. It seems to me now that the sensors must offer sufficient “foot-hold” for the brain to learn from. E.g. I had started out with only one single eye looking straight ahead, but apparently that yields too little data for the brain to learn from when to turn left or right in order to reach the food. And also, I get the feeling that the sensors and the motor actions of the robot must somehow “fit together”. E.g., it seems that the angle of vision of the eyes must “fit” with the angle of one single turn action of the robot. (E.g., one turn action must not completely “overshoot” the food with the vision “cone” of both eyes.) So that seems maybe to open the “research field” of composing robots in such a way that they are “learnable” with a brain of a given complexity. It seems obvious to suppose that more “intelligent” brains would be capable of operating with robots that have less “nice” sensor-and-motor compositions. But it seems to me (now) that it may be that even an “infitely intelligent” brain is not capable of “learning” when coupled with a robot with hugely awkward sensor-motor organization, because in such a case the brain simply doesn’t get enough information.

I was a little surprised by this apparent (?) fact, that learning in robots depends (apparently?) so much on the robot itself (i.e.
on how its sensors and motors are organized/composed). My earlier “belief”, that things “should” work when one simply plugs in one’s brain program into any arbitrary robot, seems to be very questionable. The robot itself (in how its sensors and motors are organized) seemingly also needs to be “reasonable”, for any brain to be able to work with it.

# Project MIRC A Mechanized Interface for Robots & Computers

This project aimed to develop a modular system (MIRC) for interfacing already commonly available hardware for conducting household or industrial tasks, with standard computers. Ultimately, it was designed to link to an already established infrastructure to develop new and more effective ways of utilizing it.
The MIRC could ultimately enable the technology of the PC to become mobile, thus minimising the need to carry out mundane or repetitive activities and to enable long distance completion of tasks. In the proposed approach, the MIRC was operated by command from a laptop which had been programmed using fuzzy algorithms to carry out basic object avoidance and wheel tracking. By using fuzzy algorithms rather than the more standard IF/THEN statements currently used in programming the MIRC has increased flexibility and potential for adaptation for a range of uses. More…