Results

Challenges we faced

One of the challenges we faced while developing InstaMile was dealing with zero frequencies in the fast fourier transform (FFT) output. In some cases, the FFT would return a zero frequency as the one with the highest amplitude, which would cause our pace calculation algorithm to fail. To overcome this, we decided to only use amplitudes of frequencies above 0.2Hz in our calculations. This ensured that the FFT output always contained valid frequencies, and allowed our algorithm to function properly.


Another challenge we faced was translating our pace calculation algorithm from MATLAB to JavaScript. The algorithm was originally developed in MATLAB, but we needed to implement it in JavaScript in order to run it on the user's phone. MATLAB has powerful mathematical toolboxes which abstract most of the calculations and are harder to find in JavaScript. In the end, we were able to successfully translate the algorithm and integrate it into our app.


Overall, we were able to overcome these challenges through careful planning and problem-solving. By addressing potential issues early on and working through them systematically, we were able to develop a robust and reliable app that provides accurate pace predictions to users.

InstaMile in Action

The phone displays an expected speed of around 3mph. The speed flickers a little bit which is likely an issue due to the fact that we recalculate the entire thing every time a new point comes in, which is every 10ms. This can be easily resolved in future versions of the app with something like a moving average or a graphic speedometer, but those are things we'd do if we had more time to work on the app.

Results vs. expectations

It is not surprising that our app's measurements are off by about 20%.

The accuracy of accelerometer measurements can be affected by various factors, such as the position of the phone, the type of motion being measured, and the presence of external forces, such as gravity. These factors can introduce errors and inaccuracies into the measurements, resulting in results that are off by a significant margin.

And, we only use a rough equation for the user's stride length, which is likely the largest issue. Not just does their stride length change with their speed (when you run, your stride length is much longer than when you're walking), but calculating based on height and gender only does so much.

Overall, while our app may provide a rough estimate of a user's running speed, it is not reliable for providing precise measurements. To get more accurate results, you'd need to use a device that is specifically designed for measuring speed and distance, such as a dedicated running watch or a GPS tracker.

If we had more time

If we had more time, there are several additional features and functionality that we could add to InstaMile to make it even more useful and user-friendly. For example, we could add a social component to the app, allowing users to share their progress and compete with friends and other users. This could be done through a leaderboard or other ranking system, and could provide users with extra motivation to improve their walking speed.


We could also add more detailed analysis and tracking tools to the app. For example, we could include graphs and other visualizations that show a user's progress over time, and allow them to see how their pace has changed as they have used the app. This could be particularly useful for users who are trying to reach specific goals, as it would allow them to see how close they are to achieving those goals.


Finally, we could also expand the app to include other types of exercise. Currently, InstaMile is focused on walking, but we could easily extend it to include other activities, such as running, cycling, or even swimming. This would allow users to track their progress in a wider range of activities, and provide them with a more comprehensive view of their overall fitness.