I am building a rover which can navigate autonomously. I do not want to use wheel encoders for generating robot odometry since it causes drifts due to slippage etc. I want to use GPS for generating odometry. Will it be useful for me to use the differential GPS approach or shall I use a simple GPS? I am thinking of using DGPS because it enhances the accuracy to great extent, But at the same time, I think that in generating odometry, absolute gps values are not of importance. Instead, relative gps values are important to find for example, the distance covered by the robot.

Any suggestions on this ? Thanks


2 Answers 2


Do not give up on encoders. They are a great complement to GPS. I don't know what precision you want to reach, or what terrain your robot will operate in, but wherever it will be, encoders will give you good information about momentary position changes. Of course it will have some error, but when measured over small time period (i.e. 1s) it will be typically much smaller than accuracy of even DGPS.

The problem is encoder error will accumulate over time, so eventually your robot will end up in a completely different position than it should. That's why you should use your GPS data to correct data from encoders (possibly using Kalman filter). Check out this great answer about a sensor fusion.

Benefits of using GPS + encoders:

  • GPS signal may be lost (indoors, tall buildings nearby, tunnels, etc.) - how will you know where are you then?
  • Even when you lay down your GPS receiver on a table, the position will slowly drift around some central point - data from encoders may be used to correct for that. This is also the reason why you can't use GPS data to calculate distance covered by the robot (not with a ~1m accuracy at least)
  • encoders are useful to controlling robot speed, and making sure that it drives straight (which is very hard using open loop PWM)


Remember that accuracy of i.e. +/- 2m doesn't mean that you will have a constant offset from real position to the north, or any other direction. The readings will float around some position. That's why I would suggest going for higher precision modules

  • $\begingroup$ Thanks for the detailed explanation. The rover will always be working outdoors like in parks etc. So, GPS signal loss won't be problem in my case. All that I need is that the GPS should give the same value at a specific point. The value at the same point should not vary in different iterations. Secondly, If I move from point A to point B, then the calculated distance using gps values at both points should match the actual distance covered on ground. Based on above reqs, is DGPS is a solution for this, or do I only need a simple high precision gps with no need of dgps implementation. $\endgroup$
    – nxr
    Commented Sep 8, 2016 at 14:54
  • $\begingroup$ @b2meer What I'm saying is: whatever GPS you will use, the position it returns will float around true position. The only difference is how big the oscillations will be. Anyhow, you won't get exactly the same readings of the same position between iterations, when using only GPS data. Of course if you get high precision module the error might be small enough to ignore it. $\endgroup$
    – mactro
    Commented Sep 8, 2016 at 16:56
  • $\begingroup$ Alright. Can you recommend any high precision module with high frequency update rate as well ? $\endgroup$
    – nxr
    Commented Sep 9, 2016 at 11:42

If your budget is large (>\$ 5000) then use an off-the-shelf RTK GPS and you will get a precision of around 1.5cm $\sigma$. You will also need a RTK subscription and internet connection, or set up your own base station to provide atmospheric corrections (valid for 20-30km).

Alternatively there is this low-cost RTK unit.

However I have previously used a low cost (< \$300USD) setup with a L1 GPS, IMU and camera (making observations of landmarks) using an extended Kalman filter in order to get <7cm $\sigma$ accuracy. I say accuracy rather than precision because I did a simulation using the sensor specs and so I knew the ground truth. I didn't use encoders but I would highly recommend it. From memory it took me around 4 days to implement and debug the filter.

See also GPS + odometry + camera/laser SLAM algorithms which may solve your problem.

  • $\begingroup$ Thanks a lot for your response. Right now, I am looking into the low cost RTK unit link you have provided. It seems to serve my purpose. I am wondering how much accuracy or precision (roughly) it could provide. $\endgroup$
    – nxr
    Commented Sep 8, 2016 at 15:43
  • $\begingroup$ Also, if you have used it, can you tell me what is its update frequency? I cannot find it in the documentation. $\endgroup$
    – nxr
    Commented Sep 9, 2016 at 10:04
  • $\begingroup$ The FAQ says: If you have a base station with known coordinates and a good antenna, you can expect horizontal accuracy down to 1-2cm and vertical accuracy down to 2-4cm. I don't know about the frequency but I would expect it to be configurable up to around 40Hz. $\endgroup$
    – Gouda
    Commented Sep 10, 2016 at 2:54
  • $\begingroup$ Well this seems to be perfect then. I guess I am going to use the Reach RTK Kit for my project. Thank you very much for your help :) $\endgroup$
    – nxr
    Commented Sep 11, 2016 at 12:00

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.