Actually, GPS would be a fairly decent way to go at this.
The absolute accuracy of GPS is pretty crappy, no argument there.
The relative accuracy of GPS can be phenomenal. That is to say, if you have two identical receivers within a small area, then you can calculate the positional difference between the two quite accurately.
Differential GPS makes use of this to provide postional accuracies of less than a meter. This is done over very large areas (broadcast range of a receiver with a known position,) so the accuracy gets degraded by the different atmosphere conditions and other things.
I will grant you that the NMEA data packets won’t be of much use. Most of the ones I know of only go to (at most) 5 digits after the decimal point for the seconds of arc, which limits you when you need centimeter precision.
You’ll probably need to get a development kit from the GPS receiver manufacturer and pull the data out of it in the manufacturer’s proprietary format. The proprietary formats usually offer raw data that goes to more decimal places. They also can usually output the pseudo-range and other data that you would need to compute the positions with your own software. If you do that, then you can get really down to the nitty gritty.
You set one receiver (actually, the antenna) and use it as your zero point. You attach the antenna of the second receiver to the object being tracked. Get your coordinates and figure the difference then convert to meters. No sweat.
Make sure that the cables for the antennas are the same length to within the precision you need on your measurements. The length of the cable influences the apparent distance from the satellites, so that if the cable lengths are (say) different by one meter then you will have a meter offset somewhere when you calculate the differences.
As for cost, you’re talking a couple of hundred bucks tops for a pair of receivers. You’d have to write the software yourself, but then you’d have to do that no matter what.
Triangulation from a radio signal would be a bitch to handle for what you are doing. You need some way to resolve time differences accurately at below 3.3 picoseconds (time for the signal to cross 1 meter) or else some way to manipulate two directional antennas on two axis each in real time. You will also need to use a very high frequency radio signal to get any accuracy. A 320 MHz signal has a wavelength of 93 cm, so if you need centimeter accuracy you’ll need to go up to something around 3 to 4 GHz - this because you can’t “see” really anything that is smaller than the wavelength of the “light” you are using.
The same requirements on timing accuracy are valid for LSL Guy’s “LIDAR” setup as well. Working things over, you’re going to need a clock running at 300GHz to get 1 meter accuracy. If you need cm accuracy, then you need a 30000GHz clock to get it. Expensive shit. You’d do better with a continuous wave signal and some kind of phase comparison - and then you get into doppler effects so that you’d have postion indications getting distorted depending on how fast you object is moving. Not to say you won’t have that kind of thing with any other solution.
Another way to tackle it would be with a sort of inverse sonar. You pack an audio signal generator into your target so that it broadcasts a single tone. Then you use three microphones and a great pile of FFT stuff to get phase information out of three audio signals, and from that you can get ranges that you can use to calculate the position. A tone of about 170 Hz would give you a phase range of about two meters before wrap around would cause ambiguities.
Another way using audio would be to put a clicker in your target. Your target is connected (electrically or by radio) to your test rig so that a click starts three timers. The times recorded between the click and when the three mikes pick up the click give you your ranges which you then use to figure position. Counters with a clock frequency in the megahertz range would give you tremendous accuracy. A clock frequency of around 34KHz would get you 1 centimeter accuracy.
Lots of ideas there. I hope you can use one of them.
Have lots of fun.