Dino, of Dinofab, has been getting cheap Roombas off of eBay (as low as $20) and using their parts to make other bots, like this “RoverBot” above.
I found the motors in the Roomba to be very user friendly. The have a belt driven planetary gear reduction transmission that provides very high torque and they can be driven directly from the H-bridge that is already on the Roomba main board. Each assembly has a wheel sensor but it tends to drift in it’s accuracy due to the belt drive slipping slightly.
I recently built a four wheeled rover robot with a rocker bogie suspension, a PING sensor and an Arduino microcontroller. I mounted four of the Roomba motor assemblies on the suspension arms, two on each side. They were then connected to the mainboard at the factory plug. In doing this I burdened the circuit with double the normal load because I was using two motors per side. The power transistors seem to handle this just fine however and I noticed no heat buildup in them.
The Arduino microcontroller I installed is programmed to send a PWM (pulse-width modulation) signal to the switch on the transistor on the H-bridge of the main board, which is powered by the Roomba battery pack. The PING sensor is mounted to the front of the chassis for navigation. Here’s the prototype in action.