Update 4: Hear My Heart Beat
|Can you see the 20 strokes in here? Paddle Mate found 17.|
But enough of that, onto the progress report. Last night I:
- Added Heart Rate Monitoring into the app.
- I said what the heck, let's grab that calorie count from the Microsoft Band.
- Then I lost my mind and decided to add a "Reset" into the app to make collecting data easier.
Oh ya, then I hooked the stroke counter. It was about time I added the feature I started this app for.
I now collect the Heart Rate samples while I update the current Heart Rate label in the app. Once the workout is complete you can now view the Heart Rate in the in-app graph using the heart rate/stroke toggle icons along the right of the graph.
Calorie CountsJust displaying the calories burnt during the workout, as reported by the Microsoft Band.
During data collection on Saturday morning I had to force close the app to clear it. I had to do this between each data collection.
We aren't animals here. Force closing apps? What will be next? Side loading apps you got from a friend off of 10x3.5" floppy disks which are really not floppy? No, we won't.
Behold the Holy Reset of Antioch!
Yes, the reset was that good.
Wet And Wild 2: Get Me Some Samples
With only one Sprint Pace sample I decided I needed more samples. Here are the results of today's collection with the Stroke Detector I worked on yesterday.
Overall I am pretty happy with the new stroke detector. With an 80%+ accuracy I think that is pretty good for a one day of crash course Linear Regression, Moving Average, Classification, and Standard Deviation coding session.
My next phase of stroke detection I think will involve some machine learning to see how more accurate I can get the algorithm. At the moment I see I need to do a couple things based on the samples:
- Classify strokes and trailing strokes by pace (Slow, Medium, Fast) and then use that classification to adjust the stroke detection algorithm.
- Better rejection of garbage samples (non-strokes).
About Class Structure
You know that joke about MVC? Massive View Controller?
That's this app at the moment.
I know, I should hang my head in shame. But screw it, I will put making this an architecture marvel to knock your socks off on my "Backlog".
To be truthful it is not all a MVC. I have the following classes:
- PaddleCounter class to handle stroke analysis.
- Ring class to handle the ring buffers for moving average calculations for the PaddleCounter.
The rest of the logic at the moment is in the ViewController but will change once I extend the app.
Notes From Wet Tests
During testing on the lake I made some notes about the app:
- As we know,trying to read an iPhone in the sun sucks. I am going to need a high contrast UI with very large components if the user has a hope in hell of seeing the strokes, heart rate, etc.
- The waterproof plastic case I have is soft and as such touching one point on the screen may cause a different location to register the tap. This means that during a workout I will need to add a dialog to prompt a user "Do you really want to stop you workout?"