Created: 2014-05-18 20:22
Updated: 2018-06-17 17:13


Waiting before the chat room door — installation demo

As of May, 18th, 2014 this file is work in progress. I'm working on it!

Waiting Before the Chat Room Door is both a research project and a first person perspective interactive installation revolving around adolescent users of the medium between the end of the Nineties and the early Two-thousands. It is a Master's thesis work in Interaction Design at Iuav University of Venice (2014).

More info on the project on the Interaction Venice website.

The installation aims at recreating as a virtual space the room and environment where my old home personal computer was kept. To make it a living museum and an actual place for memories.

This repository collects the code and instructions to rebuild the installation from scratch. If you just want to try the demo out, download it here. Use the arrow keys to move around and the mouse to rotate.

The installation consists of a hardware part, a head mounted controller built with an Arduino plus a Motion Processing Unit, and a software part, developed in Unity3d. The MPU gathers information from the accelerometer (2 axis) and gyroscope (1 axes) and sends them via I2C to the Arduino, which sends them to the computer via the serial port.

Since I own a mac and there are unresolved issues with receiving a serial input in Unity, an additional Processing OSC sketch was necessary to bridge the two. The sketch was developed by Ellen Sundh and her post can be read on her blog.

So the incoming serial port values are read by Processing and turned into OSC messages. These messages are then fed into Unity through Unity's OSC script.

When the head-mounted controller is connected to the computer through the serial cable, the OSCbridge Processing sketch is up and running and Unity is in play mode, you should be able to move and rotate around the room, and interact with the computer.

Currently, in the CharacterController.js script (in the Unity bundle) allows for moving left/right and forward/backward by tilting the head.

It also allows rotating left/right to rotate the view around the room.

Sparkfun's MPU-9150
Arduino Uno (R3)
Adafruit's bidirectional level shifter: In between the MPU (signal at 3.3V) and the Arduino pins (they output 5V).

Below you can find the schematics to wire it all up.

To develop, test and run the installation I used a 2013 MacBook Pro 2.4GHZ i5 with OSX 10.9.2 (Mavericks).

The case was designed and 3d printed by Davide Tuberga. The CAD designs are available here.

ArduinoMPU: contains the ArduinoMPU sketch to load onto the Arduino. It is an example sketch to extract the raw data from the Sparkfun MPU-9150. The original library can be found here.
Calibration sketches: contains two calibration sketches written in Processing to understand the limit values for tilting and rotating.
OSCbridge: is the sketch that takes the input serial port value and turns it into OSC messages for Unity.
unity_demo_01: contains the whole package to run in Unity. It was developed and tested on a with Unity 4.3.4f1.


As you see in the picture below. Acceleration and rotation values heavily depend on orientation and the way the head moves. If the controller is not worn like that, it won't work.

Would be interesting if users could physically walk around in space. Maybe using this nice gait tracking algorythm developed by .. during his PhD.

Since the audio component is key for this experience, another nice improvement would be a more precise ambient real time sound rendering. This could be done low cost using VBOP.

3d models audio pictures&logos Drawing by Mariano Viola

My supervisor Davide Rocchesso, my co-supervisors Gillian Crampton Smith and Philip Tabor, my friends Mariano Viola and Valeria Sanguin, my labmates at Iuav, Processing, Arduino, Unity3d, Fritzing, the people who developed the bridge sketch and the library, the 3d models, who ripped and uploaded tracks, the online community.

Cookies help us deliver our services. By using our services, you agree to our use of cookies Learn more