New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Heart rate sensor accuracy/confidence #1248
Comments
Well, yes, you could probably scrape a bit more data from the heart rate sensor. It's good that the confidence does seem to be a pretty good indicator though. Confidence: I can't remember the numbers exactly but: we have list of the last 10 heart rate readings, and when 70% of them are within 10% of each other, confidence is 100. As they move away from that, confidence drops. The HRM's algorithm (which is a binary blob) does use accelerometer data, but I'm not 100% sure how since it's binary. Right now we don't use that algorithm because I'm trying to keep things open, but a new algorithm (or using the binary blob) would likely help a lot if someone were willing to put the time into it. |
Can the binary blob be loaded through javascript? Maybe an optional app loading the blob would be a stopgap alternative to integrating closed stuff into the firmware image. |
it's a thought... It might be possible to do, but it's not going to be easy |
The confidence is =0 on my watch almost all the time, too. |
Thanks - if anything it looks from your last two graphs like confidence is too 'unconfident'? I'm not sure if it's going to be quite as easy as just multiplying the HRM value. Potentially what we could do is what we did for the step counter: Make an app that logs every HRM value alongside accelerometer and the HRM from a second device which we trust. Then when we've got a bunch of data from different people we can try different algorithms and see what works best, but in a more scientific, quantifiable way. How are you logging the data? It sounds like you're pretty much there (although I guess the HRM/accelerometer data needs to be logged in a more fine-grained way). |
For these graphs I used the recorder app. I have done some experiments with recording every event, but my csv file keeps getting some lines mixed. |
I have done some code for running with the IDE to record more detailed data than the recorder app does: gist This yields data looking something like this (about 80 seconds and 360KiB in this case): I can put this into an app, if that helps with analysis. |
Thanks! This is really helpful! Recording straight from the Web IDE is a good plan - I guess it limits options for recording while running or outside, but even without that this data looks like it'd be a massive help for better heart rate recording. In terms of data size, this would all be for the PC so in a way the more data the better :)
Only things I'd say about the recording are:
Have you seen https://github.com/gfwilliams/step-count ? If we could stick all that HRM data into a repository like that, and we can compile in |
I have done some experimenting with putting my code in a custom app: I could not find ppgValue in my HRM-raw events, so I tried with vcPPG and vcPPGoffs. Are these the correct raw values? I have looked at the step-count repo, but did not yet try it out. It is a good idea to get some data together for experimenting with algorithms. |
Hi, yes, sorry - edit: actually it might be handy to have vcPPGoffs as we can see if it's working right - there's definitely some odd stuff going on! |
I have tried comparing the internal sensor with a cheap external one. The external one is also optical and worn on the upper arm.
The results look as follows when ignoring 0 values:
track_stairs.csv
(Going up and down stairs between 11:57 and about 12:22, to get some decent movement)
It seems high confidence correlates to similar results between both sensors, but there is a lot of time where confidence is 0. What exactly is the confidence value reported?
Is there untapped potential in the heart rate sensor? Correction via accelerometer or something like that?
It seems the correlation between both sensors is much higher during low movement times (e.g. sleep).
I will try to get my hands on an EKG based sensor to compare that too.
The text was updated successfully, but these errors were encountered: