Pulse
A ring or a watch doesn't hear your heart. It shines light into your skin and measures how much comes back. Each heartbeat pushes a little more blood under the sensor, so the returning light dips. Everything else, including breathing, footsteps and a twitch of the hand, also changes that light. Getting a heart rate means pulling one rhythm out of all the others.
A night in my signals
Pick any of the nights I've recorded and drag across the chart. Each moment you pick feeds the experiment below.
- Into sleep
- —
- Heart rate
- — bpm
- HRV
- — ms
- Stage
- —
From light to heartbeat
The ring keeps summaries, not its raw optical signal, so this waveform is rebuilt from my own heart rate and HRV at the moment you picked above: —.
- True heart rate
- — bpm
- Estimated from the signal
- — bpm
- Verdict
- —
What to try
- Leave movement at zero. The filter finds the beat easily.
- Slide movement toward running. Footsteps land at two to three steps a second, right inside the heart's frequency range, and the estimate locks onto your stride instead of your heart.
- Turn on motion cancellation. The accelerometer tells the algorithm what movement looks like, and it subtracts that from the light. This is the idea behind motion-tolerant wearables, the problem I worked on at Valencell.
The real thing
Everything above is rebuilt from summaries. Here are two real recordings from the watch on my wrist: a morning run at home, and a day hike nearly a kilometer down into the Grand Canyon and back up, where you can watch my heart rate climb with the trail. On the run, my heart beat about twice a second while my feet hit the ground almost three times a second. Both rhythms sit inside the band the filter keeps, which is why motion is so hard to remove.
- Elapsed
- —
- Heart rate
- — bpm
- Steps
- — per min
- Elevation
- — m
Optional: try it with your own pulse
If you'd like, your camera can do what the ring does. Cover your phone's rear camera with a fingertip, or sit still with your face lit evenly in front of a webcam. The camera turns on only when you press Start, and it turns off when you press Stop or leave the page. Everything is processed in this browser tab; no video is recorded or sent anywhere.
Camera is off.
— bpm, estimated
This is a demonstration, not a medical device. Camera pulse readings are noisy, need good light and stillness, and are known to be less accurate on darker skin tones.
Methods
Activities: Suunto watch recordings synced through Strava, with heart rate, cadence and elevation every 2 seconds (run) or 10 seconds (hike); GPS, place names and clock times removed. Data: Oura ring sleep sessions, heart rate and RMSSD every 5 minutes, movement every 30 seconds; clock times removed. Waveform: two-Gaussian pulse model per beat, beat intervals drawn from the recorded heart rate with spread set by RMSSD, breathing at the recorded rate. Processing: zero-phase Butterworth band-pass, normalized-LMS adaptive noise cancellation with the accelerometer as reference, peak detection with an adaptive threshold, heart rate from the median beat interval. All of it runs in your browser; read the code.