Wednesday, June 27, 2012

Project Dance Controller: Report 5

This post is part of Project Dance Controller.

It's a bachelor thesis project with the aim of letting the quantity of dance movements in the room control the volume level using the Kinect for Windows hardware.

You can read all reports here.

My Internet connection was down so I didn't post on Monday as usual, that's why this post is a little late.

Last week

Last week I finished up the quantification of the movements in the depth frame. I've had the opportunity to test it out with three people and calibrate it to give some nice values.

The number is first derived from the depth frame by looking at each pixel and counting those where the depth differs by a certain amount, ignoring pixels with a value of -1 which indicates an unknown depth (due to problems with the surface and the IR laser). That gave me the percentage of pixels of the frame where movement had occurred.


I first tried to achieve some sort of S-shaped graph using the cubic root of the above value. This would mean that small movements didn't give too much effect and after a certain threshold the graph would slowly approach 10. But I never got it quiet right.

I also tried using a fraction graph leaving the independent variable as the denominator but that gave smaller movements to much effect, while using an exponential graph made it hard to have any effect while dancing alone.

So in the end I ended up with a simple, linear graph.

There was also the problem of the value changing very fast. I decided that the best approach would be the same one that TCP uses when it estimates the RTT value, namely using the formula old * a + new * (1-a) where a is a value between 0 and 1. The higher the value of a the slower the value will change, making it more resistant to temporary spikes and fluctuations (just as in the case of TCP and RTT). This worked really great.

This week

I will continue to further test out the stuff with different amount of people and distances. I will also add some of these calibration values as properties so they can be configured by the developer. I will also try to get some more documentation done and write a little on the report.

If there's time I will try to start adapting the plugin system in Stoffi so it can handle plugins which manipulate the volume.


The biggest challenge right now is finding time. But that's expected when you have a 5 month daughter, it's summer, I have two weddings to attend to and a trip to Skåne. But I'll do my best. The focus will be on writing on the report as well as improving the calibration and documentation of the library.