From 8f064a0aab5cae68fb3c8c0a13ca7b5a35938cb5 Mon Sep 17 00:00:00 2001 From: Lars Berning <151194+laberning@users.noreply.github.com> Date: Sun, 7 Nov 2021 15:14:51 +0100 Subject: [PATCH] fixes typos, updates documentation to new names --- app/engine/MovingAverager.js | 2 +- app/engine/MovingFlankDetector.js | 2 +- app/engine/RowingEngine.js | 10 +++++----- app/engine/RowingStatistics.js | 10 +++++----- config/rowerProfiles.js | 6 +++--- docs/Modifying_Rower_Settings.md | 6 +++--- install/config.js | 7 +++---- 7 files changed, 21 insertions(+), 22 deletions(-) diff --git a/app/engine/MovingAverager.js b/app/engine/MovingAverager.js index 224b727..5ca1e8f 100644 --- a/app/engine/MovingAverager.js +++ b/app/engine/MovingAverager.js @@ -4,7 +4,7 @@ This keeps an array, which we can ask for an moving average - Please note: The array contains flankLenght + 1 measured currentDt's, thus flankLenght number of flanks between them + Please note: The array contains flankLength + 1 measured currentDt's, thus flankLength number of flanks between them They are arranged that dataPoints[0] is the youngest, and dataPoints[flankLength] the youngest */ function createMovingAverager (length, initValue) { diff --git a/app/engine/MovingFlankDetector.js b/app/engine/MovingFlankDetector.js index 8ab9386..72182fa 100644 --- a/app/engine/MovingFlankDetector.js +++ b/app/engine/MovingFlankDetector.js @@ -4,7 +4,7 @@ This keeps an array, which we can test for an upgoing or downgoing flank - Please note: The array contains flankLenght + 1 measured currentDt's, thus flankLenght number of flanks between them + Please note: The array contains flankLength + 1 measured currentDt's, thus flankLength number of flanks between them They are arranged that dataPoints[0] is the youngest, and dataPoints[flankLength] the oldest */ import loglevel from 'loglevel' diff --git a/app/engine/RowingEngine.js b/app/engine/RowingEngine.js index 8301242..3e3f10f 100644 --- a/app/engine/RowingEngine.js +++ b/app/engine/RowingEngine.js @@ -130,7 +130,7 @@ function createRowingEngine (rowerSettings) { if (recoveryPhaseLength >= rowerSettings.minimumRecoveryTime && recoveryStartAngularVelocity > 0 && recoveryEndAngularVelocity > 0) { // Prevent division by zero and keep useless data out of our calculations currentDragFactor = -1 * rowerSettings.flywheelInertia * ((1 / recoveryStartAngularVelocity) - (1 / recoveryEndAngularVelocity)) / recoveryPhaseLength - if (rowerSettings.autoAdjustDampingConstant) { + if (rowerSettings.autoAdjustDragFactor) { if (currentDragFactor > (movingDragAverage.getMovingAverage() * 0.75) && currentDragFactor < (movingDragAverage.getMovingAverage() * 1.40)) { // If the calculated dragfactor is close to that we expect movingDragAverage.pushValue(currentDragFactor) @@ -186,7 +186,7 @@ function createRowingEngine (rowerSettings) { speed: linearCycleVelocity, distance: totalLinearDistance, numberOfStrokes: strokeNumber, - instantanousTorque: currentTorque, + instantaneousTorque: currentTorque, strokeState: 'DRIVING' }) } @@ -205,7 +205,7 @@ function createRowingEngine (rowerSettings) { workoutHandler.updateKeyMetrics({ timeSinceStart: totalTime, distance: totalLinearDistance + driveLinearDistance, - instantanousTorque: currentTorque + instantaneousTorque: currentTorque }) } } @@ -258,7 +258,7 @@ function createRowingEngine (rowerSettings) { durationDrivePhase: drivePhaseLength, speed: linearCycleVelocity, distance: totalLinearDistance, - instantanousTorque: currentTorque, + instantaneousTorque: currentTorque, strokeState: 'RECOVERY' }) } @@ -277,7 +277,7 @@ function createRowingEngine (rowerSettings) { workoutHandler.updateKeyMetrics({ timeSinceStart: totalTime, distance: totalLinearDistance + recoveryLinearDistance, - instantanousTorque: currentTorque + instantaneousTorque: currentTorque }) } } diff --git a/app/engine/RowingStatistics.js b/app/engine/RowingStatistics.js index b377bee..de5d3e7 100644 --- a/app/engine/RowingStatistics.js +++ b/app/engine/RowingStatistics.js @@ -34,7 +34,7 @@ function createRowingStatistics (config) { let heartrate let heartrateBatteryLevel = 0 let lastStrokeDuration = 0.0 - let instantanousTorque = 0.0 + let instantaneousTorque = 0.0 let lastStrokeDistance = 0.0 let lastStrokeSpeed = 0.0 let lastStrokeState = 'RECOVERY' @@ -78,7 +78,7 @@ function createRowingStatistics (config) { lastStrokeDistance = stroke.strokeDistance lastStrokeState = stroke.strokeState lastStrokeSpeed = stroke.speed - instantanousTorque = stroke.instantanousTorque + instantaneousTorque = stroke.instantaneousTorque emitter.emit('strokeFinished', getMetrics()) } @@ -109,7 +109,7 @@ function createRowingStatistics (config) { lastStrokeDistance = stroke.strokeDistance lastStrokeState = stroke.strokeState lastStrokeSpeed = stroke.speed - instantanousTorque = stroke.instantanousTorque + instantaneousTorque = stroke.instantaneousTorque emitter.emit('recoveryFinished', getMetrics()) } @@ -117,7 +117,7 @@ function createRowingStatistics (config) { function updateKeyMetrics (stroke) { durationTotal = stroke.timeSinceStart distanceTotal = stroke.distance - instantanousTorque = stroke.instantanousTorque + instantaneousTorque = stroke.instantaneousTorque } // initiated when new heart rate value is received from heart rate sensor @@ -152,7 +152,7 @@ function createRowingStatistics (config) { split: splitTime, // seconds/500m splitFormatted: secondsToTimeString(splitTime), powerRatio: powerRatioAverager.weightedAverage() > 0 && lastStrokeSpeed > 0 ? powerRatioAverager.weightedAverage() : 0, - instantanousTorque: instantanousTorque, + instantaneousTorque: instantaneousTorque, strokesPerMinute: averagedStrokeTime !== 0 ? (60.0 / averagedStrokeTime) : 0, speed: speedAverager.weightedAverage() > 0 && lastStrokeSpeed > 0 ? (speedAverager.weightedAverage() * 3.6) : 0, // km/h strokeState: lastStrokeState, diff --git a/config/rowerProfiles.js b/config/rowerProfiles.js index 64b230d..2a35f0e 100644 --- a/config/rowerProfiles.js +++ b/config/rowerProfiles.js @@ -55,7 +55,7 @@ export default { // For a new Concept2 the Drag Factor ranges between 80 (Damper setting 1) and 220 (Damper setting 10). Other rowers are // in the range of 150 to 450 (NordicTrack). // Open Rowing Monitor can also automatically adjust this value based on the measured damping. To do so, set the setting - // autoAdjustDampingConstant to true (see below). + // autoAdjustDragFactor to true (see below). dragFactor: 1500, // The moment of inertia of the flywheel kg*m^2 @@ -68,13 +68,13 @@ export default { // values in the stroke recovery phase. If your rower produces stable damping values, then this could be a good // option to dynamically adjust your measurements to the damper setting of your rower. // When your machine's power and speed readings are too volatile it is wise to turn it off - autoAdjustDampingConstant: false, + autoAdjustDragFactor: false, // A constant that is commonly used to convert flywheel revolutions to a rowed distance // see here: http://eodg.atm.ox.ac.uk/user/dudhia/rowing/physics/ergometer.html#section9 // Concept2 seems to use 2.8, which they admit is an arbitrary number which came close // to their expectations. So for your rower, you have to find a credible distance for your effort. - // Also note that the rowed distance also depends on jMoment, so please calibrate that before changing this constant. + // Also note that the rowed distance also depends on flywheelInertia, so please calibrate that before changing this constant. // PLEASE NOTE: Increasing this number decreases your rowed meters magicConstant: 2.8 }, diff --git a/docs/Modifying_Rower_Settings.md b/docs/Modifying_Rower_Settings.md index 584e380..78780f8 100644 --- a/docs/Modifying_Rower_Settings.md +++ b/docs/Modifying_Rower_Settings.md @@ -12,8 +12,8 @@ Settings important for Open Rowing Monitor: * numOfImpulsesPerRevolution: tells Open Rowing Monitor how many impulses per rotation of the flywheel to expect. Although sometimes not easy to detect, you can sometimes find it in the manual under the parts-list * liquidFlywheel: tells OpenRowingMonitor if you are using a water rower (true) or a solid flywheel with magnetic or air-resistance (false) -* omegaDotDivOmegaSquare: tells OpenRowingMonitor how much damping and thus resistance your flywheel is offering. This is typically also dependent on your damper-setting (if present). To measure it for your rowing machine, comment in the logging at the end of "startDrivePhase" function. Then do some strokes on the rower and estimate a value based on the logging. -* jMoment: The inertia of the flywheel, which in practice influences your power values and distance. This typically is set by rowing and see what kind of power is displayed on the monitor. Typical ranges are weight dependent (see [this explanation](https://www.rowingmachine-guide.com/tabata-rowing-workouts.html)). +* dragFactor: tells OpenRowingMonitor how much damping and thus resistance your flywheel is offering. This is typically also dependent on your damper-setting (if present). To measure it for your rowing machine, comment in the logging at the end of "startDrivePhase" function. Then do some strokes on the rower and estimate a value based on the logging. +* flywheelInertia: The inertia of the flywheel, which in practice influences your power values and distance. This typically is set by rowing and see what kind of power is displayed on the monitor. Typical ranges are weight dependent (see [this explanation](https://www.rowingmachine-guide.com/tabata-rowing-workouts.html)). * Noise reduction settings. You should only change these settings if you experience issues. * minimumTimeBetweenImpulses * maximumTimeBetweenImpulses @@ -27,4 +27,4 @@ For the noise reduction settings and stroke detection settings, you can use the By changing the noise reduction settings, you can remove any obvious errors. You don't need to filter everything: it is just to remove obvious errors that might frustrate the stroke detection, but in the end you can't prevent every piece of noise out there. Begin with the noise filtering, when you are satisfied, you can adjust the stroke detection. -Please note that changing the noise filtering and stroke detection settings will affect your omegaDotDivOmegaSquare and jMoment. So it is best to start with rowing a few strokes to determine settings for noise filtering and stroke detection, and then move on to the other settings. +Please note that changing the noise filtering and stroke detection settings will affect your dragFactor and flywheelInertia. So it is best to start with rowing a few strokes to determine settings for noise filtering and stroke detection, and then move on to the other settings. diff --git a/install/config.js b/install/config.js index 7194ef7..35482b2 100644 --- a/install/config.js +++ b/install/config.js @@ -26,14 +26,13 @@ export default { // example: set custom rower settings: rowerSettings: { numOfImpulsesPerRevolution: 1, - omegaDotDivOmegaSquare: 0.03, - jMoment: 0.3, - liquidFlywheel: false + dragFactor: 0.03, + flywheelInertia: 0.3 } // example: set a rower profile, but overwrite some settings: rowerSettings: Object.assign(rowerProfiles.DKNR320, { - autoAdjustDampingConstant: true + autoAdjustDragFactor: true }) */ }