Project info for Speedy

Share This Created 21 Aug 2006 at 22:47 UTC by tbenedict, last modified 16 May 2007 at 02:58 UTC by tbenedict.



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: Inspiration for the unrealized target speed of two meters per second came from: 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: 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: 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:

Share this page