Quote:
Originally Posted by 548swimmer
|
First let me say that I dearly love XKCD and Randal Munroe. But he got it wrong. Just take a good look at those "omni wheels". They're mecanum...
I've been looking into making a drive train I recently read about in Servo magazine: Melty Brain. Basically, it's an effectively holonomic robot (overall it is, but instantaneous moments it isn't) that can be driven with only one wheel and one motor, but you can technically use as many wheels and motors as you want if you've got a fast enough processor. This site has a good explanation:
http://www.spambutcher.com/meltyb.html
I want to preface this description with the note that this drive train is absolutely terrifying, but if it's crowds you want, then crowds you'll have. The robot spins up really fast in a circle (no gear reduction on the wheels, in fact depending on wheel diameter, the CIM's might be a little slow) using the motor[s], and very precise timing allows you to vary the motor speed at specific points in the circle to effect a net vector that allows the robot to move around. If you think of it in terms of a polar graph, to go forward, you'e have a base speed, at 0, the motor would be going faster than that base speed, at PI/2 and 3PI/2, the motor would be spinning at the base speed, and at PI, the motor would be slower than base speed.
This is a fairly easy drive train to build (although it's harder with the size of robot you're building, you have to make sure the center of mass is relatively stable and all of your frame connections are very solid, otherwise the robot might try to rip itself apart). The hard part of this type of drive train is the code. You have to have either one accelerometer and know its radius away from the center of mass (the axis of rotation), or two accelerometers inline and know the distance apart (I like that one because it means you can change batteries without necessarily recalibrating). You measure the centripetal acceleration with the accelerometers, and with the radius information, you can figure out angular velocity. You effectively integrate that (multiply the calculated angular velocity in one loop by the amount of time between loops, then do it again next time and keep a running sum), and you'll end up with your angle. The angle is used to calculate wheel speed. The motor control is very simple, and can in fact be done with a PWM-capable pin and a large Darlington transistor or power transistor and a gate driver (the Darlington transistor is usually used because you can pick one up at Fry's for under $5).
I'd suggest making a small one (at least at first, probably a good size to keep it though) out of a small piece of 1/4" Lexan or plywood and a Fisher-Price motor and a Lite-Flite or equivalent high-traction wheel, and seeing how it goes before you think about moving up to anything bigger and more dangerous. It's been done before, but all for antweight (and one beetleweight) combat robots, so it would be cool to see what you guys come up with to do with it. An idea I had was to use a line of LED's and write messages in the air while it's spinning, but there are probably lots of other things you could do with it.