Response – Physical Computing’s Greatest Hits (and misses)

“So if you’re thinking of an interactive artwork, don’t think of it like a finished painting or sculpture.  Think of it more as a performance. Your audience completes the work through what they do when they see what you’ve made. ”

This part of the reading really reminded me of the essence of designing an interactive experience. I often think that once I finish a piece, the piece is finished. However, I tend to forget that the users are the ones who complete the experience. Only after observing user behaviours and getting feedback without telling the user what to do can a designer improve the art piece and the interactive experience as a whole.

Making Interactive Art: Set the Stage, Then Shut Up and Listen

I fully agree with what the author is saying in this reading. I believe good design does not need to be explained, it talks for itself! For example, you shouldn’t have to consult a manual to operate a blender or a shaver, you should be able to figure out how to do that without explanation. There have been too many times when a song has been ruined for me because the artist explained the meaning behind the song and it didn’t align with what I had thought the song meant!

Physical Computing’s Greatest Hits (and misses) Response

This article is, as it says, a list of some of the most effective categories of projects done in physical computing. I don’t have much to analyze here, but this is an article I will certainly refer to again if I need ideas for a project. The most interesting bit is actually the specific comment that just because something has been done before doesn’t mean you can’t be original in the same theme. That he was able to identify multiple successful variants of each theme that separately contribute to fleshing out the theme is impressive, but suggests to me that as much as the technology for interactive media is advancing, its most effective applications are still to come. In particular, while many of the devices he described are interesting and exciting for the user, and most often beautiful, he never describes any as life-changing or the like. I can see the theoretical potential of physical computing to allow people to have experiences that would otherwise be impossible, but are also relevant to their life experience on a large scale, and it seems to me that once this becomes commonplace the number of ways a theme can effectively be repeated will shrink.

Making Interactive Art: Set the Stage, Then Shut Up and Listen Response

This article summarizes itself well, “don’t interpret your own work”. Interactive media gives far more flexibility in allowing the observer to interpret and re-evaluate the themes explored by the artist than conventional art, and artists sell them short if they try and force the observer down a specific path to aggressive. The art should guide their thinking, but there should be no need for additional signifiers where the art itself is unclear. Or at least, this is the point made by the author. I agree that this is certainly one very effective way to approach interactive art, but I have a hard time believing that additional separate instructions forced on the observer won’t contribute to its effectiveness ,and sometimes be the ideal way to express something. In particular, intentionally subverting the process the author describes could be effective.

Making Interactive Art: Set the Stage, Then Shut Up and Listen

I personally really enjoyed reading this article. Though I haven’t made many projects yet, one thing that I realised is that when you ask others to interact or play with your project, something unexpected always happens. For my plant pot project, for example, I originally wanted the plant pot to “smile” when someone talked to it. Adham and Mateo then come along and start swearing at it, should it then be smiling? I then changed the smile to a shocked expression instead because 1) plants would be surprised you’re talking to it 2) it won’t react differently to normal talk and swearing.

One thing Aaron mentioned, which although is different but relates to the article, is the idea of user testing (which is essentially what is described). What I think the article emphasises is the need for user testing to build your project to a certain level of “fixed” rules/expectations and then let whoever is trying out the project experience the rest. I think that it is through this project experience where the person experimenting would evoke the most emotions and thus the person who built it gain the most “satisfaction” out of the making of the project.

Physical Computing’s Greatest Hits (and misses)

What the author describes in his article about not making something because you think others have already done it is exactly my ideology. It is interesting that of all of the themes that are mentioned, there are only a few that I have not thought about either attempting to make or thinking about making in the future. I think that as his list becomes more extensive and the further down you scroll down the page, the concepts behind the ideas become more complicated and you start to see more arbitrary, focused projects where the concept could be applied to a wide variety of projects but the final product is very different.

I think that described phenomenon is the beauty of physical computing or IM, from an already established idea or concept, you could come up with some of the greatest hits.

Human Motion Project

My original idea is to make a walking robot or a dancing robot with two servo motors as its legs. Also, I would have two knobs that control the movement of each leg. The whole setup was not hard to make. However, it turned out much more difficult than I imagined.

My robot cannot stand the imbalance

The balance was a big problem. When one leg moves, the other leg tends to wobble, making it impossible for the robot to move forward. I then tried to walk forward with only one leg moving at a time. It is impossible to move forward without shifting the centre of gravity by adjusting the other leg. Therefore, I reglued the sticks to the sides of the paper cups and made them more stable. The following is the code I used:

#include <Servo.h>

Servo myservoL; // create servo object to control a servo
Servo myservoR;

int potpinL = A5; // analog pin used to connect the potentiometer
int potpinR = A3;
int valL; // variable to read the value from the analog pin
int valR;

void setup() {
myservoL.attach(9);
myservoR.attach(11);

}

void loop() {
valL = analogRead(potpinL); // reads the value of the potentiometer (value between 0 and 1023)
valL = map(valL, 0, 1023, 0, 90); // scale it to use it with the servo (value between 0 and 180)
valR = analogRead(potpinR);
valR = map(valR, 0, 1023, 0, 90);

myservoL.write(valL); // sets the servo position according to the scaled value
delay(15);
myservoR.write(valR);
delay(15); // waits for the servo to get there
}

Human Motion Project

For this project, I wanted to make something funny that related to human motion. I was heavily inspired by Ivory’s Stupid Pet Trick in which she had various human expressions made on a potted plant.

Originally, I wanted to make 2 eyeballs pop out of a face but I sadly could not get that circuit to work properly.

Instead, I went for a kissy, smoochy face. The idea is that it is blowing kisses at the viewer. It was made using a large solenoid.

The code simply used the “Blink” profile that is given in the RedBoard.

Hand Waver

My understanding of this assignment was to create an object that moved in a way that evoked human movement. For my the the primary interesting aspect of human movement is that it is usually far more complex that a machine that would be designed to cover an equivalent task. Mathematically this would be that the human body has many more degrees of freedom than would be necessary for any single activity. With my machine, my primary goal was to recreate this smooth level of motion by having multiple axes of rotation. I chose to use hand waving, as I could make the point of having multiple axes of rotation without needing to work on it for weeks. By looking at my own hand wave I noticed that there were two primary axes of rotation, at the wrist and elbow. The axes are offset by only a few degrees, but if only one axes is used the motion looks far less human. Therefore, I cut out a basic arm shape in a piece of wood, attached to a servo at either end. The ends of the “arm” were not parallel, the angle being about what I measured on myself when waving. One end was fixed to a base, and the other to a cutout of a hand. The hand was also angled a bit so that it was not vertical to the base, not at the odd angle the arm was at. I then added some simple code so that the arm and hand would turn in sync in opposite directions to create the basic motion, where the hand always faces the same point at every moment in a wave. The final thing I could have done to make the motion look particularly human would have been to cover the arm in “skin” so that the rotation of the wrist appeared continuous over the length of the arm, as it does in a human arm for the same reason. However, I realized that the motion I had was not too far off, and the quality of work I would be able to do for this would be atrocious.

 

I though I had a video of the arm in motion, but instead I took a series of rapid photos, so I will include one of these in this post and add a video if I take one later. 

This is the simple code I mentioned.  various values could be modified to produce different waves, but this set actually produced remarkably smooth results.

#include <Servo.h>
Servo hand;
Servo arm;
int handPos=90;
int armPos=130;
boolean forward;
const int handRate=1;
const int armRate=1;
const int handMax=140;
const int handMin=80;
void setup() {
  Serial.begin(9600);
  hand.attach(5);
  arm.attach(3);
  arm.write(armPos);
  hand.write(handPos);
  delay(100);
}

void loop() {
  if(forward){
    handPos+=handRate;
    armPos-=armRate;
  }
  else{
    handPos-=handRate;
    armPos+=armRate;
  }
  hand.write(handPos);
  arm.write(armPos);
  delay(25);
  if(forward && handPos>=handMax){
    forward=false;
  }
  if(!forward && handPos<=handMin){
    forward=true;
  }
}