Virtual reality experience

This was my second experience with VR, and it largely  overshadowed the first one. It was awesome! I especially enjoyed being part of this fantasy world. Being able to easily switch from one world to another was incredible…

At the very beginning it took me some time to figure out how to start the application (the lab). I didn’t know I had to approach the control to the “start” button in the podium (not sure if this is the correct name) and then pull the trigger (or press the circular button, I don’t remember which one was it). However, now that I think about this it was probably the most intuitive thing to do.

Once in the lab I wanted to visit all the different places (or experiences) available. It took me a bit to realize that the best way to move around the lab was using the teleportation option. At first I wanted to move around as I would do in real life, but as you can imagine I hit a wall and some furniture.

The first thing that caught my attention in the lab was the old tree. Once I approached it I was not sure about what I had to do, but Noura told me I should grab the sphere and bring it to my face (without her help I’m not sure whether I would have figured it out by myself) I LOVED to be inside this old cabin with magical objects (in my head I was in the house of a wizard). It was great to suddenly be in this fantasy world.

The other experience that I liked a lot was visiting the solar system. Even though I have been told and read about the relative size of the planets, it was impressive to see how small the Earth is compered to the Sun, Saturn and Jupiter. I was there! I could see it. Being able to grab the planets with my hands was a nice detail, I even put Saturn on my head! While I was interacting with the planets I couldn’t help to think that  VR has a lot of potential in education.

I also liked playing with the robot-dog. Petting him, and scratching its tummy (or trying to) made me happy. I thought about my pets back in Ecuador. To be honest I didn’t think I was going to feel this kind of “connection” with a virtual entity. However, now that I reflect about this it makes me feel weird and a bit afraid.

Relate to the interaction with the dog, I think the experience could have been improved by providing some sort of haptic feedback. It was strange to pet it and feel nothing (having my hand going through it was ‘upsetting‘). Also, having a different kind of controls (like gloves) would help to make the experience more natural.

Finally, I completely agree with something that was mentioned in the article from Wired: the transition from the virtual to the real world might be difficult. I really wanted to stay in this parallel world longer. Once I took off the equipment, and realize that I was in this “boring” room, I felt disoriented and maybe even a bit sad (“I’m back to the real world”). I needed some seconds to be fully back. Although I’m well aware it might have been the excitement of the novelty, I can’t help to feel troubled. What if people actually prefer this other world? What if people get so hooked that forget about reality, and the valuable connection with real animals and people?

Crawler frog

Description

For this project I used a servo motor and an old tape dispenser. Once I got the project working well I decided to improve its aesthetics. Since the tape dispenser was green I decided to convert it into a frog. Nevertheless, it seems that now it looks cute but it doesn’t work as it should. Probably I’ll have to remove the green paper and test it again tomorrow.

Components

  • 1 Arduino Uno
  • 1 Futaba Servo Motor
  • 1 battery holder
  • 2 rubber bands
  • 1 pot
  • Jumper Wires
  • 1 bread board
  • 1 old plastic tape dispenser
  • Green paper

Code

int servoPin = 7; // Control pin for servo motor
int potPin = A0; // select the input pin for the potentiometer

int pulseWidth = 0; // Amount to pulse the servo
long lastPulse = 0; // the time in millisecs of the last pulse
int refreshTime = 20; // the time in millisecs needed in between pulses
int val; // variable used to store data from potentiometer

int minPulse = 500; // minimum pulse width

void setup() {
pinMode(servoPin, OUTPUT); // Set servo pin as an output pin
pulseWidth = minPulse; // Set the motor position to the minimum
Serial.begin(9600); // connect to the serial port
Serial.println(“servo_serial_better ready”);
}

void loop() {
val = analogRead(potPin); // read the value from the sensor, between 0 – 1024

if (val > 0 && val <= 999 ) {
pulseWidth = val*2 + minPulse; // convert angle to microseconds

Serial.print(“moving servo to “);
Serial.println(pulseWidth,DEC);

}
updateServo(); // update servo position
}

// called every loop().
void updateServo() {
// pulse the servo again if the refresh time (20 ms) has passed:
if (millis() – lastPulse >= refreshTime) {
digitalWrite(servoPin, HIGH); // Turn the motor on
delayMicroseconds(pulseWidth); // Length of the pulse sets the motor position
digitalWrite(servoPin, LOW); // Turn the motor off
lastPulse = millis(); // save the time of the last pulse
}
}

Bow – wow water!

Components:

  • 1x 10KΩ resistor
  • 2 nails
  • 1 DC motor
  • 2x AA batteries
  • Battery holder
  • Wire
  • Jumper wires
  • USB cable
  • Computer
  • Arduino Uno
  • Breadboard
  • Cardboard, pieces of wood, hot glue gun, cork

Description

For this week’s project I made a dog that will let me know when my plants need water.

When the soil is dry, Pantufla (the dog), will alert me by moving her tail, and moving. Once the soil gets wet, she will stop moving. To detect the level of the moisture I made a very low fidelity sensor using two nails.

Code

int sensorPin = A0;   // select the input pin for the potentiometer
int motorPin = 9; // select the pin for the Motor
int val = 0;      // variable to store the value coming from the sensor
int sensibility=600;

void setup() {
Serial.begin(9600);
pinMode(motorPin, OUTPUT);   // sets the pin as output
Serial.println(“Welcome to the Bow wow water project”);
}

void loop() {
val = analogRead(sensorPin);    // read the value from the sensor, between 0 – 1024
Serial.println(val);
if (val <= sensibility){
analogWrite(motorPin, 0); // analogWrite can be between 0-255
}
else
{
analogWrite(motorPin, val/4); // analogWrite can be between 0-255
}
}

20161011_193140

For the last two weeks I’ve been “hunting” thoughtless acts. It has been very fun experience because I had to pay close attention to details that I usually don’t even notice (it turns they are everywhere!)  I was able to capture some of them with my camera… others were difficult to capture because they happened to fast, or because I was too shy to take a picture.

While I was in the BART I noticed that the woman sitting in front of me used the space between her seat and the wall of the train to put her bottle of water. She did it almost automatically, not paying much attention to it. She never stopped talking to her husband/boyfriend. The bottle of water was always in a good position (i.e., vertical), it was easily accessible at all times, and neither grabbing it or putting it back required much effort (the rigidity of the wall combined with the softness of the seat provided ideal conditions for the temporal “storage” of the bottle).

20161007_185849

During the same ride, a woman used her purse as a platform to rest her arm, and then she rested her head on her hand. It seems that in this way she found a good solution to rest and keep her purse safe at the same time.

20161007_191848

In the next picture (man in the back) we can see how the young man has tied his jacket on the strap of his backpack. By having this piece of clothing on the exterior of the backpack, he can easily reach to it whenever he wants to. Additionally, tying it guarantees that he won’t lose it.

20161007_190754

Another interesting thing I noticed just when I was getting off (so I was not able to take a picture) was a boy using his skateboard as a seat. Since all seats were taken, he was taking advantage of the affordances of his skateboard, and also of the availability of space in the “standing” area.

Now, I must confess that I’m struggling a bit with the second point of this task (possible physical and/or virtual design solution). The common thread of all this pictures (and in general of all the thoughtless acts I’ve identified) is multi-functionality (it doesn’t matter if we are talking about a human made object (seat, purse, skateboard, books, etc.) or parts of the body (mouth, hands, arms, legs, etc.) This has made me reflect about how could we design objects that have different purposes taking full advantage of  their affordances.

Colorful sounds!

Components: 7 LDRs 7 x 10KΩ resists Jumper wires USB cable Computer Arduino Uno Breadboard Description For a while now I have been wanting to combine sounds and colors, so this assignment was the perfect opportunity to do so. I … Continue reading

Sip of conflict

I’m not sure if this example will follow under the category of “industrial design” but it really helped me to look at things differently. Probably some of you are familiar with an iconic exhibit from the Exploratorium, “Sip of conflict”, where visitors are prompted to drink from a water fountain fashioned from an actual (but unused) toilet. The intention of the exhibit is to experience the tension between reason and emotion. What is wrong with drinking water from this fountain? How much does it matter its shape when you know for sure it is as clean as any other water fountain? I have some friends who were not able to do it. They were simply disgusted by the idea, and even watching me doing it made them feel uncomfortable. I feel this goes along with the point made by Sanders where she states that “experience is a constructive activity”, and Buchenau’s et al. assertion that “The experience of even simple artifacts does not exist in a vacuum but, rather, in dynamic relationship with other people, places and objects.” If I would have been by myself at the Exploratorium I might have struggled a little bit with myself before drinking the water, but being with my friends added a whole new level to the experience.

Additionally, “Sip of conflict” helped me to: a) be more aware of the psychological barriers that we impose on ourselves, and how hard it can be to overcome them (even with the help of logic), and b) rethink my assumptions about design (since there are no rules to be followed).

I believe this exhibit to be a very good example of inviting visitors to look at everyday objects in a different way, and challenging our presumptions and relationships with them (precisely the goal of the exhibit “Strangely familiar”).

Fit your backpack

Components:

  • 1 pot
  • 1 FSR
  • 1x 10KΩ resistor
  • 1x 220Ω resistor
  • jumper wires
  • USB cable
  • computer
  • Arduino Uno
  • Breadboard

Description

I created a program that lets you know if the weight of your backpack is well distributed among your two shoulders. In theory I should use  two FSR, one in each strap. However, since I only have one I am simulating one of them by using a POT.

The two analog signals are acquired by using the Arduino’s ADC, and then they are compared. The result of the comparison is sent to the computer via serial communication, and this information is used to show a graphical depiction of the situation.

Arduino code


int sensorF = A0; // select the input pin for the FSR
int sensorP = A1; // select the input pin for the POT

void setup() {
// declare the ledPin as an OUTPUT:

Serial.begin(9600); // Sets the data rate in bits per second (baud) for serial data transmission.
Serial.println(“WELCOME to the Sensor lab!”);
Serial.print(‘n’);
// analogWrite(redPin, 0);
// analogWrite(bluePin, 0);
// analogWrite(greenPin, 0);
}

void loop() {
int PotValue=0;
int FSRValue=0;
int x=0;
// read the values from the sensors:
PotValue = analogRead(sensorP);
FSRValue = analogRead(sensorF);
x = PotValue – FSRValue;

if (x > -265 && x < 256)
//Serial.println(“Igual”);
Serial.println(0);
else if (x > -265)
//Serial.println(“Izquierda”);
Serial.println(-1);
else
//Serial.println(“Derecha”);
Serial.println(1);

/* Serial.println(FSRValue);
Serial.print(“POT: “);
Serial.println(PotValue);
delay(1000); */
}

Processing code


import processing.serial.*; // Import the library for the serial communication. Serial library reads and writes data to and from external devices one byte at a time.
String portname = “COM4”; // or “COM5” //Providing the name of the serial port.
Serial port; //Creating an object (called “Port”) from the class “Serial”.
String buf=””; //Declare and initialize the object “buff” from the class “String”
int cr = 13; // ASCII carriage return == 13. A carriage return means moving the cursor to the beginning of the line. The code is r
int lf = 10; // ASCII linefeed == 10. Line feed: moving one line forward. The code is n.
int serialVal = 0; //declaring and initialize the variable “serialVal” where we will store the data read from the serial
PShape bot;
void setup() {
size(1024,1024); //Size of window
bot = loadShape(“pp.svg”);
port = new Serial(this, portname, 9600);
noStroke();
}
void draw(){
background(240,240,240);
shape(bot, 400, 200); // Draw at coordinate (280, 40) at the default size
textSize(48);
fill(36, 148, 245);
text(“Backpack FIT”, 350, 100);
if (serialVal==0)
{
textSize(24);
fill(8, 193, 30);
text(“Your back is safe. You are good to go”, 300, 900);
triangle(590, 300, 530, 300, 560, 350);
triangle(490, 300, 430, 300, 460, 350);
}
else if (serialVal==-1)
{
textSize(24);
fill(255, 0, 0);
text(“Fix the left strap of your backpack”, 310, 900);
triangle(590, 300, 530, 300, 560, 350);
}
else
{
textSize(24);
fill(255, 0, 0);
text(“Fix the right strap of your backpack”, 310, 900);
fill(255, 0, 0);
triangle(490, 300, 430, 300, 460, 350);
}
}
// called whenever serial data arrives
void serialEvent(Serial port) { //fromn the library. Called when data is available. Use one of the read() methods to capture this data.
int c = port.read(); //Returns a number between 0 and 255 for the next byte that’s waiting in the buffer. Returns -1 if there is no byte, although this should be avoided by first cheacking available() to see if data is available.
if (c != lf && c != cr) {
buf = buf + char(c); //If the value read is not lf nor keep reading the data.
}
if (c == lf) { //When done with the reading
serialVal = int(buf); // convert the string buf to int
println(“val=”+serialVal); //debugging
buf = “”; //Reset object to nothing
}
}

Some ideas

When I was reading the articles for this week I kept thinking about what kind of information I would like to have available in my surroundings, in a non-obtrusive way. Then, the first thought that came to mind was an issue that worried me (kind of) at the beginning of the semester. On August I moved to a new place, and for the first time in my life I was going to have roommates. Of course this was (and still is) a whole new experience for me because most of my life I lived with my family, and since I moved to the U.S. I lived by myself. Anyway, something I care a lot about is being respectful of other people’s space and comfort. Therefore, I would like to know when I could do things like playing the kind of music I like out loud in the living room, using the old squeaky dryer, or the super noisy blender without bothering other people. So, I think it would be awesome to have some sort of simple, yet elegant, information system (maybe a symbolic sculptural display, according to Pousman and Stasko) that would let us know who is home, and even maybe a simple status (“no bother”, “not my best day”, “sleeping”, “happy to talk”, “need human interaction”, “silence, studying” etc.)

Other ideas that came to mind are dynamic and aesthetically pleasing visualization of:

  1. The amount of electrical energy consumed by a specific space (room, office, house, building).
  2. The number of paper towels used in a specific public restroom
  3. The amount and speed of electrons flowing through a specific wire
  4. The amount of UV radiation
  5. Being a bit more futuristic, the “average mood” of a space, considering the general mood (although it might be very hard to classify human emotions, they are very complex) of the individuals that are in the space. Or the aggregated mood of the space but by visualizing the mood of each individual (in an anonymous way, obviously). I’m imagining some sort of 3D matrix of lights, and light representing a person, and each color a emotion.

Pots, pots, pots

Components
• 1 Arduino Uno
• 3 resistor (220 ohms)
• 3 pots
• 3 LEDs (red, blue, green)
• 1 breadboard
• 1 USB cable
• Jumper wires
• Laptop

Description
For this lab I used my Arduino Uno board to control the brightness of the three LEDs, by manipulating 3 pots.

Code

int sensorRed = A0;    // select the input pin for the potentiometer 1

int sensorBlue = A1;    // select the input pin for the potentiometer 2

int sensorGreen = A2;    // select the input pin for the potentiometer 3

int redPin = 9;        // select the pin for the red LED

int bluePin = 10;      // select the pin for the blue LED

int greenPin = 11;     // select the pin for the green LED

int redValue=0;

int blueValue=0;

int greenValue=0;

void setup() {

// declare the ledPin as an OUTPUT:

pinMode(redPin, OUTPUT);

pinMode(bluePin, OUTPUT);

pinMode(greenPin, OUTPUT);

}

void loop() {

// read the values from the sensors:

redValue = analogRead(sensorRed);

blueValue = analogRead(sensorBlue);

greenValue = analogRead(sensorGreen);

redValue=(redValue/4);

blueValue=(blueValue/4);

greenValue=(greenValue/4);

analogWrite(redPin, redValue);

analogWrite(bluePin, blueValue);

analogWrite(greenPin, greenValue);

}

A bit confused…

I must admit that my thoughts while I was reading Fishkin’s taxonomy align with those of Leah. I’m trying to understand the nature of the input event, the sophistication of the processing of the input signal, and the complexity of the output event (probably this comes to mind because I’m continuously thinking about the midterm project. What would qualify as a TUI for this class? Could it be as simple as a greeting card or should it be as complex as a topobo?). One of the examples provided is the ‘‘Platypus Amoeba’’ which responds to touching and petting, what would happen if we change this input for only pressing a “On/off” switch? The embodiment would not change, it will be still full because the output device is the input device, but maybe the metaphor would change from noun and verb to none? Then, is this second dimension capturing in some way the complexity of the system?

Additionally, (and as Leah mentions) if the input of the system is merely gestures from a user (that, for example, will be sensed through a Kinect) that will control the output of a screen or projection, will this system be considered as a TUI or simply a UI? The reading mentions the Graspable Display, in which the ‘‘push away’’ gesture maps to ‘‘reduce text point size’’, would this be the equivalent to what I am asking?

Finally, I am just wondering about what a user interface is? Are we assuming that a computational system must be part of it? If that is the case, how would we classify a door knob for example?