I have an omni-directional robot, such as a X-Drive or mecanum Drive that I need to track the position of. I can put encoders on the wheels, but that is all I can do in terms of the sensors. I have no external beacons that I can link to. The issue is that I needed to keep track of X-Y position, including strafing, and my heading. Does anyone have any resources that could help me with this.

  • $\begingroup$ You can add encoder so would dead reckoning be an option ? Or because the robot is omnidirectional does it makes you unable to do it ? $\endgroup$
    – Malcolm
    Commented Apr 30, 2015 at 0:52

1 Answer 1


First of all, assume that the sensors we have are ideal (e.g. no latency, perfect accuracy, infinite (continuous) data frequency).

Then we can know the rotation rate of each of the wheels. and how much they have been turning from T_zero (initial time) until time, T.

making a few more assumptions, we can arrive at a computed X-Y location:

  1. wheel sizes do not change with time (because we are trusting the angular position of the wheels to determine the movement in that direction, and we have to assume a radius for the wheel)
  2. no slip in the wheels' turning direction.

Given these assumptions, calculations would follow as simple mathematics.

Depending on the operational scenarios, the validity of the assumptions should be re-considered. This might require some other fixing of coordinates using a secondary sensor-type. For example, in case there is an unnoticed slip of the wheels, the error would simly build up with time, and after some time the solution would be out of tolerances.

I came across this wonderful introduction to Xdrive robots. Which gives kinematics for their motion schemes, and so on.

It gives another method for calculating the location, using external sensors. But, it is definitely a good article worth reading.


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.