The Watcher showcases 3 different personalities; Shy, Franctic, Ignoring, as an experiment to capture anthropomorphism. These personalities can be described in summary in the PAD Emotional State model and Laban Movement Motion Analysis model. These models were used a guideline to form motion patterns for the servo motors.

PAD Emotional State
– Shy: displeasure, non-arousal, submissive
– Frantic: displeasure, high arousal, dominant
– Ignoring: displeasure, non-arousal, dominant

Laban Movement Analysis
– Shy: sustained time, indirect space
– Frantic: quick time, direct space
– Ignoring: quick time, direct space

Servo Motion Patterns
– Shy: delayed, slow movements looking downwards (negative x axis)
– Frantic: abrupt and fast movements going in any direction
– Ignoring: fast deliberate movements towards a certain point

Hardware & Fabrication

The construction for the mirror was entirely made out of MDF wood. These pieces were made to hold the mirror, webcam and the servo motors. The webcam was embedded directly behind the mirror in the center to increase the viewing angle as the camera will always rotate with the mirror. This was accomplished by drilling a hole in the mirror using a drill press with a ½” Diamond Hole Saw. To encapsulate all the internal parts, a shell made out of ½“ polystyrene foam board which was sanded and spray-painted with a layer of white paint.

In order to rotate the mirror on the x- and y-axis, 2 servo motors were connected to an Arduino. The first servo is a Hitec HS-5485HB Servo which controls y-axis rotation. The second servo Hitec HS-5645MG (higher torque) Servo rotates the mirror on the x-axis. These servos were connected to each other using ServoBlocks and were hooked up to an external power supply of 4 AA batteries.



The entire software is written in openFrameworks and utilizes the add-on libraries ofxCv, ofxTweenzor, ofxUI and firmata serial communication. The standard frontal face haarcascade from Kyle McDonald’s ofxCv was used in order to detect a person’s face. If multiple faces are detected, it cycles through all the objects and only selects the biggest object as a face.


The ability to control and create smooth motion is essential to depict anthropomorphism. The tweening library ofxTweenzor was used to achieve this. The tween would allow control over the beginning and end points, delay, tweening time and the type of tween through one single command (identical to tweening in Flash). The tween variable is then send as serial data to the Arduino which drives the servos.