Accurate localisation issue

I’m trying to use Sparki to do the Q-learning algorithm on the grid-world. The size of each cell of the grid-world equals to the how much the Sparki moves in 4 secs (4000 milliseconds), therefore, it’s approximately 11.18 cm. The robot seems cannot reach the original position after 30 minutes, the body is also shifted (and the heading). Therefore, is there any good suggestion for improving the localisation accuracy in the grid-world setting (discrete environment)