Poseidon
[ezcol_1half]
Oct-Nov 2016
[/ezcol_1half]
[ezcol_1half_end]
Interactive Installation
[/ezcol_1half_end]
Poseidon is an interactive marine scenario which can be controlled by gestures of the spectators.
Here is the code on Github.
Design Concept
Imagine that you are Poseidon, one of the twelve Olympian deities of the pantheon in Greek mythology, whose main domain was the ocean, you can control the flying ship by gestures and view the change of weather on the sea.
Method & Process
Sketch
Our design sketch has iterated for several times. At the beginning we planned to set our scenario in real water. However, it might be unsafe even cause short circuit.
Next step, we asked ourselves, why we have to confine the scenario into the real one? Ships can sail not in the water but clouds.
Devices Employed
Our installation employed APC220 for wireless communication, Leap Motion, Mini-projector, Arduino Leonardo, steering servo, fans, speakers and LED.
Other materials include wires, cotton, iron shelf and fishing lines.
Prototyping & Construction
According to the design sketch, we divided our project into three interactional modules: map system, cloud system and boat system.
Weather System – Visual Display
Clouds were made by cotton and wires. Three clouds are interactive, each of which has an Arduino Leonardo, APC220, LED and portable power source inside.
There are four kinds of weather in total, namely Sunny, Windy, Fog and Lightning. On sunny days the clouds are bright; on windy days the clouds turn dark, the sound of winds can be heard responsively, on fog days, the sea surface become dim; on lightning days the thunder is loud and lightning can be seen through the clouds.
Programming
The challenge of Weather system is the wireless communication between boards. We employed APC220, a simple and economic solution to wireless data communications. We set four statements representing four kinds of weather. Once the board in the cloud receive the signal from Main board, it will response according to different case.
Boat System
The scene was built by iron shelf. The main interactive area is the upper part, above the paperboard. The shelf was wrapped by black curtain. Mini-projector was set at the top of the shelf.
The boat will shake responding to the weather. On windy days, Servos would operate and make ship shake slightly.
Map System – Core Module
Map system is the core module in this project, playing the role of both input and output.
Audience are able to switch the position of the boat by swiping left and right. To make the interact natural and sensitive, we employed Leap Motion as the input.
The gestures we expect the system to recognize is swiping and its speed and direction.
Because we only operate the system in two dimensions, compared with Unity 3D, Processing is the better choice.
We painted a world map with four places whose weather is different. Audience swipe left to operate the boat flying to the previous location, and right to the next.
Programming
Our programming framework is shown as follows:
We used processing library Leap Motion for Processing written by Darius Morawiec to obtain the data of gesture, namely swipe, speed and direction, and the library VSync written by Maximilian Ernestus to synchronize variables on Arduino with variables in Processing sketch.
On Processing pane, we display a huge map whose coordinate change according to the gesture. Four points has been marked.
Design Challenges
Tiny gesture causes the movement of the map
We set the prerequisite of map’s movement. Only when the audience swipe fast enough can they move the map.
Easing Effect
We want to make the interaction of map seems natural and comfortable. However, if we update the new coordinate of the map, it will jump to the point immediately, completely different from the Easing effect we want. We make the coordinate add the multiply of the difference between target point and current point and an Easing argument.
dx = a[index].x -v1.x; v1.x+=dx*easing; dy = a[index].y -v1.y; v1.y+=dy*easing;
Move the map after the completion of last movement
We declared a Boolean value flag. Only when flag equals to zero, the map can be moved. Every time the map stops moving, flag turns to zero.
Reflection
The completion of this project was a realization of a bottom-up creative idea, which emerged on the basis of existing technology instead of traditional question-hypothesis-solution process.
For future improvement, I think the types of weather and interaction content could be more various. The shake and movement of the flying ship could be controlled by pulleys, which provide more natural dynamic effect.
Members of the team:
Yang Zhang, Fengjie Zhang, Han Wang, Jiajing Guo, Li Wang, Ruihui Zeng, Yue Wang, Sherry Zhou.