After CM's Ballbot was widely publicized, I decided to design a similar robot, but on a very small scale. Engineering a ball with the correct properties was a major challenge for the CM team. I bypass the problem altogether by designing the robot around a readily avaible ball with the right properties: a mouse ball (yes, a standard 22mm diameter mouse ball). The resulting robot will be approximately 6 inches tall. The extremely high controller bandwidth needed to solve the 2-axis inverted pendulum problem at such a small scale will likely be a major challenge.
On the left and below is the mechanism I designed in Solidworks around two pager-motors with planetary gearheads from Gizmoszone. Miter gears transfer power to rollers mounted orthogonally at the mouse ball's equator. Three ball bearings serve as mass transfer points, while two ball bearings just below the equator opposite each roller secure the mouse ball and ensure good contact between rollers and ball.
Mounted directly above the ball will be a laser-mouse sensor (I've selected the Avago ADNS-7530 with compact lens ADNS-6150). By measuring the planar displacement of the ball's surface at its "north pole", one can easily estimate the angular state (position and rate) of the ball with respect to the body. Using the laser-mouse sensor frees me from the problem of somehow integrating encoders into the drive train within the tiny envelope of the drive housing. Solid-state gyros mounted higher on the robot will measure angular rate of the body in two axes (I've selected the IDG-500 dual axis gyro). Note this robot will have no angular control about the vertical axis, at least initially, which means it will tend to drift about that axis as it balances itself.
With Chris Myers' help, I fabricated an older version of the mechanism body on a Fused Deposition Modeling machine. Also, he printed one on a Z-Corp 650 3D Printer.
This project is in a very early stage of development.
Now imagine, instead of a robot, an array of these ball drive mechanisms mounted upside-down in a plane. You would have a vectorable work surface. In other words, you could move an object around on the "bed" of balls-transfers in an arbitrary path with arbitrary rotation.