how are split times calculated #179
Replies: 1 comment
-
That is because you are looking at the wrong place. First, please look at the https://github.com/JaapvanEkris/openrowingmonitor/ repository, as the repo you are looking at hasn't seen an update in three years and is stale. It misses critical updates and is lightyears behind our current thinking about how metrics should be clculated. Secondly, if you want to look at code, look at the place that actually calculates the linear velocity instead of the code that only smoothens it for presentation. So you have to look at which is https://github.com/JaapvanEkris/openrowingmonitor/blob/main/app/engine/Rower.js#L219 , which does calculate the Linear velocity. Thirdly, to spare you parsing our not-always-easy-to-read code, you can look at https://github.com/JaapvanEkris/openrowingmonitor/blob/main/docs/physics_openrowingmonitor.md#linear-velocity , which explains how we calculate the linear velocity. As this is completely based on Anu Dudhia's formula's, and is a 99,9% match to Concept2's results, it is pretty solid.
You shouldn't handle idle time there in the first place as that is NOT how average velocity is defined. In rowing, average velocity is measured across the stroke (as velocity varies a lot during the stroke). We choose to skip the fuss and calculate linear velocity directly based on the angular distance travelled, as it eliminates rounding errors. Idle time is excluded from these calculations, and is typically triggered at the 6 second mark: if there was no drive for over 6 seconds, it is considered a pause. New versions of ORM insert a split to account for the pause (isolating the work and non-work portions of a workout to improve analysis further down the line). Older versions of ORM (like the antique version here) simply stop recording.
Looking at the wrong place doesn't help :). But even this stale version has a document explaining the physics in detail.
I don't know how a PM5 works internally, but ORM is mostly based on Anu Dudhia's work, unless we were certain we have a more robust approach (this is especially true when determining angular velocity, angular acceleration and dragfactor). I compare the results on a daily base against a PM5 (over 1000 sessions) and the results are extremely close. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello, I'm new here. I was trying to find out how the Concept2 PM5 calculates split times, and I found ORM project. this is super cool.
I was reading your docs and even some code to see how ORM calculates split time.
I still dont understand it exactly.
Maybe the question goes deeper to the speed of the boat which I found here through reading your docs.
Anyway, my assumption has always been that instant split time, in units of sec/500m is calculated as: 500/(distance_covered_over_last_stroke_cycle/time_past_over_last_stroke_cycle) where, distance is in meters, and time in seconds.
then my assumption for average has been: 500/(distance_covered_in_this_peice/time_past_in_this_peice). I'm very skeptical of this one because it can easily produce not so meaningful values if there is any idle idle time.
I did find your averager code, but got kind of lost at that point so I thought I'd just ask since maybe someone here knows the answer already.
how does ORM compute average and instant split time, and how does it differ from how the Concept2 PM5 does it?
thanks in advance
Beta Was this translation helpful? Give feedback.
All reactions