Our goal is to drive an autonomous robot with a differential locomotion system using two identical electric motors and an Arduino Uno (1 for each wheel). From our understanding, over time the motors can lose accuracy and may result in one motor rotating more than the other. Is there a way to account for possible error in the speeds of the motors so that the robot can end up in a very precise location?

Our thoughts were to have an indicator which would allow us to count the number of rotations of each motor and compensate if a noticeable difference began to appear.


"Is there a way to account for possible error in the speeds of the motors so that the robot can end up in a very precise location?"

The other answers describe the approximate solution (encoders). It depends on what you define 'precise' as. For an Arduino budget project, it is probably precise enough. But typically, say you direct your Arduino robot to move in a 1 meter square, you can expect it to be off by several cm when it returns to the start point. That is usually fine for an Arduino robot, but imagine something 100 times bigger (a car) being off by 100 times as much, now you have problems.

This problem is overcome by adding additional sensors. Each one can add additional accuracy until required precision is reached.

A gyro helps by giving more accurate short term turning information, as encoders depends on mechanical solutions that have slippage.

A compass works by giving more long term heading information, but is subject to disturbances.

A GPS, if available, can provide periodic 'corrections' to overall location information.

A SLAM algorithm, often laser range finder based, can triangulate on detected objects to help improve accuracy.

Lately the use of images, especially stereo, can also provide triangulation information. This is often referred to as optical odometry.

All of these additional measurements, separate or in some combination, is 'fused'. Very often with some form of a Kalman filter. The filter helps prioritize which signals to use dynamically.

  • $\begingroup$ One technical comment: KF is the way all those sensors are fused. SLAM is just sensor fusion + some global position sensor (like a map / landmarks /features /gps). It is not specific to any sensor set. I would have said, "A SLAM algorithm can fuse all of these sensors to provide a more precise estimate than any one sensor by itself." $\endgroup$ – Josh Vander Hook Jan 13 '15 at 16:25

You're describing an encoder. It will give you a signal every time the wheel turns a some amount of degrees.


  • $\begingroup$ Concise and correct. $\endgroup$ – Josh Vander Hook Jan 13 '15 at 16:26

This is a classic robotics problem not only will motors not rotate at the same speed given the same power, but one wheel might slip more than the other. This is why you almost always see precise robots with some sort of external reference, be it a camera, gps, line sensor.

An encoder will tell you whenever the shaft you attach it to has moved x degrees where x is dependent on the encoder. https://en.wikipedia.org/wiki/Rotary_encoder be careful of the difference between an absolute encoder and a relative one.

Edit: apparently I am being down voted because you are all assuming robots are driven on hard surfaces. Most commercial grade robots are not http://www.popsci.com/disney-designs-robot-draw-pictures-sand http://www.irobot.com/For-the-Home/Vacuum-Cleaning/Roomba.aspx http://www.robomow.com/en-USA/ http://www.nasa.gov/mission_pages/msl/

  • $\begingroup$ The word slip is confusing (and often used incorrectly). Seldom does one wheel slip more than the other, slip is actually how it turns. Google slip angle. $\endgroup$ – Spiked3 Jan 13 '15 at 13:33
  • $\begingroup$ @Spiked3, slip is defined as"slide unintentionally for a short distance", which wheels do all the time, rarely on a macro scale. Don't imply it I am using it incorrectly when you are not clear on what I am talking about. $\endgroup$ – Sam Jan 13 '15 at 16:14
  • $\begingroup$ Perhaps you need to look into vehicle dynamics then (milliken comes to mind). All pressure points of a tire except the exact center have to slip in order for a turn to occur. In racing we use tire slip data. $\endgroup$ – Spiked3 Jan 13 '15 at 21:24
  • $\begingroup$ Your definition of slip is exactly what I meant by using it incorrectly. That may be one definition of slip, but it is not the definition of the slip a robot encounters. $\endgroup$ – Spiked3 Jan 13 '15 at 21:48
  • $\begingroup$ What? "You have creds to exceed that?" you mean my degree in robotics? $\endgroup$ – Sam Jan 14 '15 at 5:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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