Just a bit of pseudo-code that shows the state transitions in our trauma bear project.
start *random -> convulse_cardio -> convulse_flatline -> convulse_gi convulse_cardio *time < 20 && comp >= 6 && accel. == BACK -> stable *else -> death convulse_flatline *time > 10 -> any_touch convulse_gi *time > 5 -> shallow_vital stable *time > 10 && accel. < error_movement -> well *else -> need_more_comps dead *reset_button == HIGH -> start well *reset_button == HIGH -> start shallow_vitals *accel. == SIDE && time < 15 -> ready_to_intubate *intubated == HIGH && time < 15 -> tube_convulse *else -> death need_more_comps *time < 20 && comp >= 6 && accel. == BACK -> stable *time < 20 -> need_air *else -> death need_air *intubated == HIGH && pumps >= 6 && time < 20 -> stable *else -> death flatline *flatline_total < 3 && paddles_applied && time < 20 -> paddled *else -> death tube_convulse *intubated == LOW && time < 15 -> shallow_vitals *else -> death ready_to_intubate *intubated == HIGH && time < 15 -> intubated *else -> death intubated *accel. < error_movement && time > 10 -> well paddled *random -> needs_air -> flatline -> well any_touch *time < 20 && accel. > error_movement -> flatline *time >= 20 -> death
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:
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.
For our initial assignment, we were tasked to build devices that communicated to the users via their sense of touch.
My group in studio was assigned to investigate touch interfaces by digging into vibrating motors, timed stimulus, and other odd bits of perception. The results of our work are detailed here.
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:
Copyright Mike Edwards 2006-2009. All content available under the Creative Commons Attribution ShareAlike license, unless otherwise noted.