Team Status Update for 2/29/2020

The most significant risk in our project for now is the discrepancy between the real and test data. We have the RPi set up and we ordered a gym mat and a dummy last week, so we are planning to collect data of us falling and the dummy falling. We are also going to collect data by placing our device in positions other than the users’ pocket, just to check whether a pocket is the best place and whether placing the device on other positions (necklace, belt) affect the collected data.

We also worked on design documents this week, and we are planning to incorporate the feedback we got from the instructors and our peers. We got a feedback that it would be helpful to add a help button instead of relying only on the fall detection, and this feature can easily be added to our app. There were some concerns about data collection during the design review, and we definitely need to collect much more data for our fall detection algorithm to work accurately. We will start collecting data from our device as soon as we get the RPi ready, and as we ordered the dummy, we will be able to collect a much larger data set when it arrives.

Sojeong’s Status Update for 2/29/2020

This week I tried using the angles of the acceleration as new features to the SVM. I decided to use the angle between the xy-plane and the z-axis because that would be the angle that changes the most when a person falls. However, I should think more about which axis to use after collecting some data from our device as the orientation of the accelerometer in our device and the phone would be different. I should also consider that the device will be placed inside a pocket, which can also change the orientation.

The angle was defined as: atan(az/(ax^2+ay^2)^0.5) The graph below shows that the angle fluctuates a lot for a fall, while it stays mostly constant for walking.

forward fall
walking

In terms of schedule, we are on track. For next week, I would really need to start collecting and using the data from our actual device as the RPi will be ready to use. All the data that I collected this week and last week were all done in the same position, but I should also try collecting them from different positions and see if they make any difference.

Team Status Update for 2/22/2020

We decided to run the ML algorithm on the RPi instead of the phone, because we want the ML work to be done in Python. Some of us use Android and some of us use iOS, so it would also be hard for us to test if we do it on the phone. Other than this, there wasn’t much change to our project. We also got our Pi and the accelerometer, so Max is working on setting them up.

The most significant work for now is understanding our data. We have to check whether a person’s height or weight has impact on the data collected, and work on choosing the features that will work best with our algorithm. If the data that we collect has too much noise, we might have to smooth it out using a Kalman filter.

Sojeong’s Status Update for 02/22/2020

This week, I collected accelerometer data and started working on the fall detection algorithm. Before we get our pi set up, I will use my iPhone to collect the data. When collecting the data, I put my phone in the pocket as our final device will also be used that way. I collected the 3-axis accelerations of me falling forward, backward, sideways, and walking, jumping, running, sitting down, and bending down.

For feature selection, I first tried using the vector magnitude of the three accelerations. Using the magnitude instead of using a list of three accelerations simplifies the algorithm, and I expect that it would give similar results because the graphs of xyz accelerations do not differ a lot from each other as shown in the below graphs.

I calculated the magnitude of the acceleration data ((x^2 + y^2 + z^2)^0.5) and split up the data series into a window of size 10. I chose 10 because it covered the peaks in the fall data. However, this could differ from person to person, so I will have to collect more data to make sure that this interval works.  I trained the svm using forward fall, side fall, and walking data, and tried testing it. The algorithm detects the all kinds of falls, and classifies sitting and bending as non-falls, but it classifies jumping and running as falls.

For the next week, I will collect more training data from my teammates to compare how the acceleration data differ among people. To improve the accuracy of the algorithm, getting more data for the train set might help. I will also try using the magnitude and angle of the accelerations as a feature. For running and jumping, the magnitude of the acceleration may be similar with the falls but the angle will definitely be different, so it is possible that the algorithm will be able to classify them properly.

Sojeong’s Status Update for 02/15/2020

This week, I spent time reading existing research papers about different fall detection algorithms. The main points that I was looking for in those papers were what kinds of data they collected to train their algorithm and how they tested it. One of the papers only used accelerations in three axes to train their algorithm, and got 99.14% accuracy for their best results. This was surprising because I thought we would need more than just accelerations to build an accurate algorithm. Seeing the results, we decided to start our project by collecting acceleration data first, and if the results are not satisfying enough, we will combine other data such as angular velocity. For testing, I came up with different types of activities for fall and non-fall categories to clearly define what falls are and to narrow down the types of activities that the algorithm is going to detect. For the next week, we will get the accelerometer and Raspberry Pi, so I am planning to get some data and start writing the fall detection algorithm using SVM. Because the accelerometer data might not be accurate and include some noises, I would also have to think about some ways to preprocess the data.