Here is the Arduino code (see attachment) for the three haptics projects we made this week. Not exactly pretty production code, but good enough to start hacking around with. The key pieces are the timings and intensities, so pay special attention to those.
You'll also need to uncomment the various function calls in the loop() to make different projects work. They should be self-explanatory, be give me a holler if you run into issues. You can leave comments on this post by logging in with your A server name and password.
By far our strangest interface, the haptic helmet creates the feeling of shooting out the top of your head, as if you yourself were the player's shapeship in Galaga.
One vibrating motor is positioned in a knit cap at the base of the skull. A second one is place farther up on the head. By tweaking the timings and intensity, based on our original shooter interface, the user gets the feeling of a pulse travelling up from the back of his or her head.
As icing on this strange little cake, we put our big, custom-made rumbler in this helmet, which fits over the top of the knit cap. The low-frequency shaking adds just the right kind of touch to the shooting effect--it really rattles you a little bit.
Personally, I don't fit into the helmet. My noggin is huge. But for someone with a skull a few sizes smaller than mine, I can see this being a lot of fun. It's definitely very trippy.
The haptic bear we built has a beating heart and breathing lungs. The heart is a vibrating disc motor that pulses in the familiar rhythm. The lungs are a servo with an arm that pushes on a metal plate in the chest cavity.
The video doesn't really do him justice, but he is incredibly cute, despite his recent surgery:
We extended our haptic paddle to use three motors. The code now times the pulses between the three and randomly picks one of five points to hit. If it hits on the extreme of one side, the first motor fires, then the middle, than the one on the opposite end. The intensity reduces, too. If it's only slightly to one side, the side and middle fire at once, with reduced intensity, and then the far side fires. If the middle is the target, it fires at full intensity, then the two ends fire.
Cursory user testing has revealed some interesting results:
So, I tend to blog about DT-related stuff only here, but I used to blog politics all the time, the bug has never left me.
Today one of the top stories on CNN.com is all about Al Gore's power bill. It's high. Like 20 times that of average Americans. Gracious me! That's terrible! What a hypocrite! We should immediately disregard every word this man has ever uttered about the environment!
Heh. So, this news was brought to us by the Tennessee Center for Policy Research. "The wha?" you ask. Right. Never heard of it before, and you'll likely never hear from it again, at least until the next smear on Gore. I mean, come on, how great a need is there for a think tank researching Tennessee policy? That is, if raising a shitstorm about Al Gore's power bill can be called policy research.
Lots of good progress today on the haptics project. Cicek covers the "heartbeat" and "shotgun" assignments, complete with video.
The heartbeat is fairly straightforward. The Arduino kicks out two 50ms bursts of the vibrators motors separated by 10ms, followed by a 500ms pause. The second burst is at 75 percent of the duty cycle coming off the PWM. It's eerily effective.
The shooter took us a while to perfect, but I think we've got a good one. The best way to see what we've done with it is to check the source code (attached below,) but the gist of it is that we start off with a heavy vibration from both the mini-vibrating motor (in the grip) and our custom-built macro-vibrating motor. The latter is a generic DC motor with an offset weight hot-glued to the shaft contained inside the top of an old spray can and attached to the area where the "bolt" would be on a rifle. Then we added another pulse from another mini located downrange on the barrel. By tweaking the timings, you get a fairly good sense of the gun kicking when you hit the cute red trigger.
Meetings make us dumber, study shows - LiveScience - MSNBC.com - I knew it! [My del.icio.us]
Yes, it's true. Meetings make us dumb. Or, at least, less creative. And yet, we're a collaborative species. So, what's the best way to combine work and still keep people's creative instincts intact? That answer to that is probably worth several million dollars.
Bluetooth is a wireless protocol for sending serial data over the air. It was named after Harald I of Denmark. In fact, the symbol for Bluetooth consists of the runes for that king's name.
In order to put a project together, you'll need the following resources:
Just to note a couple of blogs that my friends write. First off is my buddy Ravi, who is blogging about the barrel of wine we're making in beautiful Jersey City, New Jersey. It's still young, but it's getting pretty damn good. Plus, I'll be up to my neck in cheap hooch for the rest of next year. Woo!
Also, this being the Year of the Pig, my pal John (who is an amazing artist) is tracking his progress over the next year to create the perfect short ribs recipe--as well as any other porcine production he comes up with.
As Inti Einhorn mentioned in his presentation (which was great, man--I've had several conversations based on it in just the past couple of days,) getting the Wii to work requires training. That'll be true of anything we build, too, especially w/r/t anything gestural.
With that in mind, I would strongly recommend that we look into neural networks as a way to train the machines. It sounds a little intimidating, but it really isn't. In fact, it ties in very closely to the reading about logic gates we've been doing so far.
IBM has a pretty good introduction to NN. In particular, read Threshold logic units (TLUs) and How a TLU Learns. The rest is pretty math heavy--though it's still good reading, if you're up for it. You can recreate AND, OR, XOR, etc. gates using neural networks pretty easily.
Copyright Mike Edwards 2006-2009. All content available under the Creative Commons Attribution ShareAlike license, unless otherwise noted.