After much research, I have figured out everything I need except for the motors.
I am not sure whether to go with a conventional dc motor or a servo.
From what I've seen, most servos come with encoders, which I will probably find useful in a balancing robot, but the servos need to be modified for continuous rotation.
Most of the dc motors I have seen don't come with encoders but some come with a "backshaft" to which I could attach a homemade encoder I guess and use a phototransistor to detect pulses.
This is the site I am ordering from: http://www.robotshop.ca/motors.html
They have a ton of different motors/servos to choose from and I'm a bit overwhelmed.
I'm assuming whatever I get I want it to be geared down maybe 30:1 or 60:1 so that I have ample torque but it can also drive fast enough so that if a big correction is needed, the robot can drive hard in the correction direction. Too high of a gearing and my top speed may not be enough to overcome a large tilt angle.
The website has some "propulsion kits" which look nice but are also quite pricey. The only one that comes with encoders is almost $300. http://www.robotshop.ca/propulsion-kits.html
Do I need a motor controller? I have built a line follower which uses PWM from a microcontroller through two MOSFETS to drive the motors. I haven't constructed an H bridge so the motors can't turn backwards (not necessary for a line follower), but I can't see it being that much more difficult. So I would think I should be able to make my own motor controller for my balancing robot. I like to do as much as I can myself for the learning aspect of things.
That is all a motor controller really does anyways right? A few MOSFETS and an H bridge to drive the motors in either direction.
Any suggestions comments would be graciously accepted.