How can I measure distance travelled in cm without gps?
Since the small vehicle is like a lawn mower I am assuming the small vehicle has wheels. You have many options to choose from based on your requirements.


As PeterJ suggested you can use a quadrature encoder. 
Another option is use and Hall effect sensor. This type of application is used frequently in automotive applications.
The use of an accelerometer will enable speed measurements. Consider a three axis accelerometer, thus this will infomation as as to if the vehicle going up an incline or down an incline. I create a simple accelerometer demo using Beaglebone black, Embedded QT and ADXL345 which can be found here. The source is available to public on github. I also did similar demo using TIVA ARM Cortex M4 + ADXL345. I can make the source code pubic if interested. 
The use of a magnetometers will help determine direction in XY direction


Also take a look at the Dead reckoning concept. Dead reckoning doesn't use GPS, and is widely used in automotive navigation applications when GPS is not present, such as driving through a tunnel.

Another interesting application is irobot create. As I understand the both hardware and software is open sourced. This will give some good ideas for your project. Below is picture of guts of iRobot command module. 



Another option would to use myRio from NI. Although the hardware is not open source myRio allows you the connect to LabView to help develop algorithms.

References: 


Dead reckoning
NI myRIO
iRobot Command Module
BeagleboneBlack_ADXL345_GUI
Cyber-Physical Systems form University of California at Berkeley
Mounting and Coupling an Encoder
The Benefits of GPS