With yet another generation of game consoles on the horzion, what on earth will we do with all of previous consoles? Now backlogged by two generations, the good ol' Nintendo Gamecube sits patienty in many closets. I decided that it deserved some fresh air, so I took mine apart and turned it into a robot.
Hmm, by robot, this Gamecube Bot is actually slightly more of an rc toy than a robot in its current state. However, featuring a differential drivetrain, it's just begging for great research to be done with it!
Design a high-end research-worthy robot platform on-the-cheap? Challenge accepted. As many of us bot-designers over at Harvey Mudd College are learning, designing a drive train transmission takes time. Why? For us, our biggest hump was choosing the gears needed for an acceptable gear ratio. With brushless motors revving up to 10000[rpm], a transmission is vital to slow down that motor to an acceptable driving speed.
Choosing each gear separately from a supplier like McMaster-Carr or SDP-SI can send us digging deep into our wallets. The solution? Find an already-existing set of gears. In our case, a few of us have found that the HS-815/805BB servo replacement gears work shockingly well as a full transmission for 8-to-12[lb] differential-drive bots. (I owe this trick to JB at the Secret Underwater Base / Machine Shop, who gave it a shot first and sent me the gear CAD files!)
This is my first shot at seriously working with gears, apart from the classic LEGOs of my past. The main principles are like so:
Gears mesh at the imaginary circles called their pitch circles, a property derived from tooth count and pitch.
To make the gear stage shape a bit easier to design, I created a Solidworks Assembly using the gear files. I resized them to their pitch diameters and mated them tangent to each other so that I could freely position them while ensuring that each stage touched the next. (One quick note: I actually made the gears a wee-bit bigger than their pitch diameters, adding some backlash, to permit the gears to spin more smoothly.)
The pinion gear was a bit tricky to find. The servo replacement gears are metric, and finding metric pinion gears with the right inner shaft diameter became another hunting game that I didn't want to play--especially if I happened to find the right gear from a limited line of one vendor's rc car. Luckily, 64-pitch US gears can mate with their metric cousins of comparable pitch, a feature that expanded the gear-selection wide enough to find the right pinion gear.
To prep the gears for continuous rotation, I had to clip off the limiting nylon tab feature on the output gear with the spline feature. Taking a great tip from JB once more, hot tweezers did the trick just fine.
Once again, in choosing wheels, I opted not to rip wheels out of a vendor-specific rc car. Since LEGO wheels will (hopefully!) be around for years to come, I designed hubs around a set of four 56145 LEGO Technic wheels from my old sets. (There's something special about using the old LEGO Mindstorms wheels on a bold new robot!) An aluminum hub and 32-pitch gear from servocity.com sandwich the wheel together (held together wih long 4-40 button-head screws).
To ensure that the CAD files for the gear offsets would work, I made a quick test-plate with matching gear offets in the actual design. I was fortunate to catch small misalignment errors here, rather than in the actual part.
My first shot at press-fitting the servo gear shafts resulted in a crooked pin. Consequently, I made a second thicker plate with matching offsets but slip-fit holes to hold the pins as I press-fit them into the frame.
Once the two transmissions were created (correctly this time!), I zippy-tied them together with a steel plate from an old hard drive. (Ah, having a scrap pile is a lovely thing!) Following the crude assembly, we spun some initial outdoor tests:
The differential drive train is driven with two brushless motors, one per side. Each of these brushless motors is driven by a brushless motor controller that accepts PWM input signals from the rc receiver. Since each motor is controlled by a separate channel, these channels must be mapped to a control-stick scheme that makes sense; otherwise, the controls are offset by 45-degrees, making the driving experience a bit strange. Rather than remapping the channel output signals with an embedded board like an Arduino, it's much cheaper to place in a V-tail mixer cable between the two channels. (They're only $3.) (The video above is actually before I snagged a mixer.)
I'm thrilled that the srg-transmission works so well, and I'd really encourage others to take the leap! With some more effort, I'm convinced that a cheaper laser-cuttable edition is on its way in the near future. For the budding Arduino hobbyist, this could be the beginning of an awesome new development platform with brushless motors. Alas, only time will tell. Finally, now that I've got a hardware platform to work with outside the labs, I'd like to give some budget mouse odometry a shot to see how well I can get it to track it's position for future state-estimation projects.