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 ;)
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.