We use a system that features three fiber-optic gyroscopes mounted orthogonally (at right angles to one another) in a box that is rigidly attached to the ballbot body [see box on opposite page]. These gyroscopes contain no rotating masses. Each gyroscope features a light source, a detector and a coil of optical fiber. Light waves travel around the coil in opposite directions and interfere with one another at the detector. During operation, the ballbot body, with its three gyroscopic, angular-motion sensors, rotates in various directions, but the light waves inside them travel at a fixed speed regardless of any movement. Accordingly, a small path difference between the clockwise- and counterclockwise-propagating waves results in each sensor. In each case, the path difference causes the interference fringes at the detector to shift, producing an output that is proportional to angular velocity, an effect noted as far back as 1913 by French physicist Georges Sagnac. A small computer integrates the three angular velocities to produce pitch (forward/backward tilt), roll (left/right tilt) and yaw (rotation around the vertical) angles taken by the robot's body.
To report the correct vertical orientation, all gyroscopes must take into account the earth's rotation. They are also subject to numerous other small effects that cause errors and drift over time. Our system incorporates three MEMS accelerometers, set orthogonally in the same box alongside the gyroscopes. As the ballbot moves around, these sensors report the resulting instantaneous acceleration values for each orientation, which the computer then combines to yield an overall acceleration direction and magnitude that can be averaged over time. (The accelerometers’ readings cannot be used directly for balancing.) The outcome is a reliable long-term indicator of the direction of gravity that the system uses to correct the drift of the fiber-optic gyroscopes.
Moving with the Ball
SEVERAL METHODS EXIST for driving a ball in various directions using motors. We strove for simplicity in our design for the ballbot's drive mechanism. When one moves a mechanical computer mouse about on the desktop, the rubber-coated ball on the underside causes a pair of orthogonally mounted rollers to turn. The measured rotation of the rollers provides input to the computer to traverse the cursor across the screen. Just the opposite happens in the ballbot: output from the ballbot's computer commands a set of motors to turn rollers that rotate the ball, thus causing the robot to travel in any direction along the floor. It is essentially an “inverse mouse ball” drive. Currently motors actuate the ball in the pitch and roll directions. An additional motor (not yet installed) will rotate the body in yaw, which will allow the ballbot to face in any direction.
Much as a circus clown might perch atop a ball, the ballbot's body stands atop the ball wheel. The ball is a hollow aluminum sphere covered with a thick layer of polyurethane rubber. Such a drive scheme exhibits frictional and damping behavior because sliding always occurs between the ball and rollers, for which compensation must be made. Three ball bearings between the ball and body support the body's weight.
To infer ball rotation and hence travel distance, we used optical encoders that are fitted to each of the drive motors. Each encoder has a fixed light source opposite a light detector. A transparent, rotating mask (with many fine opaque stripes) attached to the motor shaft sits between them. As the motor turns, the mask rotates, causing the striped pattern to alternately block and transmit the light beam. The ballbot's main computer counts these events to measure ball rotation and thus distance traveled.
SIMPLY STATED, the ballbot uses its knowledge of the vertical to determine how to rotate its ball to balance and move about. Fortunately, the ballbot is fundamentally an inverted pendulum, a mechanism that physicists have studied extensively. We use the techniques of optimal control theory to find a strategy or policy for driving the ballbot to its goal while simultaneously minimizing the effort it takes to get there. The ballbot has eight internal states that the policy must take into account: four for its forward/backward motion and four for its left/right motion. For each of these directions, the system measures or infers (from the onboard sensors) the robot's position and speed, as well as the tilt and tilt rate of the body.