The solution I've been working on uses a gyroscope to tell which way is up, together with a counter-torque mechanism that provides large torques on demand in any tilt direction. If the gyroscope senses that the vehicle is starting to tilt in any direction, then the counter-torque mechanism rapidly creates an opposing torque, so that the robot stays upright.

The design problem that I was facing is that electric motors are not good at starting and stopping quickly, so you can't just suddenly spin a weight around briefly to create a strong temporary torque. And you don't want to start swinging around big weights on long swing arms. For one thing, such a robot would never get a job in the food services industry.

Instead, I use the fact that electric motors are very good at spinning at relatively constant speeds, and that a great deal of torque can be stored up within a spinning flywheel. The basic approach is to use two stacked plates, each of which has a motor driving a large flywheel. The two flywheels spin in opposite directions. The plates are both allowed to wobble freely about the joint connecting them.

The basic principle is as follows: if you reach out with your fingers and try to pry apart the two plates at one edge, then both flywheels will precess in the same direction, and the entire mechanism will rotate perpendicularly to the direction you are prying.

The applet at right illustrates how the counter-torque mechanism works. You can examine it from different angles by dragging your mouse over it. The body of the robot and the gyroscope have been removed, so that you can clearly see the workings of the counter-torque mechanism.

The two electric motors (shown in copper), each driving a flywheel (also shown in copper), are attached to wobbling plates (shown in gold). Three electromagnet pairs (shown in red) face each other between the two wobbling plates, one magnet pair every 120 degrees. Each of the two electromagnets in each pair are wired together but wound in opposite directions, so that they will tend to repel each other. By supplying variable amounts of electric current to each of these three electromagnet pairs, you can create a prying-apart force at any point around the circumference of the two wobbling plates. In this way, you can quickly create a large precessional torque about any axis perpendicular to the spin axes of the flywheels.

Note that the two plates are supported by the robot frame (which is shown in silver) in such a way that the plates can only wobble in opposite directions. Also, the wobbling plates are connected to the frame in such a way that if both plates rotate together, then the frame is constrained to rotate with them.

 toggle line drawing Source: rosie1.java toggle line drawing