From 07f41297c2b7dde8ef704ce03b656ff853fd58d9 Mon Sep 17 00:00:00 2001 From: cyteen Date: Thu, 21 Nov 2024 16:15:29 +0000 Subject: [PATCH] Small changes to README_coach.md --- docs/README_coach.md | 108 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 89 insertions(+), 19 deletions(-) diff --git a/docs/README_coach.md b/docs/README_coach.md index ed09c58..8096d3d 100644 --- a/docs/README_coach.md +++ b/docs/README_coach.md @@ -1,5 +1,21 @@ # Extending open rowing monitor (mostly javascript) +We can use python functions via node.json to use [RowingData](https://pypi.org/project/rowingdata/) [See below](## RowingData) + +* [child_process.spawn() function](https://nodejs.org/api/child_process.html#child_processspawncommand-args-options) +* [child_process.spawnSync](https://nodejs.org/api/child_process.html#child_processspawnsynccommand-args-options) + +[How to run a python script from node.js](https://www.halo-lab.com/blog/how-to-run-a-python-script-from-node-js) + +or we can use [node-calls-python](https://www.npmjs.com/package/node-calls-python) to call +Python from Node.js directly in-process without spawning processes using an +embedded Python interpreter. [More examples](https://github.com/hmenyus/node-calls-python/tree/main/test) + +If the execution time of your Python code is less than creating a new process, +you will see significant performance problems because your Node.js code will +keep creating new processes instead of executing your Python code. Suppose you +have a few NumPy calls in Python,you don't want to create a new process for that + ## Libraries * [Node.js](https://nodejs.org/en) is a JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts. @@ -220,7 +236,7 @@ https://www.chartjs.org/docs/latest/samples/line/line.html * Calories used (kcal) * Training Duration * Heart Rate (supports BLE and ANT+ heart rate monitors, ANT+ requires an ANT+ -USB stick USB id 0x1008 or 0x1009) + USB stick USB id 0x1008 or 0x1009) * web sockets front end * BLE (FTMS indoor bike, FMTS rower, concept2 PM) @@ -235,12 +251,18 @@ and csv raw data. Make the data accessible in python and create useful plots. -* Color HR band charts or Pie Charts (implemented) -* Plot drive length, drive time, and other erg related parameters as a function -of time or distance (implemented) -* Create histograms (Do-it-yourself). -* And much more (do-it-yourself). You’ve got the entire Python matplotlib at -your disposal. Goodbye excel! +* Upload fitness data captured in TCX format to the Concept2 logbook +* Get erg data captured with apps that have no “upload to Concept2” + functionality and upload them to the Concept2 logbook +* Get erg data captured with apps that have no TCX export functionality and + convert hem to TCX +* Make the data accessible in python and create useful plots. + * Color HR band charts or Pie Charts + * Plot drive length, drive time, and other erg related parameters as a function + of time or distance (implemented) + * Create histograms (Do-it-yourself). + * And much more (do-it-yourself). You’ve got the entire Python matplotlib at + your disposal. The project is based on: @@ -278,19 +300,18 @@ program in relation to improvements over time. Heart rate should remain below upper limit of "expected zone". Advise that heart rate above upper limit by >1 bpm means user must reduce effort. - * Instruction on when to take rest days. * Recording of heart rate after work-outs too, to identify pending illness. * Coach warns of overtraining when performance declines steadily over, say 4 or more, days. * When overtraining is indicated, Coach suggests: skip a day or two; eat more; - Coach also warns of overtraining when, after a skip, performance has not - returned to before. + Coach also warns of overtraining when, after a skip, performance has not + returned to before. * Coach suggests work rates based on recent past performance. * Perhaps present this as a choice for the user, perhaps between: - (Coach's default, perhaps based on yesterday's performance), and (user choice). - (yesterday's performance) and (the day before's performance). - (low|easier|"get the job done") versus (high|harder|"make a mark"). + (Coach's default, perhaps based on yesterday's performance), and (user choice). + (yesterday's performance) and (the day before's performance). + (low|easier|"get the job done") versus (high|harder|"make a mark"). * Marking of results of rows rows taken in contravention of instructions. * Display of recorded rows highlighting contraventions, say in red. * Have an optional way to, temporarily, display results without the red. @@ -309,8 +330,44 @@ program in relation to improvements over time. * For athlete levels 1 (not exercised for 3 years) to 5 (hero). * Have table of suggested rowing effort and duration. +## Sensor Methods + +### IMU + +motion analysis, most require athletes to wear sensors to acquire their posture data; however, this method easily introduces noise due to friction during motions + +[AUTOMATED ROWER ASSIGNMENT TO ROWING EVENTS: A MACHINE LEARNING APPROACH](https://commons.nmu.edu/cgi/viewcontent.cgi?article=2810&context=isbs) + +### Video + +2D pose analysis using [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) system to capture the skeletal joints of individuals, even in complex postures, using a simple camera. + +[OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) Real-time multi-person keypoint detection library for body, face, hands, and foot estimation, with python api. +[OpenPose Video](https://www.youtube.com/watch?v=OgQLDEAjAZ8) + +[Automatic Rowing Kinematic Analysis Using OpenPose and Dynamic Time Warping]() + +[Intelligent Performance Evaluation in Rowing Sport Using a Graph-Matching Network](https://pmc.ncbi.nlm.nih.gov/articles/PMC10532480/) +This study aimed to develop a video-based approach to analyze the performance of +rowing poses of rowing pairs. To enable effective automatic comparison of rowing +poses, the OpenPose system was used to extract robust rowing pose features and +convert them into a graph structure. Subsequently, the GEM and GMN models were +utilized to analyze the similarities in rowing postures between each pair of rowers. + +### [Rowsandall](https://analytics.rowsandall.com/) Rowsandall Rowing Data Analytics + +[Rowsandall Manual](https://analytics.rowsandall.com/2022/04/12/training-planning-updated-manual-for-rowsandall-com/) +[In-Stroke Metric Analysis Comparison](https://analytics.rowsandall.com/2022/10/29/in-stroke-metric-analysis-comparison/) +[Force Curves and In-Stroke Analysis](https://analytics.rowsandall.com/2024/06/20/how-to-work-with-force-curves-and-in-stroke-analysis/) +[Quantifying Training Intensity Distribution](https://analytics.rowsandall.com/2021/06/10/quantifying-training-intensity-distribution-new-tool/) + +[RowingData](https://pypi.org/project/rowingdata/) + + ## Other projects +### [Rider ride data from TCX plotted](https://www.kaggle.com/code/runesh/rider-ride-data-from-tcx-file-plotted-on-a-graph) python notebook + ### [dynrow](https://github.com/monsdar/dynrow) Displays thorough statistics about your current workout. In addition to that @@ -318,15 +375,15 @@ there should be a variety of bots available. Here are a few ideas: * *Constant pace:* This is useful if you want to row in a certain tempo * *Boomerang:* They're rowing at a constant pace, but if they get behind you -they will row faster. If they get too far in front, they'll decelerate to -let you keep up with them. They're almost like the constant pace boats, but -they'll always be around. This leads to having opponents around even at the -longest training sessions + they will row faster. If they get too far in front, they'll decelerate to + let you keep up with them. They're almost like the constant pace boats, but + they'll always be around. This leads to having opponents around even at the + longest training sessions * *Heartrate:* You set up your desired target heart rate and the bot will row -faster/slower according to your current heart rate + faster/slower according to your current heart rate * *Ghostrider:* This bot replays a previously rowing session of yourself * *Intervals:* Usually this bot runs on a constant pace, but it'll push the -tempo from time to time. + tempo from time to time. ### Elevate @@ -372,6 +429,12 @@ BLE service). This is displayed as an ECG trace and heart rate graph over time. ### Android +### [Quiske App](https://www.rowingperformance.com/tutorial) + +[Android 13 app](https://play.google.com/store/apps/details?id=com.quiske.rowingperformance&hl=en_GB) plus 'pod' (presumably an IMU) euro395 + +The phone is attached to the handle and the pod to the seat. + ### [EXR](https://play.google.com/store/apps/details?id=com.SaltyLemonEntertainment.EXR) EXR | Row together Virtually Subscription: € 7,95/month @@ -436,3 +499,10 @@ The PM6 Super Plus: because sometimes I'm just not feeling a track. Hate myself for adding this one but it would be cool as hell, plus great to be able to make changes (e.g. add 1000m to a steady state piece) mid-row without breaking rhythm. + +## Books + +* Biomechanics of Rowing -- Valery Kleshnev -- Crowood + for people who want to measure numbers in rowing, relate them to technique + and give specific advice to coaches and rowers. +* Rowing Faster - 2nd Edition -- Volker Nolte -- 2, 2011 -- Human Kinetics \ No newline at end of file