I've got a couple Vex 269 Motors hooked up to an Arduino Duemilanove. These motors run a some Vex Tank Treads. The two motors are run as servos on the Arduino using the Servo Library. The problem I'm having is that the two tracks don't turn at the same speed when sent the same servo angle. This is clearly due to the fact that the continuous tracks have so many moving parts that having identical friction forces on each track is hard to get.

How do I get them to move the same speed? Should they be moving the same speed given the same servo angle regardless of the friction and the Vex 269 Motors just aren't strong enough (meaning I should use the Vex 369 or some other more powerful motor)? Is it best to just doing trial and error long enough to figure out which servo angle results in equal speeds on each? Should I tinker with the tracks until they have nearly identical frictions? Thank you much!


1 Answer 1


The short answer is that you need better control (feedback) to do it. Practically, you will never be able to calibrate the system accurately enough to go straight for more than a few tens of robot-body lengths. Once you dial it perfectly for one set of conditions, the environment or wear conditions will change and you'll have to tune it up again.

Surface conditions, traction, attitude, motor-isolation (the distribution of electrical power to each motor from a common power source), and many other real-time operational factors effect forward velocity for each side of the 'bot.

Depending on your precision requirements, something as simple as a magnetic compass (position as far forward on the robot as possible to maximize its responsiveness) could help you maintain a heading during forward motion.

Often it isn't critically important precisely which direction your 'bot is moving; rather, it simply needs to be making progress on some task (follow the leader, search for a target, etc).

If you post greater detail on your robot and its design objectives, I could assist you further.

A note about magnetic sensor placement

But, why should I "position [the magnetic transducer] as far forward as possble"? Isn't it true that the angle is the same? Yup. That's true, but the magnitude of the Earth's magnetic field is not. You are standing in a different spot on Earth.

Imagine your robot is as big as a car. If you sit in the geometric center of the car and the car pivots about you, your coordinates on the Earth have not changed; only your attitude has. Now if you are sitting on the hood of the car and the car repeats it's previous motion, both your attitude and your coordinates have changed. Changing coordinates produces a bigger difference in magnitude of the Earth's field than rotation alone.

Over the last few years I worked on a team with Dr. Dwight Veihland of Virginia Tech, arguably the world's leading expert on super-high sensitivity magnetic sensors. If I were to crystallize the body of his work (like in this example), I would say that he is always in pursuit of greater signal-to-noise ratios in the detection of ever tinier magnitudes.

Any increase in the magnitude difference you can generate makes life easier for your sensor... and in this case, you get it for free. A number of DARPA grand challenge robots placed the GPS sensor forward for this same reason.

  • 1
    $\begingroup$ To expand on DrFriedParts excellent response, look into "PID control" to find out more about a commonly used type of feedback control. Question for DrFriedParts: how does positioning the compass as far forward as possible maximize responsiveness? The angle will be the same regardless, although I can see getting it away from the metal parts and motors to be helpful. $\endgroup$
    – ViennaMike
    Commented Dec 8, 2012 at 17:40
  • $\begingroup$ @ViennaMike -- Thank you! =) I expanded my answer to cover your question in more detail than I could fit in a comment. $\endgroup$ Commented Dec 8, 2012 at 19:05
  • $\begingroup$ Does anyone happen to know of a published paper with experiments showing that the location of the magnetic sensor on the robot improves orientation accuracy due to position in the Earth's magnetic field? It sounds plausible, but I'm not convinced the effect would be noticeable. I would suspect just moving the sensor away from other electronics on the robot would have a larger effect. I'd be interested to see the results of any experiments on this! $\endgroup$
    – golmschenk
    Commented Jun 13, 2018 at 14:48
  • $\begingroup$ @ViennaMike -- PID control of the motors can't be used here to solve the problem. You don't have any position/speed/current feedback so there is nothing to input to the PID control loop. PID provides a means to smoothly approach a target value, but you don't have a target value without additional feedback about the position of the robot/differential rotational speed of the two tracks (e.g. you need more information than the OP's robot/scenario can provide). $\endgroup$ Commented Jun 14, 2018 at 13:17
  • $\begingroup$ @golmschenk -- Look into the first DARPA grand challenge and the papers released by the various university teams about the GPS antenna placement on the vehicles (same concept)... or look at Veihland's papers of relevance. The effect is substantially noticeable at car speeds or with minute-scale magnetic sensors. It's noticeable at almost any practical robotic scale with GPS. $\endgroup$ Commented Jun 14, 2018 at 13:20

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.