With the compass' installed. Top removed. Thats the Lithium Ion battery on top.
Fred, Robot #2
Fred's Code - ATMEGA128, GCC3.2
Fred's Schematics Note: these are in various stages of clarity and accuracy. Not all were modified since the upgrade to the AVR main board. Most changes are only to pin uC pin designations - I have included Pin Assignment spreadsheet in this file.
Here's Fred, my robot #2. He's good at wandering aimlessly around the house simply trying to avoid getting stuck. He can typically go for a good hour before having a bad encounter with a chair or something. He always looks for the longest forward path and then heads in that direction. If he encounters an object, either by I/R distance sensors, by high motor amps (indicating a stall) or by front distance not changing, he takes evasive action, then continues on. Theoretically, carrying on will evolve into doing something useful, like bringing a beer from the kitchen. He has advanced to performing dead reckoning navigation based on wheel encoder measurements. He can almost do a circuit around the house and arrive where he started.
Underneath. The encoders are visible.
I recently replaced my 68HC12 processor with one of my ATMEGA128 boards. Total conversion time (hardware and software) was about 20 hours, pretty good I thought for a total brain transplant. Its a much more stable platform and is working well. In front is the Polaroid sonar unit (round black thing) that can sense distance from about 2' to 25'. Under the top board is a Sharp GP2D12 that can sense from 4" to 2'as an analog value - the two work together as a continuous measurement from 4" to 25'. The sensor right at the front is another GP2D12 aimed at a 45 degree angle downward used for stairs detection. I got tired of him trying to go down the stairs. This works very well. I get less false trips than I did with the basic I/R modules and can adjust the trip point.
The main motor control board is on the bottom level at the back. It uses two L293D H-bridge chips to control the two 12VDC gear head motors using PWM control signals. I sense motor current to each motor with a resister/op amp/schmidt trigger circuit - this was a tough one due to the extremely noisy signal resulting from the PWM control. Each wheel is run by a motor via a belt and pullies. On the wheel shaft is an encoder disk (100 slots/rev) that is read by an I/R sensor. The battery is a 6400 mAH lithium ion Gateway laptop battery. I had to build my own charger. This is working well - seems to run forever. 5 volt power is provided by a switching regulator (National Simple Switcher) - this is efficient and helps reduce the noise from the motors. This is a better solution that separate supplies.
I also have a Dinsmore compass module and a Vector compass module that are more-or-less operational and I now have a CueCat bar code scanner that is also mostly operational. Between these devices I hope Fred will soon know where he is and where he's headed.