Rollie is a self balancing robot built entirely from off the shelf components and 3D printed parts. It can be controlled from anywhere in the world through a relay server or directly over wifi.
We programmed in multithreaded C++ to maintain the timing requirements of the sensors, stepper motors and user interface.
We decided to go with stepper motors for their low cost and ease of use, however higher speeds and sharper responses would have been possible if we had chosen to use DC motors with encoders.
You can check out the code on github.