User Tools

Site Tools


Week 38: Animism, Anthropomorphism and Zoomorphism


What is it that makes us emotionally attached to technology and how can we for design this?

Anthropomorphizing is a natural human tendency, thought to be the result of a perceptual system designed to find order in a complex world. Anthropomorphism is a category error, some argue: the treatment of an entity (an animal) as a member of a class (things with minds) to which it does not belong; or the comparison of that entity to one (such as a human) belonging in a different category. (“Anthropomorphism” entry in the Encyclopedia of Human-Animal Relationships, Horowitz A., 2007)

Through a one week workshop we will design multiple robots that invites the user to start making interpretation on the personalities of them.

As a starting point we will use a hackable Arduino based robot platform. It is then up to you to modify it to your likings. You will program behavioral interaction patterns into it and you will redesign its skeleton by making new parts on a lasercutter or simply by using a glue gun.

Week Overview


9:00 - 12:00: Welcome and intro.

13:00 - 16.00: Build the Arduino robot.


9:00 - 12:00: Programming toturial.

13:00 - 16.00: Idea generation and grouping.


9:00 - 12:00: Hack away

keep afternoon free


9:00 - 12:00: Programming toturial.

13:00 - 16.00: Hack away.


9:00 - 12:00: Final touches and documentation.

  • workspaces cleanup

13:00 - 16.00:

  • presentation
  • reflections and feedback

Expected Results of the week

Learning goals:

  • Understand the Arduino environment.
  • To be able to program basic interaction patterns.
  • To understand the potentials and limitations of physical sensors.
  • To understand an iterative design process within physical computing.


  • A custom made robot prototype that interacts with its sourroundings and have a designed personality.
  • A video documenting its personality.
  • A zip file with design diagrams, images, video and source code enabling others to replicate it.

Useful code snippets from the week

Running average

currentValue*0.99 + targetValue * 0.11;

Sinus wave

float moveIt = 0;

(insert your void setup etc here)

  // Radians 0 to 6.28 
  angle = angle  +(1.0f/(float)width);
  if(angle > 6.28)
    angle = 0;
  graphValue = round((sin(angle)+1) * (float)amplitude);
  moveIt = moveIt + 0.005;
  float lightvalue = (sin(moveIt)+1.0f)/2.0f * 255.0f

Smoothing a motion (processing example)

void setup()

float oldMouse = 0;
float diff = 0;
void draw()
 diff = diff * 0.995f + abs( mouseX - oldMouse)*0.005;
 if(abs(diff) > 0.5)
  oldMouse = mouseX;

Resulting Student Work

link to your results here:

courses/2014_exp_prototyping_week38.txt · Last modified: 2014/09/22 06:07 by mrpumpernickel