Using a gyroscope by itself seems reasonable, but the gyro develops a slow creeping tilt error that continues to increase. An example of this is when you tilt the gyro you'll see a change in the output voltage, but it quickly returns to it's resting level, if the tilt doesn't change. Thus if your robot was to tilt forward a few degrees and stay at that angle, the gyro will report that the robot is standing straight up after a second. So eventually the errors add up and the robot falls over. Using an accelerometer helps to solve this problem. The accelerometer outputs a steady duty cycle when the robot is standing straight up, and if the robot tilts one way or the other the duty cycle changes, and stays changed, until you have the robot's computer correct for the tilt.