Robo-Rats Locomotion: Odometry

It is important for a robot to know its location, especially in a search & retrieval task such as the Robo-Rat competition.  Knowing where you are may not seem like a difficult task but, as you will see, it can be very challenging.  People know where they are by using their excellent vision system, their memory, and their knowledge of their surroundings.  But robots, especially the type you will be building for this class, do not have these highly developed skills.  One way robots have of determining their position in their environment is odometry. Odometry is the use of motion sensors to determine the robot's change in position relative to some known position.  For example, if a robot is traveling in a straight line and if it knows the diameter of its wheels, then by counting the number of wheel revolutions it can determine how far it has traveled.  Robots will often have shaft encoders attached to their drive wheels which emit a fixed number of pulses per revolution.  By counting these pulses, the processor can estimate the distance traveled.

Odometry is a very common position sensor for mobile robots, but it has its limitations.  Since it is a cumulative measurement, any sensing error will increase as time passes.  Robots may periodically need to use other sensors to precisely determine the robot's position to prevent excessive error buildup.  Sources of odometry error are:

• Inaccurate wheel diameter measurement
• Different wheel sizes for multiple-wheel drive systems
• Pulse counting errors in systems that use drive shaft encoders
• Slow odometry processing (considering only cumulative counts, not the dynamic count differences)

Slow odometry processing may lead to the following situation:

The above diagram shows two different motion paths for a differential drive robot (each wheel is actuated by a separate motor).  The encoder values are next to the wheels.  In the case of the left diagram, the robot travels in a straight line so the encoder values are always equal.  However, the robot on the right takes a serpentine path.  At the half-way point, the green wheel encoder reads 80 and the red wheel encoder reads 40, meaning that the robot was executing a right turn.  However, the robot then turned back to the left and in the final position the encoders read the same value, although they are larger than the values on the left because the robot has traveled a longer distance by tracing an s-shaped curve.  If your control software only looked at the encoders at the end position, it would assume that the robot traveled in a straight line.  This is why slow encoder processing can cause errors. Unless your robot is mechanically guaranteed to travel in a straight line (some locomotion architectures guarantee this), you should process the odometry readings as fast as possible.

Back to the Robo-Rats Locomotion page

Back to the main Robo-Rats page