Air time jump (air_time_jump)
Measure vertical jump height from air time only (no user height required).
Measure vertical jump height from air time only.
This mode does not require userHeightCm.
See also:
Live jump detection and jump height estimates.
No explicit calibration step.
Height computed from a simple physics model.
Uses only hip keypoints (left_hip, right_hip).
Dynamic baseline keeps tracking robust without calibration.
Works in real time (/pose_tracker/tracking) and on video (/pose_tracker/upload_tracking).
Required query parameters
Optional query parameters
devicePitchDeg=... (number, degrees)
Accepted for consistency.
Height is driven by air time.
Tracking prerequisites (pose)
Both hip keypoints must be detected with score > 0.5.
The full body should be visible.
The camera must stay fixed.
Comparison: jump_analysis vs air_time_jump
Use this when user height is unknown.
Aspect
jump_analysis
air_time_jump
Yes (stable standing β baselineY + cmPerPixel from frame height)
No (dynamic baseline from recent frames)
Pixel-to-cm via cmPerPixel
Time-to-height via physics
jumpHeightCm = (baselineY - minY) * cmPerPixel
jumpHeightCm, deltaPixels, cmPerPixel, baselineY, minY
jumpHeightCm, airTimeMs, airTimeSeconds, baselineY, minY
User height is known; you want a scale tied to frame/user
User height unknown; you want a simple, physics-based estimate
Also see: Jump analysis (jump_analysis)
Exercise detection
Always pass exercise=air_time_jump to enable air-time jump mode.
Base URL:
Example:
Upload Tracking (video)
Base URL:
Example:
Common optional flags on video:
export=true (keeps the last frame visible and enables export UI)
keypoints=true (plan-gated)
PostMessage events
These events are sent from the iframe/WebView to your host app.
If youβre new to placement messages, read: Exercise Placement.
Sent once when upward movement crosses the trigger threshold.
Sent during measurement and at the end of a jump.
Notes:
airTimeMs covers the full airborne duration (takeoff β landing).
Unlike jump_analysis, there is no cmPerPixel field.
jump_summary (video)
Sent at the end of a video analysis.
Multiple jumps can be detected in a single clip.
Heights are in centimeters.
Air times are in seconds.
Placement overlay behavior
Uses the standard placement system (posture).
Baseline is computed dynamically from recent hip Y values.
Baseline can be locked when jump starts, and released after landing.
Placement: wait for posture.ready=true.
Jump:
Receive jump_height updates.
Consider the jump complete when jump_height.final=true.
Measurement algorithm
1) Hip signal + baseline
Read left_hip and right_hip keypoints.
Keep a rolling window of recent hip Y values.
Use that window to estimate a dynamic baselineY.
2) Jump detection + landing
Jump starts when upward movement exceeds 20 px from baseline.
A few consecutive frames are required to avoid false triggers.
Landing occurs when hip Y returns within 20 px of baseline.
Measure air time t from jump start to landing.
4) Height from physics
Use the vertical motion relationship:
time up = time down = t/2
initial vertical velocity at takeoff: v = g * (t/2)
max height: h = vΒ² / (2g) = g * tΒ² / 8
Formula (meters):
Where:
Convert to centimeters:
Integration examples
Upload Tracking (video URL)
When export=true, the last analyzed frame stays visible.
Best practices and limitations
Use a high FPS camera when possible.
Keep the camera fixed and avoid motion blur.
Ensure clear landing visibility (hips must be tracked).
This assumes a mostly vertical ballistic jump.
Arm swing and knee tuck can change air time.
Landing detection is hip-based, not foot-contact-based.