| |
||
|
![]() Secure online payments powered by PayPal
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 MIRCThis 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
|
Media Lab creates Center for Future Storytelling
MIT's new underwater robot can hover in place
|
Next Page: Cybernetics
Menu
Previous Page: Current
Robot
Science
Menu |
Info
Box |
We Ship Worldwide |
|
||||||||||
| Aristh | Sunday, 21st September 2008 1:21am - No.3130 |
| Excuse me, I would like to know what company made the small robot arm. javm_jose@hotmail.com | |
| RMCybernetics | Tuesday, 23rd September 2008 1:55pm - No.3132 |
| What robot arm? | |
© 2007 All Rights Reserved
About Us | Terms of Use | Services