Posted by & filed under article.

Back in late March Enigma arranged for a Hackaton in the new facilities of NyVekst AS across the road of HiØ Remmen. Every one where encouraged to do something they really wanted to do. If that meant working on a school project, it would be just fine. Many fellow students showed up to pull an extra 8 hour run after ordinary school hours.

2014-03-25 18.06.16-1

I teamed up with two students from computer engineering Jon Kjennbakken and Adrian Edlund. Our project was highly motivated to utilize the Kinect tracker in some way. This spur the idea of making info-screens more interactive. Info-screens usually contains lots of information that are displayed on a screen. The content is swapped within short time cycles to allow more information to be presented. Some times this cycle is to short and your unable to read the whole content within the given time-cycle. Then you are forced to wait for the other content to circle threw, before the entry you where interested in returns.

Not to waste to much time developing a new info-screen, we went with a project I earlier had fiddled with. The project exposes functions in JavaScript for easily navigating back and forth of the content cycle. To handle the Kinect we built a c# application due to easy implementation of the Kinect for Windows SDK. The challenge was primarily presented in how we should interpret the data and how we should interact with the info-screen. It felt reasonable to use the arms to slide between content. Similar to how we slide threw images on a smartphone. Gathering x,y,z coordinates of the hands from the Kinect seemed the way to go. However understanding the users intent was quite hard to determine based on the continuous movement. Lets say we acted on the coordinates of the right arm present. Using the x coordinate we could determine the direction of the hand along a horizontal line. By moving the arm to the right, we could check if last x is less than or greater than the newest x. Also adding a threshold to the minimum required movement of Abs(oldX-newX)>20 so that it would not bogusly react to random movement.

2014-03-25 23.05.55

Thinking we had it all figured out, it was still not working as intended. Even with this approach we got errors on the return path. Thinking we could measure the speed of the hand moving to the right and act on it, would still be implicated by the speed of retracting the arm to the normal position. The final take we ended up doing with this project, was to only interpret the hand direction if it was above the elbow. Playing on the hand resting on the return gesture and falling beneath the elbows y coordinate. While it is far from desirable, it works decent!

We used Socket.IO to facilitate the communication between the C# app and the web app.

Before the evening was over we managed to squeeze in a little easteregg triggered by two persons stretching theirs arms in the air. Ready? GO!

2014-03-25 23.05.21Jon and Adrian playing pong.


Leave a Reply

  • (will not be published)