We are trying to implement our own odometry using 3 tracking wheels, and we have been reading a lot to understand the math and algorithm.

There are a lot of content covering the first part, which is to use measurement from the two parallel tracking wheel to compute the changing angle ‘w’, and dx, dy.

However, this is very little content we could find about how to use the measurement from 3rd tracking wheel, I saw the final math and got really confused, especially in this paper: http://thepilons.ca/wp-content/uploads/2018/10/Tracking.pdf

How do we use the measurement from 3rd tracing wheel to compute the the dx in local coordinates?

How do we compute the global dx, dy and dw from the dx, dy, and dw in local coordinate system.

Thanks a lot, Paradox-E, this is very helpful, although I still didn’t understand why the w (heading change) would remain the same if we consider the additional movement from the 3rd tracking wheel. But since many people confirmed this is working, I can just accept this as a fact.

So I can answer this. Without an opposing wheel we can’t compute how much the robot rotated using the 3rd wheel, if we could we could use it in combination with the other source of heading change to make a more accurate version.

With 4 wheel odometry we could could pair up each pair and get the following values
side to side pair: dw and dy
forward pair: dw and dx

But we don’t really need dw twice (if we did use all 4 wheels we could average the 2 estimated dw to get better reading). So there is a trick to use 3 wheels, 2 wheels compute both dw and dx while the third wheel gets us the pair dw + dy but we can’t separate dw and dy (2 unknowns but only 1 measurement). The trick is that the dw from the first pair of wheels lets us solve for dy on the third wheel,