Starting in the summer 2008, I wanted to design and build a two wheeled balancing robot, similar to a table-top segway.
During that summer, I designed and built an initial prototype. This design was going to use an Arduino and 2 degree IMU from SparkFun. Unfortunately, I didn't take any pictures of the built prototype, though it was aesthetitcally pleasing with clear acrylic plates to build the frame. The only remaining record is the SolidWorks screenshot shown here:
I should still have all the parts for this, so if I get really motivated I'll rebuild it to take a picture for the site. Before even trying to program this system, I decided it would actually be best to distribute the mass as far away from the wheels as possible, increasing the moment of inertia and decreasing the necessary response time of the system. A mechanical system was designed and fabricated:
This design is compatible with the stand-off layering from the first design, to increase battery carrying capacity. Also of note is the use of a Sharp IR sensor (shown), which could be used to (a) initially replace the 2 DOF IMU and (b) provide a supplementary measurement for calibrating a Kalman filter once I was ready to use the IMU.
However, by the time I started working on this project again I was in the middle of a course on linear control theory with lots of heady discussion about block diagrams. The concept of using Op Amps to compute control algorithms was extremely fascinating, so I decided to try it. I built a control system using entirely analogue computation. The Sharp IR sensor outputs a stepped signal (like a zero-order hold), so the circuit also took some principles from digital computation.
These two pictures show what's left of the solderless breadboard circuit.