I would like to mechanically measure the distance a kids electric ATV traveled. The ATV will not be used with kids but as a mobile robot instead. It has a common rear axle for both rear wheels which I think could be a good place to put an odometer on (since the chance both wheels will slip should be minimal). Regarding suspension it has a single shock for rear axle.

My plan is to put a bigger gear on the axle itself and then add a smaller gear to it on which some kind of sensor would measure number of its rotations. One rotation of the axle may be something like 20 rotations of the small gear. What kind of sensor can I use for sensing rotation?

Another way of making an odometer may be some kind of optical solution (disc with holes and an optical sensor) but this seems to be rather complicated and also the the direction of travel could not be easily estimated (unless the motor is running in some direction).

I just found a term called Wheel Speed Sensor which looks interesting and seems to employ primarily non-contact sensing (which is definitely better than mechanical gears). Rather then optical solution I like the Hall effect sensor solution which may be simple and mechanically robust. But still, my question is open on how to implement this...

I would like to use the odometer for both speed estimation and distance estimation. I need to read the sensor from C/C++ on a Linux box.

EDIT: The thing I am looking for is probably correctly called a rotary encoder or a wheel encoder.

The ATV may look like one of these:

atv atv


2 Answers 2


The automotive industry frequently uses Hall effect sensors to measure shaft and gear rotation. The Hall effect has some beneficial properties: it operates over a wide range of temperatures, is more immune to contaminants than, say, optical technologies, comes in a wide range of response profiles, and with multiple mounting options. I'd suggest placing a magnet on the face of your smaller gear, near the circumference, and use a cylindrical, barrel mount Hall pickup to sense each rotation of the magnet. If you also want to know direction of rotation, mount a second magnet/Hall sensor slightly offset angularly from the first (and at a different radius from the center of the gear). The timing of the two signals will give rotation direction.


I don't think that an odometer is the right sensor for this task.

The wheels will definetly slip. The error will add up quickly and the measurement will not be very good. These types of sensors are not made to measure several kilometers of distance traveled.

Use GPS instead. It does not require any modification of the vehicle. The data is much more versatile, because you can put it onto a map, etc.

If you were to go for a walk yourself, would you attach some sensor to your feet or rather hit the record button on a Smartphone?

I want to use this mechanical odometer to supplement GPS. GPS (even with RTK corrections) is not reliable at all in areas where the signal is blocked (tall buildings etc.). So a properly setup mechanical odometer will be MUCH more accurate than GPS

To be properly setup, the odometry has to have it's own wheel independent from the motor driven ones that's in contact with the ground. This way you can guarantee that the influence of slip is minimized.

But looking at the ground in your images, I doubt that this will work well.

Instead, use computer vision to determine the position and speed of the vehicle. OpenCV provides functionality for such applications.

  • $\begingroup$ I want to use this mechanical odometer to supplement GPS. GPS (even with RTK corrections) is not reliable at all in areas where the signal is blocked (tall buildings etc.). So a properly setup mechanical odometer will be MUCH more accurate than GPS... the ATV will be used as robot and not with kids... $\endgroup$
    – Kozuch
    Apr 8, 2016 at 12:03
  • $\begingroup$ @Kozuch: sorry, the precision required was not clear to me. I updated my answer. $\endgroup$ Apr 8, 2016 at 12:23
  • $\begingroup$ Thanks for your update. Actually, I plan the odometer to be only one part of a multi-sensor odo setup - I plan to use RTK GPS, stereo vision and this mechanical odometer and fuse all together. There are areas where either of these will give errors, the fusion should deal with that. But I idea is the more sensors I have, the smaller the final error after fusion - that is why I want to also use this mechanical solution. Also, since the cost of this Hall-effect based odometer will be very low it could be added to both front wheels (3 sensors in total) to deal with the slip problems. $\endgroup$
    – Kozuch
    Apr 8, 2016 at 12:34
  • $\begingroup$ PS: An independent odo wheel with some suspension may give better results than one of the ATV's wheels, but it could still slip I think. I guess averaging from 3 Hall-odos (2 front, 1 back) may give even better results since the change all 3 odos are in slip is much smaller that with 1 odo. $\endgroup$
    – Kozuch
    Apr 8, 2016 at 12:42
  • $\begingroup$ @Kozuch: sounds good. I'd first try if GPS + stereo vision alone are good enough, because adding the odometry is a bigger effort (mechanically). $\endgroup$ Apr 8, 2016 at 12:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.