Lab 3: Communicate something with Haply

Goal: Using only haptics to communicate some words

Kattie
4 min readMar 12, 2021

Team member: Unma Desai

Dina is a famous space traveler that uses portals to travel through space. Since Dina is far away and it is very difficult to communicate her sensations, we will convey Dina’s journey and her sensations while traveling through each portal using haptics.

In our haptic simulation, we used the Fisica library and the FBox. The figure below shows what Dina’s simulated space looks like. However, the boxes are hidden for the user and all the user can see is a black space with the labels for each portal. For a wholesome haptic experience and to prevent visual information transfer, we made sure to hide Dina’s avatar when the avatar touches the boxes. However, we realize that there are still some visual components since the user is able to see the world window and Dina.

Initially, we wanted to convey how Dina FELT going through each portal but as the lab progressed, we realized that we can change this to what Dina SENSED. Sensations appeared to be easier to simulate.

Virtual Space Environment

Portal 1 — Danger

The first portal was a very dangerous experience for Dina and she sensed a lot of vibrations. The purpose of our simulated portal was initially to convey a feeling of excitement or nervousness, however, it was changed to the sense of danger. We created this portal using two FBoxes that continuously adjust the position of the avatar, causing a high-frequency vibration. Our testers described this portal as:

“choppy” , “alien invasion” and “warning”.

These descriptions seem to be very close to the original word we had in mind and they all convey a sense of danger. “choppy” and “alien invasion” seem to describe a quality or situation rather than a sensation.

if (s.h_avatar.isTouchingBody(wall2)){
s.h_avatar.adjustPosition(4,0);
}
if (s.h_avatar.isTouchingBody(wall1)){
s.h_avatar.adjustPosition(-4,0);
}

Portal 2 — Stuck

Dina was stuck in one of the portals for a short time, but for human observers, it felt like an eternity!
We simulated this portal using an Fbox that changes the Static property of the avatar. The created effect will hold the avatar in a constant position for 8 seconds and then releases Dina by setting a new position. We also realize that this portal might cause some users to think the program has stopped working. Our testers described this portal as:

“Stuck” and “lost”.

It is interesting that someone described this portal as “lost” because we were also originally thinking about a feeling of being lost in space/life.

if(s.h_avatar.isTouchingBody(wallPortal2)) {
s.h_avatar.setStatic(true); currentMillis = millis();
if (currentMillis — previousMillis > interval) {
s.h_avatar.setStatic(false);
s.h_avatar.setPosition(15,14);
previousMillis=millis(); }
}

Portal 3 — Fast

Dina had a very nice experience in a portal where she was able to travel very quickly and smoothly.
We simulated this portal using an Fbox that adjusts the vertical velocity of the avatar and pushes the end effector downwards. Our testers described this portal as:

“Pushed away” and “rough”.

Perhaps the reason for some ambiguity and the “roughness” description is that if the user tries to get into the portal from the bottom side, they will sense some vibrations. Overall, this portal may not be a great representation of the sensation of moving fast.

if(s.h_avatar.isTouchingBody(wallPortal3)) { s.h_avatar.setVelocity(0,70); }

Portal 4 — Slow

On the other side of space, Dina went through a portal that slowed down her spaceship; It took so long to get to the end and it was as if she was traveling through tick glue.
Initially, we wanted to simulate the feeling of calmness but we settled with “slow”. We simulated this portal using an Fbox with high damping. Our testers described this portal as:

“Chill”, “relax”, “slow”, and “difficult movement”

Some of these words relate to feelings rather than sensations, but again they are very close to our original word and the sensation appears to be conveyed.

if(s.h_avatar.isTouchingBody(wallPortal4)) { s.h_avatar.setDamping(800); }

Portal 5 — Turbulence

In the last portal, Dina experienced some bumps/turbulence (is there turbulence in space?) and she wondered if there is an issue with her spaceship or if there are bumps in the spacetime fabric…
Our testers accurately described this portal as:

“Bumpy”, “tossing”, “grinding” and “churning”.

We created this using some borrowed code from lab 2 and changing the kWall constant to 200. We were surprised at the variation in the description because we were having a hard time coming up with other words that could describe the bumpy sensation at this portal. It is interesting that although this portal also uses vibrations (similar to the first portal), it was not described with a sense of danger. I am guessing the main reason is that the vibrations have a lower frequency.

if (s.h_avatar.isTouchingBody(wallPortal5)){ angles.set(widgetOne.get_device_angles()); posEE.set(widgetOne.get_device_position(angles.array()));
/* haptic wall force calculation */
fWall.set(0, 0);
penWall.set(0, (posWall.y — (posEE.y + rEE)));
if (penWall.y < 0) { fWall = fWall.add(penWall.mult(-kWall)); }
fEE = (fWall.copy()).mult(-1); fEE.set(graphics_to_device(fEE));
/* end haptic wall force calculation */
posEE.set(posEE.copy().mult(175)); }

Reflections

It appears that most testers accurately described the sensations and their description was somehow very close to the word we had in mind. Although each person described the word differently and without using exact synonyms, the “meaning” was conveyed and conserved.

Feelings, in contrast to sensations, appear to be harder to simulate using haptics because a movement can have so many interpretations. Overall, this is my favorite lab and I realized haptics can be very powerful in communicating a sensation or feeling that may be hard to communicate using descriptive language.

Git code

Acknowledgments: Thank you Rubia, Raquel, Preeti, Hannah for testing

--

--