@pepe @Povedano @miguell @MedTechCD @ryandev
Looks like we have agreement, right?
Duty Factor % / stance_time_percent → is calculated per stride
stance_time_percent = stance_time × cadence / 600 = (287 x 84) / 600 = 40.2%
Flight Time and Flight Ratio → is calculated per step
flight_time = Step Time − Stance Time = (30000/84)− 287 = 70.1 ms
flight_ratio = Flight Time / (Flight Time + Stance time) × 100 = 71 / (71 + 287) × 100 = 19.8%
Thus Duty Factor% (per stride) + Flight Ratio (per step) will not add up to 100%
Intervals.icu will implement these metrics in this way assuming we are all in agreement.
4 Likes
The fastest set:
// Inputs assumed: stance_time (ms), cadence (RPM / strides per min), speed (m/s)
let duty_factor_pct = null;
let step_time = null;
let stride_time = null;
let flight_time = null;
let flight_ratio = null;
if (cadence > 0 && stance_time > 0) {
// Pre-compute inverse cadence in RPM
const inv_cadence = 1 / cadence;
// 1. Step Time & Stride Time (ms)
step_time = 30000 * inv_cadence; //30000 / cadence
stride_time = step_time * 2; // 60000 * inv_cadence // 60000 / cadence
// 2. Duty Factor (% per full stride) -> Stance Time / Stride Time * 100
duty_factor_pct = (stance_time / stride_time) * 100;
// 3. Flight Time (ms per step)
flight_time = step_time - stance_time;
// 4. Flight Ratio (% per step) -> Flight Time / Step Time * 100
flight_ratio = (flight_time / step_time) * 100;
}
1 Like
Curious: why the speed in the condition?
I run with Stryd (duo). I would be happy to contribute. The data is interesting but their own data platform doesn’t really allow you to use the data besides individual workouts. I do some analysis through Intervals and with Claude but better support would be welcoming.
1 Like
Thanks everybody for your help, here is a more formal post of all the changes and additions New Running Metrics
3 Likes
Great idea. I am running using Amazfit/Zepp Balance 2. I am happy to contribute with files if needed. Thanks