Make the Future You Imagined: The Power Glove -- 20th Anniversary Edition

I always loved the Nintendo Power Glove. Not because it was a fun or useful peripheral -- it wasn't. In fact it wasn't bad, as Lucas asserted, it was absolutely terrible. Only two games were ever made to work with it -- Super Glove Ball and Bad Street Brawler. You could use it with other NES games of course, but it was just an obfuscated controller. Plus, it was horribly imprecise, and since it required a sensor bar to find its orientation, you had to hold your hand at shoulder level all the time. No, I loved the Power Glove for what it represented -- a precursor to virtual reality, a way for humans to directly manipulate computers, like an artifact from some sort of alternate future Earth.

I realized one day that we're actually living in that future. It doesn't look the same as we imagined it, but the necessary elements are all there. It's been 20 years now since Mattel released the Power Glove, in 1989. Especially in the last few years, the availability of sophisticated sensing equipment to hardware hackers has grown by leaps and bounds. Technology like programmable microcontrollers, accelerometers, and Bluetooth are readily available -- and cheap. In short, the time is ripe to re-make the Power Glove -- and make it right.

Over the past month, I've done just that. I stripped the guts out of an original Power Glove, replaced the ultrasonic sensors with an accelerometer, the proprietary microcontroller with an open-source Arduino, and the wired connection with Bluetooth. I wrote an input manager to get the data into Unity, and hooked it up to the boxing game Adam and I are making for iPhone, Touch KO. What's more, I've documented the whole process so that you can make you own!

I have a video, photos, and an instructable of the build process, and have the schematic, Arduino, and Unity code available for download. You can read the data in any way you like, but since many software packages don't have direct access to serial ports (Unity included), I've also written a small Java program that takes the input and dumps it directly to a text file.

Side note: Since my last post I tried and now totally dig twitter. Follow me.

23 Responses to “Make the Future You Imagined: The Power Glove -- 20th Anniversary Edition”

  1. Power Glove 20th anniversary edition - Hack a Day Says:

    [...] an original Power Glove, a bluetooth module, an Arduino, and an accelerometer, [Biphenyl] brought the system up to date. As you can see in the video above, the new version is wireless and much more useful in the games. [...]

  2. greg Says:

    you are an incredible badass. Celebrate by watching The Wizard: http://www.youtube.com/watch?v=NT6zfPC3sDk

  3. Hesham Saad Says:

    dude nice hack but i wonder if you have good knowledge of dealing with accelerometers since am doing a project involving position detection using accelerometers attached to the same mass do you have any idea or even resources regarding this and btw it's good that some people still remember the power glove.

  4. biphenyl Says:

    @greg: Haha thanks dude!

    @Hesham What exactly are you wanting to do with them? Accelerometers tend to work really well for measuring orientation (ie which direction the ground is) and, of course, detecting changes in movement.

    If you need to detect rotation, gyros are the way to go, and if you want to measure distances to objects, you can use ultrasonic proximity sensors. For absolute position, you're pretty much limited to GPS.

  5. Jerry Says:

    Awesome hack Dude!!

    I was one of the early 90's power glove hackers, hooking it up to Rend386 - a 3d rendering system for Intel 386/486 boxes under DOS. We made a double headed one that allowed us to have two (right hand) gloves on one PC, and another app that allowed us to shake hands over a modem connection - cross country telepresence.

    The ultra-sonic was always a pain-- jingle a set of keys nearby and it goes wild. The bend sensors were better, but not very accurate. there was a commercial PC glove a few years ago that tried it again - without much success.

    I've still got those powergloves (and some of the black carrying cases) in my junk piles... probably got my old 486 in there too. I'm gonna have to pull them out and try your mod! I'm doing Mac based flight-sim/control work these days so a bluetooth controller like this could be cool. Maybe hacking that other glove too.

    Thanks for inspiration!

    Jerry

  6. dave Says:

    awesome, we need more creative projects like this out there. A++ plus a bonus for recycling!

  7. sonictail Says:

    Man, that is brilliant. If only I could find a power glove!

  8. Rick Myers Says:

    Amazing!!! I also did the old DOS hack of the Power Glove, but I think I recall using the parallel port (maybe that was just for power)... We actually set it up at a smart bar (anyone remember smart bars?) in Cleveland and let people do some primitive grafitti with it... But it was a finicky pain in the arse to keep running...

    This is what we wanted to do! Elegant solution... I'm digging my PG out today!!!!

    Thank you for saving one of my favorite artifacts!!!

  9. Ilya Says:

    Excellent work. I did a pretty rudimentary 3D positioning project a while ago and didn't have the cash to drop on the 3-axis accelerometers, because they were pretty expensive back then.

    Let me ask you a question though. How is it that you managed to get a 3-axis linear accelerometer to distinguish between static gravitational force and dynamic translational force? In other words, how did you get it to distinguish tilt from motion? From what I understand, tilt would just be represented by an offset, but then how do you tell if the glove is both tilting and accelerating, which doesn't seem like an unlikely scenario?

    If you used some sort of website or published paper to figure this out, I would really appreciate a link. If not, even a rough description would be much appreciated.

  10. biphenyl Says:

    Thanks for the kind words folks: The old serial/parallel port hacks were a big inspiration -- I remember seeing a few of them back in the early 90's and thought they were fantastically cool!

    @Ilya -- Basically, I do some very simple filtering on the accelerometer data. It's just a simple linear interpolation between the accel vector last frame and the accel vector this frame. So for instance:
    filteredAccel = Vector3.Lerp(newAccel, filteredAccel, 0.25);
    This is essentially a low-pass filter and will smooth out the signal for the acceleration (tilt) vector. You can adjust the lerp scalar to favor either the old filtered value (the filtered value will lag a bit) or the new accel value (the filtered value will be more noisy and jump around).
    To get the dynamic movement, I just find the jerk (acceleration change per unit time). So like:
    jerk = (newAccel - oldAccel)/(thisFrameTime - lastFrameTime);

    This isn't perfect, or even the best way to filter, but it's easy. For instance, let's say you have a high-magnitude acceleration, like a very fast straight punch. At the beginning and end, your tilt vector will probably be tilted slightly forward or backward, even though the hand isn't. That's because the acceleration vector forward/backward from the punch is very high magnitude compared to that of gravity.

    For a more complex, but better way to filter that will get you smoothed acceleration AND jerk, google Kalman Filter.

  11. ryan Says:

    matt, just curious but what program do you use to create your schematics? they are really clean and organized.

  12. biphenyl Says:

    @ryan -- I used Adobe Illustrator, with the grid turned on. Obviously no simulation, but I didn't need that for a sensing application like this. There's a really good circuit symbol library for Illustrator here. I still had to create the board symbols myself, but they're very simple rectangles and circles. The whole thing took me about 3-4 hours, and I wouldn't say I'm an Illustrator expert by any means.

  13. Ilya Says:

    Sigh... I leave school for a year and a half and work at a place where I don't use most of what I've learned and I forget basic data acquisition techniques. Thank you very much. You just jostled my memory enough to give me a reason to start serious work on a few projects that I've been thinking about for a long time.

  14. James Says:

    You are my hero.

  15. biphenyl Says:

    @James -- Haha, thanks!
    @Ilya -- Excellent! I'm glad I was of some help, and I'd love to see what you come up with!

  16. Robot_Overlord Says:

    This has to be one of the most innovative ways to remake a failed device. Good work!

  17. Ryan Says:

    Matt, is there a reason you used a physical pull-down resistor for the bend sensors instead of the Arduinos internal pull-down resistors? I'm just curious. Also, I noticed you used the MUX in reverse fashion, have you have any issues with the MUX running with reverse current? I am building a similar project and got somewhat confused when I saw that you fed the SIG pin with the 3.3V and used the inputs as outputs instead.

  18. Ryan Says:

    Oops, just realized the Arduino only has internal pull-up resistors, my bad.

  19. biphenyl Says:

    @Robot_Overlord -- Thanks!
    @Ryan
    Right -- only pull-up resistors in the Arduino, hence the physical one.
    I've had no problems at all using the MUX as a DeMUX -- it seems to work swimmingly both ways. The only caveat is that you can't feed it voltages higher than its VCC (though that was true both directions).

    The MUX ended up being slightly superfluous, as I originally thought the bend sensors had a common input and separate outputs. That would have put me over the number of analog inputs on the Arduino, so I got the MUX. Since it turned out to actually be the other way around, I could have just used 4 digital outputs on the Arduino, but doing it this way did mean using fewer wires through the main bundle (though more in the palm housing).

  20. kenny Says:

    hey biphenyl i was wondering if i dont want the finger controls, can i completly remove that curcuit? i wanted to add LEDS where the sonic controls were. to use with Johnny Chung Lees wii projects as a multi controler

  21. Mike Cline Says:

    Absolutely awesome post. I dabble in hardware devices and literally just received my old powerglove (had my grandmother dig it out of storage boxes up north) as I had the idea of turning it into a theremin-like musical device. I started searching to see who else out there had a love for the old glove and stumbled across your video.

    I couldn't agree more with your quote: "No, I loved the Power Glove for what it represented -- a precursor to virtual reality, a way for humans to directly manipulate computers, like an artifact from some sort of alternate future Earth."

  22. mark429 Says:

    Man good work! I remember wiring up my PG to a parallel port and playing volleyball in REND386 following the guide out of PCVR back in the 90's. You've totally brought the PG to a new level of awesome. Eat your heart out Wii. =)

  23. Jeff Says:

    a project i am doing would require to have both a left and right glove where would i find a left one

Leave a Reply


GENERIC ANTABUSEVENTOLIN SIDE EFFECTSRevia