Freeletics Edward Dale Feb 7, 2017

Motion Recognition for Fitness on Android Wear

Article Summary

Edward Dale from Freeletics shows how a simple peak detection algorithm can count pushup reps on Android Wear with surprising accuracy. The secret? Freeletics-style pushups include a hand lift that creates a perfect acceleration spike.

This deep dive from the Freeletics engineering team tackles the challenge of automatically counting exercise repetitions on wearables. Rather than solving the broader problem of recognizing any exercise, they focus on a constrained use case: counting reps of a known exercise in real-time using accelerometer data.

Key Takeaways

Critical Insight

A lightweight peak detection algorithm running at 15Hz can accurately count pushup reps on Android Wear by detecting hand-lift acceleration spikes, proving that constrained motion recognition problems don't need complex ML solutions.

The article includes actual accelerometer graphs and working Java code, plus insights on why analyzing data on the phone instead of the watch might backfire.

About This Article

Problem

Edward Dale's team had to figure out the right delta parameter for the peakdet algorithm. When they used delta=20 instead of delta=40, false positives doubled for the same user, which caused real detection problems.

Solution

They built a Java version of the peakdet online peak detection algorithm that doesn't need transcendental functions. This kept the computational load low while handling accelerometer magnitude data coming in at 15Hz sampling intervals.

Impact

The calibration problem isn't fully solved yet, but the team showed that tuning delta for each user could fit into workout flows without interrupting the experience. This approach kept rep counting accurate on devices with limited battery.