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.
which is rather different than
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
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.