This is the most frequently asked question we've recieved over the years. Here are the reasons:
- USING PUFFY WHEELS: The basic pneumatic wheels that come with the starter kits compress easily and therefore constantly change diameter. The are also lumpy on the tread area. A robot of even moderate weight will force the wheel to compress as it drives creating unpredictable and uncorrectable changes in direction. The solution: Find wheels with hard, solid treads. The picture to the right shows many of the solid and thin tread wheels we've found on BrickLink and BrickOwl over the years. Many are UK only products. Please see the "COOL PARTS" article for more information. Click on the picture to see a larger view.
- USING A SINGLE AXLE MOUNT: If your wheel is attached by an extended axel only (not supported on both ends) then you again, create unpredictable and uncorrectable changes in direction. Why? The LEGO axles are very flexible, and the motor drivers have play in them as well. Wheels must have a rigid, matching mount on both sides to ensure stability.
- IMPRECISE TRACKER WHEELS OR GLIDES: Similar to "SINGLE AXLE MOUNT," if you have trailing wheels or glides (ball bearing or sliders or wheels) that are imprecise and not firmly mounted, it will wobble as you drive and respond to varations on frictional coeficient of the surface. This is particulary present in caster type wheels.
- NON CALIBRATED MOTORS: The NXT and EV3 motors are all amazing, powerful, and precise. But they are not all the same. We published a very simple way to calibrate your motors. See the article here.
- OUT OF BALANCE ROBOTS: Try to make your robots center of gravity in the center, seriously. A robot with a very heavy attachment or device on one side will cause the robot to track erratically.
- TEST TEST TEST: After you have followed all the steps above do multiple line runs on a smooth surface twice the length of the table. Try to isolate what is causing any drift and correct with that setup. Then document it.
- IMPLEMENT A GYRO SENSOR: This is very difficult to do and the Gyro sensors have their own drifing issues. However, there are hundreds links on Google on how to do this. Check them out: https://www.google.com/search?q=using+ev3+gyro+sensors+to+run+straight