Locomotion/Odometry Robot links

From reading around the web today, I’ve decided that my current proposed method of odometry with our rover will probably lead to a few problems. Based off a rough idea I sketched up in a matter of minutes, I would check to see if each wheel had reached the number of rotations I specified and if not I would keep applying voltage to the wheels. When one of the wheels reached its goal, I would turn off that wheel and keep voltage on the other wheel until it met its goal as well.

Well this illustration kinda shows what will most likely happen. The effect would be multiplied by however much our wheels are non-similar:

I would be traveling the correct linear distance but I would have no way to tell if I veered somewhere in the middle of the drive. That’s a “bad thing”.

My current method really only checks rotations at the end of the destination, for a truely straight path, corrections will have to be checked as we go along. What that means is that I will have to check to see if the wheels are in sync throughout the entire distance. In pseudo code:

loop until both wheel wheels count 16 
    put voltage on both wheels 
    if leftWheelCount > rightWheelCount 
        turn off left wheel 
    elseif rightWheelCount > leftWheelCount 
        turn off right wheel 
    else keep it up 
end loop

That should keep the wheels more or less in line. However, as you might notice this could get a bit herky-jerky depending on the resolution of the wheel encoders. I hope to produce a 10 degree ,18 pulses per rotation, or finer (I saw someone with a 56 pulse/rotation encoder earlier today).

Another possibility would be to take advantage of our H-bridge module’s support of pulsing the wheels. My code could be pulsing the wheels at a similar rate and make pulse speed adjustments for a lagging or leading wheel to keep the drive straight.

I’m still having problems envisioning the code flow and keeping the pulses going, but I know that our loops are fast so I shouldn’t worry about it ;) So much of programming background deals with linear processes.

  1. Do this process
  2. Then do this process

which is rather different than

  1. do a chunk of this process
  2. now do a chunk of the next process
  3. now do a chunk of the next process

I think we’re moving along nicely though. We got our phototransistors working nice last night. I also feel like I’ve posted that bit before ;)

Analysis of the unpredictable movement of two-wheeled robots with independantly driven wheels

How to straighten out your rover

A key issue for mobile machines autonomy: Localization

Robo-rats Locomotion: Odometry

Robot-rats Locomotion: Differential Drive

Where am I? Systems and Methods for Mobile Robot Positioning

UMBmark — Measuring, Comparing, and Correcting Odometry Errors in Mobile Robots

Odometry Calibration


Borenstein, J., Everett, B., and Feng, L., 1996, “Navigating Mobile Robots: Systems and Techniques.” A. K. Peters, Ltd., Wellesley, MA, ISBN 1-56881-058-X, Publication Date: February 1996. This book is also available on CD-ROM, which includes vidoe clips, background papers, and author information.