Haptic Experiments
Lucas November 4, 2018 November 4, 2018 Haptics, ITP
Over the course of a weekend, I received a crash course in haptic interactions. As a part of that experience, we were asked to experiment with a few different haptic mechanisms and record our findings.
Haptic feedback or haptic interaction works with the sense of touch. Whereas most computer interfaces rely on a monitor to convey visual information through pixels and light, haptic interfaces are quite varied. At the moment, the most common element of a haptic interface is a vibrating motor. These are how cell phones notify users of incoming notifications while in silent mode. They are also the way the video game controllers provide "force-feedback." Recently, Apple has begun to use advanced versions of these motors in their laptops, iPhones, and tablets to provide users with the illusion that they are using functioning buttons instead of touch-capacitive non-moving pieces of glass. This is all to say that haptic devices are growing in ubiquity and sophistication.
During our weekend session, we ran a number of experiments looking into how to work with this powerful tool. The main motor we used was an eccentric rotating mass (ERM) motor. This means that they have an unbalanced mass attached to the axel of the motor so that when it rotates, it can be felt moving.
An exploded ERM pancake motor
Working with Nick Wallace, I set out to gain a better understanding of how haptics might be utilized in future projects.
Our Arduino board connected to an ERM motor and potentiometer
One ERM Motor
Beginning with a single ERM motor, we began a series of simple experiments to familiarize ourselves with its strengths, weaknesses, and unique qualities.
Our first test was simply to observe and record our reactions to a motor turning on and turning off. The particular Arduino code we used was repurposed from their famous Blink Test code. Our main takeaway from this was that haptic feedback mechanisms need, perhaps more than other feedback mechanisms, to feel organic. Otherwise, the sensation will be jarring and unpleasant.
Our first response was to lower the intensity of the motor. This made it less unpleasant, but it still felt jarring. Nick then adapted the code to gradually increase the intensity of the motor to a peak and drop it completely not unlike a sawtooth wave. This was certainly less unpleasant, but the exact moment the motor began turning on was hard to pinpoint. This would make an accurate reading of the vibrations difficult. A balance between the simple on/off and easing in should be achieved.
Our final test with the single motor used a potentiometer to give us direct control of the intensity of the motor. This helped us to understand the way that an "envelope" in audio parlance could be customized to create a very specific effect. A steep attack slope could be very surprising. Gentle attacks and releases with a long sustain could be very calming.
The Haptic Motor Controller
This little device is a board made by Adafruit that has a built-in library of effects. These effects are essentially customized envelopes that someone has tweaked and tuned and given verbal names to. Using this library we made a haptic representation of Nick's day last Friday. Without getting into the details, Nick's happiness of the day basically followed this graph:
Nick had a roller coaster of a day!
This was roughly translated into the following effects:
89: Transition ramp up long sharp 2 — 0 to 100%
1: Strong click — 100%
94: Transition ramp down long smooth 1 — 50 to 0%
44: Long double sharp tick 1 — 100%
83: Transition ramp up long smooth 2 — 0 to 100%
100: Transition ramp down long sharp 1 — 50 to 0%
0: End
We had to tweak it a few times, but we eventually got it to feel fairly accurate. In a broader sense, however, we as haptic users may need to develop a more sophisticated approach to reading vibrations.
Motor Arrays
Our final experiment explored the use of motor arrays. Wiring up multiple motors provided fresh opportunities and fresh challenges to work with. Nick and I used three motors to try and replicate the sensation of a wave of vibrations. Unlike the way that our eyes track movement across pixels and frames, our sensitivity to touch appears to work very differently. A few parameters that needed additional exploration were as follows:
Spacing: the motors felt uniform when too close and felt unrelated when too far. We found a spacing of about 1 every 1/2″ seemed about right.
Timing: If the motors each turned on and off without any overlap, it would be read as three unrelated events. I even felt as though there was a gap in time between the former motor turning off and the latter motor turning on even though there wasn't.
Envelope: We found that tweaking the envelope helped in regard to imitate the feeling of there being a motor in the gaps between motors. About 150ms of overlap did the trick. This helped to create the impression that the vibration was gliding across the skin instead of each motor vibrating separately. It also removed the "time gap" feeling I had encountered.
Its clear to me after this experience that touch and haptic feedback are powerful tools in the realm of interactivity. What has been done in the past feels like initial explorations in a very deep and unexplored realm. Even with a simple ERM motor, a great deal of information can be transmitted. However, we as users will also need to learn a new language of interactivity if we hope to fully exploit this fertile domain.
arduino, ERM motor
Previous Brutalist Architecture by a DCGAN
Next Bio-Feedback Meditation Bracer: Process