How to calibrate NXT motors to travel the same distance?
You can't calibrate the motors, neither mechanically or in software. There is however several methods in the software to account for this.

The standard NXT firmware contains a synchronization mode which attempt to keep the two motors aligned. In NXC you can do this by using the function OnFwdSync like this:
OnFwdSync( OUT_AC, 75, 0 );
First parameter is the motors to sync, the second is the power and the third defines the difference in speed between the motors (used for the tribot).

This article tells how to do the same in RoboLab: How does NXT motor synchronizing work in ROBOLAB?

In NXT-G I think synchronization is on per default in the move block, correct me if I'm wrong.

I don't know how to do this in LabView. However I have heard there is some blocks to do this in the "NXT I/O»NXT Native I/O»Output" palette, try looking there.

You can make your own controller by looking at the rotation value. Calculate the difference and set the speed like this:

Motor A = power + weight * difference
Motor B = power - weight * difference


The weight is how much the difference should affect the motor speed, you will need to experiment a bit to find a good value here. You might also want to take the 100% limit in account. If the power for one motor goes over 100%, do this:

if( Motor A &gt; 100 )
   Motor B = Motor B - ( Motor A - 100 )

if( Motor B &gt; 100 )
   Motor A = Motor A - ( Motor B - 100 )