fixes typos, updates documentation to new names

This commit is contained in:
Lars Berning 2021-11-07 15:14:51 +01:00
parent dd36e2b141
commit 8f064a0aab
No known key found for this signature in database
GPG Key ID: 028E73C9E1D8A0B3
7 changed files with 21 additions and 22 deletions

View File

@ -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) {

View File

@ -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'

View File

@ -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
})
}
}

View File

@ -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,

View File

@ -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
},

View File

@ -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.

View File

@ -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
})
*/
}