>I'm looking to make my robot smarter than hit-wall-backup-turnleft >intelligence. Simple neural network ? Here is an outline of a version thereof: You have 4 input sensors (or combined states) I0..3, and 9 output states (like 2 motors go forward/backward/stop. each) O0..3. This would be like, three collision switches (forward, left, right, back), and two simple motor drivers, each can do forward/stop/reverse, at constant speed. Now for the code: Build a vector of length 10 with 1 data point in each: unsigned char brain[10]; (it must live in RAM). (Homework: why 10 and not 16? Because certain combinations cannot be present at the same time unless you lock the robot in a tight box - you can detect this easily and make it turn off by itself before the motor drivers fry). Your robot code will have two distinct concurrent functions: 'run' and 'learn'. When 'run' then inputs I0..3 are used to index an answer in brain[I]. The output will be O = brain[I]; Now, at the beginning you fill the array with random data. Start the robot (run). Every time an input state change happens the robot will do something random. If this is bad, you get to press a 'bad' button. Then code will change the action of the last input state to something else (brain[Ilast] = brain[Ilast]++; undo(Ilast); will work). The robot assumes that if nothing is sent, it did 'well'. If something is sent then it undoes the last action and does the new action. If you proceed like this after a while the brain will have 'learned' (from you) what is good and what is bad, and it will start doing whatever it was you were teching it (like not falling off the table) reasonably well. This is a very simple neural network that can only deal with first order events (it has no 'state memory'). It can be expanded easily. You can input the desired 'good' state directly if you use a keyboard. The simple version requires only one button, preferrably on a wire so you can push it without bending down or disturbing the robot. Give youself time to push. Insert a pause after each action. It can be shown that such a robot can learn to traverse a maze if the 'bad boy' button is replaced with a collision sensor and if the actions selected for a bad response are randomly chosen. However, don't hold your breath ;-) Peter PS: If you want to get into this, read an intro on neural networks and study some higher languages like Prolog which are rather closely related to NN in a way. -- http://www.piclist.com#nomail Going offline? Don't AutoReply us! email listserv@mitvma.mit.edu with SET PICList DIGEST in the body