jamesg wrote: ↑November 26th, 2023, 4:59 am
Unless you want things like...
I certainly do, which is why I use a C2 with a PM5 and Ergdata. Otherwise we can't know what we are actually doing nor how.
With OpenRowingMonitor we produce these as well. Then you need to do specific calculations done every impulse, which is doable, even on a simple Raspberry Pi.
jamesg wrote: ↑November 26th, 2023, 4:59 am
Clearly if we count the impulses and know the time, release to release, we can calculate the average flywheel speed. We must also find and use an "average" drag torque; taking account that drag torque has a cubic relationship with speed. Does that lead to complications?
It does lead to complications, but not in the way you'd think. Because the drag is a function of the angular velocity (ω) you end up with pretty nasty math. Annu Dudhia provides two formulae for the drag
k = - I ( dω / dt ) (1 / ω^2 )
k = I d(1/ω) / dt
where the first formula can be used rotation for rotation (no explanation given here) and the second accross the entire recovery.
The second formula comes closest to your statement: you need the velocity ω at the begin and end of the recovery.
However, while this is sound in theory, it is a bad approach in practice, as it is based in math that isn't robust against noise and outliers. The newer C2's pulses fluctuate a bit through the rotation (we tested across devices, it is systematic), leading to a sine-like pattern when the flywheel is in a constant velocity. So this throws in some noise in the data in both t and ω. As ω is calculated by dividing angular displacement by the (rather small amoumt of) time between two impulses, errors tend to be enlarged significantly. This makes this approach unstable by definition.
Another source of noise is stroke detection: if you are not carefull there, flanks of the drive are included, thus leading to errors when using just the start- and endpoint of the recovery for that. As the flywheel is a discrete pulse generator (at least for us, C2 might be much smarter than we and actually use the analoge signal here), we have no clue about the exact position of the drive start. So including a flank is a real issue here, causing additional noise.
With OpenRowingMonitor we tested both formulae, but the results tend to be unstable. Averaging across a significant number of strokes helps, but it isn't flawless from the first stroke in.
Hence our use of linear regression to determine the drag, as with about 150 datapoints in a recovery, it is pretty robust against noise and outliers. Adittional filtering on the R^2 works extremely well, allowing a structural fit of over 0.98.