Scroll to explore the inference

Fitness tracking isn't a data collection problem—it's an inference problem. When you do a pushup, the system doesn't "see" a pushup. It sees pixel changes, body poses, acceleration vectors. The challenge is bridging the gap between what sensors measure and what you actually did.

Ground is a pushup counter that infers intent from motion. No buttons to tap, no manual counting. Just do your reps. Prop your phone against something and the camera tracks your body pose in real-time. Or use motion sensors and let pattern matching do the work.

Two modes, one goal: remove the cognitive load of counting. Ground truth isn't measured. It's inferred.

01

Pattern Inference

A pushup has a signature in sensor space. The down phase produces a characteristic acceleration curve. The up phase mirrors it. The timing, amplitude, and shape vary between people—but the fundamental pattern is recognizable.

The system maintains a library of reference patterns: standard pushups, wide-arm, diamond, knee-modified. Incoming sensor data is compared against these templates using Dynamic Time Warping—an algorithm that handles speed variations gracefully.

The pattern defines the truth. When correlation exceeds 72%, a rep is counted.

The reference template sits on the left. Incoming data streams on the right. Watch the correlation build as the patterns align. The system doesn't count motion—it counts matches.

02

Edge Cases

Not every downward-upward motion is a pushup. The system must distinguish between genuine reps and false positives—scratching your arm, reaching for your phone, adjusting position on the floor.

Half reps fail the depth threshold. The down phase signature is incomplete.

Double bounces trigger debounce logic. Two motions within 800ms can't both be valid reps.

Assisted reps show characteristic form deviation—a pause where knees touch ground.

Random motion produces wrong signatures entirely. Scratching your nose doesn't correlate with the pushup template.

Better to undercount than overcount. Trust is built through accuracy, not enthusiasm.

03

Building Trust

The system improves through corrections. When users mark a false positive—"that wasn't a rep"—the model adjusts. When users report a missed rep, sensitivity increases. Over time, accuracy converges toward user expectations.

This creates a feedback loop:

False positive reported → confidence threshold increases → fewer false detections.

Missed rep reported → sensitivity increases → fewer missed detections.

The parameters adapt. The model learns your particular pushup form. After a hundred reps, it knows you.

Accuracy isn't fixed—it's earned through use.

04

Implementation

Ground runs entirely on-device. No cloud dependency. Your workout data stays on your phone.

Platform iOS
Framework SwiftUI + Vision + CoreMotion
Sample Rate 60 Hz accelerometer
Window Size 120 samples (2 seconds)
Pattern Matching Dynamic Time Warping
Confidence Threshold 0.72 (adaptive)
Debounce Window 800ms minimum
Health Integration Apple HealthKit

The Vision framework provides real-time body pose detection—tracking shoulder, elbow, and wrist positions to detect the up/down movement. Camera mode works even with partial body visibility and adjusts for angle and distance. Motion mode uses accelerometer patterns for a lighter-weight alternative.

When the interface works, it disappears. No buttons. No counting. Just motion.

The Disappearing Interface

The best fitness apps get out of the way. You're not here to interact with software—you're here to work out. Every tap is friction. Every screen is distraction.

Ground's interface philosophy is minimal: show the count when it changes, otherwise show nothing. A large number on screen, visible from the floor. That number goes up when you do a rep. That's it.

Behind that simple count lies a complete inference pipeline—sensor fusion, pattern matching, confidence scoring, debounce logic, adaptive learning. All invisible. All automatic.

The gap between sensor data and semantic meaning is where intelligence lives. Ground bridges that gap through careful engineering, treating fitness tracking as what it really is: not a data collection problem, but an inference problem.

When it works, it disappears. And that's exactly the point.