Differential GPS could be a starting point. But 1 cm will cost a bit.
The basic idea is to increase the accuracy of gps. Stationary antennas at known positions allow to measure the error in the gps signal transit times.
A robot can then receive the error from the antennas and use it to improve its gps result.
According to German wikipedia:
Die erreichbare Genauigkeit liegt je nach Qualität des Empfängers und der Korrekturdaten zwischen 0,3 m und 2,5 m für die Lage (x, y) und bei 0,2 m bis 5 m für die Höhe.
that is:
The possible accuracy depending on the quality of the receiver and the correction data lies between 0,3m and 2,5m for the position (x,y) and between 0,2m and 0,5m for the height.
On top of that, the phase shift of the carrier wave can be evaluated to increase accuracy even further:
Hochqualitative Systeme werten zusätzlich die Phasenverschiebung der Trägerwelle aus [...] und erreichen so Genauigkeiten von wenigen Millimetern (± 1 mm bis ± 10 mm pro km Abstand zur Referenzanlage).
that is:
High quality systems additionally evaluate the phase shift of the carrierwave and allow accuracy of few milimeters (from $\pm 1mm$ up to $\pm 10mm$ per $1km$ distance to the reference station)