I.
Machines assist us at performing many task during the course of a day. From opening tin cans to solving complex mathematical equations, we benefit directly from these machines. But imagine a world in which one machine could perform all tasks, without having to be told what to do but actually knowing that it has to be done. Is that possible? I think that today, with the level of computers and electronics presently available, we can begin exploring this possibility and eventually arrive at a machine that is capable of intelligence at or above that level or even the human level.
The robot that I have built and am experimenting with is of the rover type design, configured similar to an automobile. I chose this design because of the simplicity in construction, thus allowing for more time to be spent on the electrical and computer engineering aspects rather than the mechanical engineering that is usually found on other machines. The rover design is not only well suited to artificial intelligence experimentation, but also it serves a practical use. This design has been employed in many aspects of modern science and society. Most notably, NASA's Sojourner which helped scientist study the Martian planet and also revived public interest in space exploration.
II.
Based on everyday experience, I decided that in order for a machine to survive in the world, it would have to be able to navigate on its own. This means that its next �move� would be totally dependent upon the environment. Knowing that this would either take some sophisticated electrical work or the inclusion of a microcontroller, once again for simplicities sake, I chose to use a microcontroller, specifically, the Parallax Basic Stamp II�. This would essentially perform the same task as our brain. It monitors inputs and activates outputs based upon the states of the inputs. This is very similar to the way that our bodies make decisions based on our basic senses. In order to navigate in the way I proposed, the machine would require either senses similar to sight, touch, hearing, or a combination. At the present, the robot is configured to navigate by touch.
In order to maneuver the robot, certain features are required. It must be able to steer from left to right, and it must have a forward and a reverse. Fulfilling the need to steer, I found through research and experimentation that a hobby servo, like a Futaba S148, was able to give more torque then a standard gearbox setup. Its usefulness was compounded by the fact that it can be controlled by one pin from the microcontroller, rather than the two that are normally required. This frees up pins and enables for refinements and additions to the platform. The main drive system was quite different. I started off by trying to use a big motor driven at a slow speed. This was ineffective. Any time the rover was stopped, it would draw too much current and ruin the transistors controlling it. I tried to run the motor at a high speed, but experienced the same problem, as the rover stopped. Furthermore, the rover would attain so much momentum that it bent the front bumper upon impact. I decided that it needed a small motor along with a gear box. I switched the old drive for a Tamiya twin motor gear drive, but I had to make several modifications before I could use it. First, the axles were too short. I replaced them with one 1/8 inch diameter steal rod, approximately 8 1/2 inches long. One side of the twin drive was also taken off, after I found that the motors did not run and the same speed. Finally, I switched the gear ratio from 56:1 to 258:1. I received much more torque, and the momentum of the armature of the motor was great, helpful in getting over minor surface defects.
Aside from the microcontroller itself, the electronics of the rover are relatively straightforward. A simple h-bridge is the only major circuitry. The h-bridge did take a bit of work. Originally, I constructed it with small switching transistors. They become too hot and defective after a while. I replaced them with 20 watt power transistors. These seem to be able to handle the high current associated with driving a motor and were also more efficient than the small ones. One drawback to the h-bridge design that I am using is that there is a large amount of energy lost. Voltage drops from 7.2 volts at the supply to around 2.5 volts across the motor. At first, it would not work well with a motor rated at 12 volts like I tried originally, but with the small motor that was in the gearbox, it was perfect.
The sensors on the robot are essentially standard pushbutton switches. I mounted two on each end of the front and back bumper. Knowing that it was unlikely that the small (3/16 diameter) switches would be thrown every time it hit something, I increased the surface area by adding sprung angle stocks to the bumpers. This made the whole lengths of the bumpers sensitive.
The circuitry for the sensors is very simple. When they are in their open state, they are supplying a positive voltage to an input of the microcontroller. When one is pushed in, it shorts to the ground and so does the input. This is how the microcontroller gets its digital logic (on and off) to make a decision.
The program that I used to observe the "reflexes" of the robot was concise as far as artificial intelligence software goes. I started by having the rover move forward. It continues on this path until something gets in its way. At the point that one of the sensors is tripped, it reverses its motion, steers itself away from the obstacle, then proceeds forward. It's very short, and leaves room for error, as artificial intelligence is rarely perfect.
III.
The main experimentation was observing the rover as it found its way and seeing a machine take arbitrary input and make a decision from it. The sensors proved to work better than I imagined they would. They are sensitive to the slightest touch. However, the program had its misses. Among them was the fact that obstacles similar to corners in that there is only one way out, were indistinguishable from other similar obstacles. Also, the mechanical bumpers sometimes did not work with a direct impact on an object.
It is impossible to know all possible situations on a first try. I realized at the writing of Program 1 that it was simple and there absolutely would be obstacles to overcome. At this depth, corners have proved to be a major barrier that I must help the robot overcome. Although, at the moment, I am unaware of the method I am going to use to correct this, I do know why the problem occurs. Simply put, the robot has no memory. After it hits one side of a corner, it makes a pass at the other, only to reverse its actions again. This, with the robot functioning properly, could go on infinitely, or at least until the battery wears down.
Mechanical problems, like software problems, are just as hard to detect without experimenting and observing. The bumpers functioned very well at the ends, but where they were sprung out in the middle, there was no sensitivity. This will have to be a factor in the next process of increasing the robot�s intelligence and performance.

Phase II?

E-mail Douglas Isenberg here! 1

Hosted by www.Geocities.ws