Quentin Bitschené Anthony Da Mota Hugo Martinez
Abstract
This project consists in programming a Widows Phone application with C# using sensors and learning algorithm. We choosed the accelerometer as our sensor.
The main goal of our project is to detect 4 kind of movement :
To do that we will use the combination between the measures we can get from the accelerometer and the use of the K-means clustering algorithm on those measures.
The accelerometer allow us to get 3 measures : X, Y and Z. Those 3 values represent the acceleration in a three dimensions space. In the project we use the Accelerometer object which allows us to get all those informations, it's our API, and it comes from the namespace Microsoft.Devices.Sensors.
We want to get two clusters that allow us to determine an average of the amplitude and frequency of our movement. To do that we use the alglib library that contains an implementation of the Kmeans algorithm, that implementation is really easy to use and is entirely configurable (you can chose the number of dimension of your sample for example).You can find it at the following URL : http://www.alglib.net/. We use this algorithm to create two clusters which will help us to find out the movement's type.
It s the répartition of the points in those two clusters that permits to determine which kind of movement the user is doing. We determined.
We choosed to show the variation of the accelerometer to the user through two interface elements :
The user chose when he wants to start the record and when when to stop it with the start and stop button. When the user presses the start button, we begin to record. We store the accelerometer's value every 20 ms in an Array. Then when the user presses stop, we put all the data we got into the Kmeans algorithm configuration and then we execute it.
When the execution is finished, we show all clustering informations to the user in a Popup :
We didn't have time to, but we could associate the movement recognition with some actions in our application. We could for example make the elements of our interface bigger when the user is running to make it easier for him to use the application. This would be really interesting cause it would associate what we have done in Windows Phone with our knowledge in interface's conception.
Link to the README: https://docs.google.com/document/d/1VWLJIBOdrdHiR0M7Tp0Q6bCRVHusTTiygcD3gESofao/edit?usp=sharing
https://drive.google.com/file/d/0Bwx2Jhz4oCg5VHJHMTVHZjhydU0/view?usp=sharing
You just need to install the WP8.1 SDK and Visual Studio 2013
Our projetct is really easy to use :
The main result of this project is that we are now able to detect some specific speed of movement like walking or running, but besides that, the realisation of this project made us learn :