La technologie GPS utilise le temps de propagation des messages émis par les satellites pour atteindre le récepteur.
Si on cherche à appliquer cette technique à ton problème, les ondes se déplaçant à 300000km/s, une résolution de 1 cm demanderais une résolution temporelle de 3E-11 secondes (30 pico secondes). Ce n'est pas une technologie accessible par un Arduino.
Par comparaison, quand un GPS fonctionne bien, 5m c'est un bon résultat. On atteint mieux en faisant des mesures longues que l'on moyenne sur plusieurs minutes.
Ensuite comme le propose fdunews, il reste les applications purement géométrique en se positionnant par rapport à 3 points fixes (balises).
Il faut donc une antenne tournante type "radar" et déterminer les angles des positions des 3 balises.
Après avec un peu de trigo on s'en sort.
Avec des balises radios, ca va être dur d'avoir des antennes suffisamment directionnelles pour atteindre la précision que tu veux.
Avec de l'infra-rouge ca pourrait aller mieux.
Pour savoir quelle précision tu pourras atteindre, il faut estimer les erreurs de mesure et reporter dans l'équation de résolution (un peu de dérivations partielle par-ci par-là

)
Mais le centimètre me semble difficile.
Généralement ce genre de précision pourra s'obtenir plutôt par la combinaison de plusieurs techniques permettant d'avoir des positions repères et des mesures différentielles de déplacement (compteur, accéléromètres...)