How accurate can I be with Servos?

Perhaps if the surface can be marked, reasonable accuracy can be achieved by using it as part of a giant encoder. A light sensor running over a series of bar-code-like markings would detect pulses you should be able to read.

Three decimal places on meter-range distances is millimeter resolution, which should be fairly easy to mark accurately over a 50 meter distance. The design of the 'bar-code' would be the smart bit, but if your dead-reckoning is good over, say, ten centimeters (definitely feasible with good steppers), you could encode an absolute distance every ten centimeters over one centimeter (50 meters every ten centimeters would need 500 absolute references so 10 bits would be plenty, meaning at one millimeter per bit your reference would span ten millimeter or one centimeter) and then just have millimeter tick-marks in between.

Not for the faint of heart, but I think it might be implementable reasonably cheaply and easily.

A simpler version, if you're happy with the accuracy of your dead reckoning over fairly long distances (e.g. ten centimeters), would be to only mark the surface every interval to reset the dead reckoning. No need to have millimeter tick-marks, just an accurately positioned band every ten centimeters. You might even be able to hide such a design as part of some graphics on the surface.