A friend of mine, erco, from the Parallax Forums and I are working on an encoder project for the Parallax Scribbler. A wheel encoder keeps up with the turns of a wheel. It "counts" the rotation speed by reading teeth (like a gear), notches, or black and white stripes with an optical or mechanical reader. By doing this, you can tell how fast a wheel is turning and how far it has turned (for example, if the wheel turned once and you know its circumference - you know how far you have traveled). This lets you measure the distance the robot has traveled and lets you correctly keep it running in a straight or curved direction. The thread of our discussion on the forum for this project is here.
As a benchmark, my buddy, erco, wrote a simple test program to show how the Scribbler runs forward and backward through a range of speeds. This is a video of my Scribbler running the test program. This shows the difficulty of the Scribbler running straight consistanly through its speed range. Prior to the test, I reset the Scribber with its original program. There is no correction via the Scribbler Program Maker GUI by the calibration routine. The calibration routine lets you make a single correction to one motor to equalize its speed to match the other motor.
As you can see, the Scribbler does not run very straight without some sort of correction.