fixes typos, updates documentation to new names
This commit is contained in:
parent
dd36e2b141
commit
8f064a0aab
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
})
|
||||
*/
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue