Godzuki was conceived as a means to experiment with behaviors on the OOPic controller board from Savage Innovations. The OOPic has lots of useful hardware capabilities that run unattended after they are configured. One such is PWM, of which there are two channels on the OOPic board. I used a Tamiya 2 motor module that I set up for maximum torque and minimum speed when I built it. This is a cool little guy that costs about $15 in most hobby shops and has axles on it that are easy to interface to. I use 1 3/4" Dubro lowbounch airplane wheels that I drilled out the centers a little bit. What isn't shown in the pictures is the "skin" of ping-pong-paddle rubber that I've glued to the surface of the tires to increase their traction. First I had to use a razor blade to flatten the tires to maximize the contact patch to the surface. I'm using a 6-cell AA NiCd pack for power, which may be overkill as its pretty darn fast with it!
To run the motors I'm using the two OOPic PWM signals interfaced to an HVW Technologies L298 dual H-bridge board. Just in case I've secured a small heat sink to the L298 which does get warm when Godzuki is running. To look forward and back I'm using two of my IRPD boards. These work pretty well in the mini sumo area space. On each of the four corners I'm using a Radio Shack IR LED and IR phototransistor pair. I use a 470 ohm resistor on the IR LED and a 4.7K resistor off of the transistor emitter for a really good voltage swing. These are far better than using visible light because they are not as susceptable to ambient visible light. I've mounted the components on a proto-board at 90 angles to each other to maximize the reflection percentage that gets to the receptor. I've also put black wire shrink tube around the receptor.
Godzuki gets his nifty voice from a small toy a friend gave me that had a 3-pin device with Godzilla's roar, very nifty - I just wish I knew where to BUY such things!
I use every bit of RAM on the OOPic with this program and it requires the latest compiler that has regular variables definable instead of using oByte objects. Every action is defined as a behavior that operates via the Virtual Circuit capability calling an interrupt routine to handle the logic. This is the source code for Godzuki, over 300 lines of it, and it works. However, it could work better - I'm going to experiment with disabling and re-enabling the event firing mechanism, the OOPic "one-shots" events, meaning that you can't fire an event again until the current event finishes, this leads to the robot missing some edge transitions and can fall off the board: not good.