In the spirit of sharing, here is some info and the source for the motor controller I built for my Unmanned Ground Vehicle robot.
It is powered by an Arduino Pro mini at 8 Mhz, and it has two motor channels. It gets feedback from the motors via two quadrature encoders. It runs a PD control loop at 35 Hz, with the loop closed around speed. This means that it receives commands as speed (cm/s) and reports back distance traveled since last command, along with battery voltage and current. If the battery current gets two high, it will limit the speed the wheels will go.
Details and source can be found here: http://www.billporter.info/?p=116