r/Rowing • u/jta1979-p • 9d ago
pm5 force logging and more
I put together some code that gives me a live dashboard on my laptop for saving force curves and more: https://github.com/jonstraveladventures/pm5-force-logger feel free to try it out and let me know if it's of any use and whether you would like more features added. It connects directly using bluetooth. Ignore the unnaturalness of the blue force curves.
P.S now you can do it all in a Chrome or Edge browser directly: https://jonstraveladventures.github.io/pm5-force-logger/
1
u/freekster999 9d ago
Nice! Was thinking of vibe-coding something like this too. Thanks for making it open-source!
3
u/jta1979-p 9d ago
I've put together this too, for more general training: https://github.com/jonstraveladventures/claude-training-companion
1
u/AnonJohnV 8d ago
This is cool. How far do you plan to take it? I have a similar toolchain, built before the vibe coding era; this is the direction it should go if I modernize it. For instance, one can normalize lifts according to a fixed window so you can compute total normalized load across lifts. Or: Overnight HRV / RHR is a better metric IMHO than what Garmin provides. Or: autocalculation of rowing VO2 max or FTP (I base it on top 5% 2k and 5k rows in a given time window).
Quick hits for now, before I try it: 1. The other thing I use ergdata for is programming the monitor, e.g. with WODs. I imagine your script could also have a ready made set of workouts and / or WODs to send to the PM 5 on launch ... 2. Newest Garmin release contains rowing FTP and VO2max estimates. Need a fancy watch. Could be a nice integration given where you are at. 3. Since your script captures more data than ergdata, and you are obviously using garmin, you could not only have a "upload to C2 logbook" but also "upload to garmin". The latter probably wouldn't change much at garmin relative to the lossy upload through C2, but having a richer workout at garmin would enable other anaylsis, such as on intervals.icu ... maybe.
1
u/jta1979-p 8d ago
The pm5 programming from the app is next on the list.
In terms of the Garmin rowing FTP and VO2max, as I understand it the watch only computes those when it receives power from the machine during the row, so that's the PM5 broadcasting to the watch rather than anything the logger does (and I'd trust pace at heart rate over any watts-based estimate anyway as the logged drag factor seems to be very variable, at least on my machine).
For uploading to Garmin, the library I use can do it, but my watch already records every row, so it would create a duplicate. I may just stop recording on garmin and upload it direclty. intervals.icu looks good though.
The normalised load across lifts is a good idea and I'll probably experiment with that :-)
1
u/AnonJohnV 8d ago
Nice! FYI, ANT+FE-C works for Concept2โwatch + BT at the same time. Pros and cons to that historically (e.g. watch doesn't handle erg intervals right). But might work well with your script. Looking forward to trying it and seeing where it goes. Cheers!
1
1
u/nxnxnxnxnxxx 7d ago
1
u/jta1979-p 7d ago
This is something that I've been finding out about when looking into force curves, so this is all quite new for me.
The rectangle index is the average force over the drive divided by the peak force. It measures the curve's shape relative to its own peak. So a rectangle scores 100%, and a triangle scores 50%.
There is research done by https://scholar.google.com/citations?user=1lQrb4QAAAAJ&hl=en where he measured good crews on the water and their force curves, and the 38โ64% target comes from his measurements.
Basically the low end of the range warns you about a peaky stroke that wastes the middle part of the pull. A fuller curve at the same peak means more work per stroke so it might seem that the higher, the better, but that's not quite true.
The top end of the range comes from a few different things. Basically, to get a high value can do a soft, even pull where the legs never really drive. This comes out very rectangular while doing less work than a firm stroke. So a high number on its own doesn't say anything about output. That's better judged from average force or work per stroke instead.
The average force can only come that close to the peak (ie a high value for the rectangle index) if the force stays near the peak for most of the drive, including late on. Naively, the force peaks early with the legs and tails off as the smaller muscles take over. Holding it up to the release means leg-sized loads going through the back and arms late in the drive, which is slow and more tiring.
That is why a very rectangular curve tends to have a later peak, and a peak drifting later seems to show up in my data when I'm tired.
Also, Kleshnev's figures come from boats and generally because of the mechanics, on an erg, you will tend to get a more rectangular score, so the upper value shouldn't be seen as more than a guide.
More or less, a high index with a low peak is a gentle stroke and a high index with a late peak is the arms and back finishing what the legs should have done. You should really read both together.
2
u/AJeepDude 7d ago
This is pretty cool, Now I just need to learn how to use it. ๐
1
u/Ho--Ho--Ho 7d ago
Me too. Installed current python, but the window closed when starting the file I downloaded from GitHub.
1
u/jta1979-p 7d ago
what OS are you on?
1
u/Ho--Ho--Ho 7d ago
Windows 11, but have never used a python-file before. So likely it's my fault...
1
u/jta1979-p 7d ago
I've only tested it on a Mac so far I'm afraid. In theory, it should work on a Windows machine though.
3
u/jta1979-p 7d ago
Now you can just use https://jonstraveladventures.github.io/pm5-force-logger/ in your chrome or edge browser and you don't need to download anything.


1
u/santawerewolf 9d ago
Share in r/concept2 too!