Created 21 Aug 2006 at 22:47 UTC by tbenedict, last modified 16 May 2007 at 02:58 UTC by tbenedict.
Notes:
Speedy 1.0 is built:
MPU: Orangutan AVR from Pololu (got it!)
Programmer: AVRISP-II from Digikey (got it!)
Battery: 9V Alkaline (LiPoly to be fitted later)
Sensors: Six QTI line sensors from Parallax (got 'em!)
Motors: GM18 Gearmotors from Solarbotics
Chassis: MDF
This project has got to be renamed Phoenix simply for the
number of times it's gone up in flames (figuratively, mind
you... figuratively...) and been reborn anew.
Speedy is finally built, and the basic servo velocity loop
is done and more or less tuned. Further tuning will happen
once it's out and on a course.
I chose to live with the QTI sensors, but other
projects have got me learning how to make my own surface
mount boards. Speedy 2.0 (or whatever my next line follower
is called) will have a custom PCB with custom line sensors.
I finally ditched all my home built transmission ideas in
favor of Solarbotics GM18 gearmotors. They're small,
they're fast (30:1 gear ratio), and the RW2 tires I decided
to use for this project bolt straight on to their 3mm output
shafts. These appear to work well, but they're a little
under-powered. Speedy 2.0 will use 17:1 Maxon motors and a
larger battery.
The CAD work is done and the chassis is made. I wound up
making it out of MDF, which is an utterly underutilized
material. The CAD drawings were printed 1:1, glued onto the
MDF using 3M Super 77, and the parts were cut to the line on
a scroll saw under magnification. Punch and drill press
work finished out all the mounting holes, and an hour's
worth of wood glue and clamps got the frame put together.
Design inspiration came from this:
http://elm-chan.org/works/ltc/report.html
Inspiration for the unrealized target speed of two meters
per second came from:
http://www.robotroom.com/Jet.html
Jet does just over one meter per second, and after watching
too many R/C cars I thought I could better it. But it all
came down to power to weight, and the GM18 motors were a
little too light for the amount of weight it wound up
slinging around.
My first choice in processors was the lighter
Baby-Orangutan, also from Pololu Robotics, but because my
only Baby-O became tasked to another project, and because
all my testing work was done with the Orangutan, it seemed
natural enough simply to mount it and use it as-is.
On the software end, I've been writing a library for the
Pololu Orangutan family of processors, Orangutan-lib. It's
in its 0.3 release now. All the stuff I'd need to do
sensing, dual PID loop, and PWM motor control are already in
the library. No excuses here. If you've got an Orangutan
and want some tools to do something with it, give the
library a look: http://orangutan-lib.sourceforge.net
Back in March 2007 I ran a weight check using my older list
of hardware, and wound up with these numbers:
QTI Sensors - 2g ea x6 = 12g
Battery - 75g ea x1 = 75g
RW2 - 12.2g ea x2 = 24.4g
GM18 - 8.22g ea x2 = 16.44g
Baby-O - 3g ea x1 = 3g
No wires, no headers, no chassis or this that and the other,
but the total weight came to about 130g. Figuring 70 for
the MDF chassis the total should've come in around 200g
(slightly more with the Orangutan).
Using Steve Judd's motor calculator here:
http://tentacle.architeuthis-dux.com/
I get a top speed of 6.2412 MPH (2.79m/s) at 7.4v. It'll
take me 12.3 feet to accelerate to that speed, taking 2.25
seconds to do so.
This squares with what I saw during initial testing. Speedy
2.0 will have more powerful motors.
In the mean time this has been (and is being) a great
project. I've built my first real line follower from
scratch, done my first real Orangutan project, and
finally got to put Orangutan-lib to work on something I can
take around and show people. I'm excited! Now just to tune
it up and make it faster.
12 May 2007 Update -
I bought tape this morning and set up a test track on my
kitchen floor. I also realized the 9V battery I was using
was down to 6V, which explained a lot of the lack of oomph
the motors were putting out. My wife swapped batteries
while I updated my copy of WinAVR and AVRStudio 4. All the
PID tuning I did yesterday is pointless now. It's WAY
faster and WAY WAY twitchier. Too much gain now, not nearly
enough damping, and even at half throttle there's way too
much speed.
I hope to spend some of the day doing loop tuning. If I get
a clean configuration I'll post videos.
15 May 2007 Update -
I had a chance to weigh in: 172g, so lighter than I was
expecting, but still plenty of room to shave weight.
Switching from the Orangutan to the Baby-O could easily save
20g or more. But right now I need the LCD for loop tuning.
I made some changes to the PWM code. One was to switch from
Power/Coast to Power/Brake since the latter gives a more
linear motor speed as a function of PWM duty cycle. I think
these motors have so little internal friction the coast mode
REALLY coasts, making for poor speed control at higher
speeds. I haven't had a chance to see how this pans out.
Another change was to put in a low-pass filter. I used one
I saw on Jim Remington's site, which uses two bitwise shifts
and an integer multiply, so it's pretty cheap when it comes
to code expense. No chance yet to see how this pans out,
either.
The reason is that right before our club meeting I made one
of these changes, and made it so the motors no longer
turned. To be fair, I've got code in there to look at the
signal strength coming off the sensors and either try to run
the motors or not. If the robot finds itself with no line
to follow, or thinks it's been lifted off the surface, it
cuts power to the motors. Unfortunately, all it'll do now
is sit there with power cut to the motors.
So I hope to fix this tonight and test some of the other
changes as well. I hope this leads to a tunable system.
I'd love to see what this thing really does when it's let
loose on a track.
Tom
Description: Line follower
This project has the following developers:
- tbenedict is a Lead Developer.

del.icio.us
Digg
Google bookmark
reddit
Simpy
StumbleUpon
Furl
Newsvine
Technorati
Tailrank