* Bugfix for dragfilter poisoning prevention
Implementation of a more refined version of the dragfactor calculation to prevent the dragfactor being stuck at certain values after pauses, etc.
* Addition of new settings
Implementation of a more refined version of the dragfactor calculation to prevent the dragfactor being stuck at certain values after pauses, etc.
Two changes:
* Made the smoothing function of the dragfactor configurable from the config-file (dampingConstantSmoothing) instead of hardcoded. as it should have been from day one
* Implementation of a new filter to prevent dragfactor poisoning by noisy data, based on another setting (dampingConstantMaxChange). The new filter will not get stuck but will follow the direction of the change but is limited to the setting..
* A more refined rowing session state (PM5)
Introduces a more refined session state needed for the PM5 rower session simulation, as well as a cleaner setup for the metrics to stop when the rower is stopped.
* Added the WorkoutState and rowingState
Added the WorkoutState and rowingState to the PM5 interface, to prevent EXR to start too early.
* Added a link to the brilliant work of Nomath
Added a link to Nomath's work, as it is a brilliant piece of work that independently verifies our calculations and provides a basis for support of the Concept2 rower.
* Bugfix in Instantanous Torque calculation
The Instantanous Torque calculation wasn't cleaned up sufficiently, causing issues in the powercurve.
* unifies reset of heartrate value at different places
* unifies naming with other variables status -> state
* just some minor link adjustments in documentation
Co-authored-by: Lars Berning <151194+laberning@users.noreply.github.com>
* Moved .doc to .md
Moved the Word document to a more open format
* Update of the file based on the new settings
Update of the settings documentation due to the introduction of the new RowingEngine
* Moved .doc to .md
Moved the information to the .md file, updated with the design decissions made in the new RowingEngine.
* Splitting the hardware set-ups for specific rowers
Split off the WRX700 hardware set-up from the generic setup, to allow for other rower-specific set-ups to be created (easier to read and better for search engines).
* Removal of generic text
* SPlit the generic from the WRX700
* Fixed a very rare bug
A very rare condition can cause the noise correction filter to get stuck and dismiss all subsequent values. Now the number of corrections is maximised preventing that situation.
* Code refactoring
Refactoring of the code (added calculateLinearVelocity(), calculateCyclePower(), calculateTorque() functions) to reduce code duplication across phases.
* Fixed a very rare bug
A very rare condition can cause the noise correction filter to get stuck and dismiss all subsequent values. Now the number of corrections is maximised preventing that situation.
* Code refactoring
Refactoring of the code (added calculateLinearVelocity(), calculateCyclePower(), calculateTorque() functions) to reduce code duplication across phases.
* fixes some typos, fixes some links, renames some files
Co-authored-by: Lars Berning <151194+laberning@users.noreply.github.com>
* adds verification information
* gets description directly from github
* reduces some margins
* removes header and footer in print view
* some test adjustments
* adds some metadata
* fixes a warning
* updates backlog
* Update to accomodate the new RowingEngine
Update of the MovingFlankDetector to provide the values needed to determine the speeds at the beginning of the flank.
* Created the MovingAverager for RowingEngine 2.0
Added the MovingAverager to accomodate the RowingEngine 2.0
* Update to RowingEngine 2.0
Update based on the great theoretical work of Anu Dudhia and the practical experiences of Dave Venrooy.
* Added to explain RowingEngine 2.0 design
A rationale for explaining the RowingEngine 2.0 design, based on the great theoretical work of Anu Dudhia, and the practical work of Dave Venrooy and Marinus van Holst, as well as the great feedback from Lars Berning.
* Update to accomodate the new RowingEngine
Update to the rower settings to accommodate the new RowingEngine. Please note that the modifications need to be verified by the respective users.
* Modifications to the RX800 tests
Modifications to the RX800 to bring it in line with the Concept2 Power and distance measurements.
* BUGFIX: Prevent ghost-strokes at end of session
This change to isAccelerating prevents stroke-detection to detect a stroke when the currentDt "flatlines". This typically happens when the error correction kicks in when you quit rowing (and thus the rowerSettings.maximumTimeBetweenImpulses is exceeded). It is bad (flatlining isn't acceleration), and this ghost-stroke causes havoc in the GUI: all measurements are reset again to random values instead of the nice indicators normally used.
* BUGFIX: Prevent ghost-strokes at end of session
This change to isAccelerating prevents stroke-detection to detect a stroke when the currentDt "flatlines". This typically happens when the error correction kicks in when you quit rowing (and thus the rowerSettings.maximumTimeBetweenImpulses is exceeded). It is bad (flatlining isn't acceleration), and this ghost-stroke causes havoc in the GUI: all measurements are reset again to random values instead of the nice indicators normally used.
* Added defensive programming
In some rare cases not rounding led to a buffer overflow, so added defensive programming to prevent this.
* Update MovingFlankDetector.js
* Improved stroke detection algorithm accuracy
Improvement of the Stroke detection algorithm: when naturalDeceleration is specified in the settings, it will only consider something a Revocery when this level of deceleration is encountered for the FlankLength.
* Made the RowingEngine more stateful
Removed some bugs, added a lot of defensive programming and made the RowingEngine report the key statistics every impuls to create a more fluid experience on the monitor. To do this, the rowingEngine maintins and reports absolute values to rowingStatistics, instead of relative.
* Improved stroke detection algorithm accuracy
Improvement of the Stroke detection algorithm: when naturalDeceleration is specified in the settings, it will only consider something a Revocery when this level of deceleration is encountered for the FlankLength.
* Modification to fit new RowingEngine
* Addition of new parameters for stroke detection
Added new parameters for stroke detection and monitor fluidity
* Fixed missing bracket
* Updated to more fluid RowingStatistics
Moved the timer from a static timer to the raw measurements of the flywheel, and the distance more frequently updated, to keep all data consistent. Also made the GUI-updates more fluid, responsive and dependent on settings: this more fluid GUI update mechanism is dependent on the screenUpdateInterval setting and moving averager dependent on a setting (numOfPhasesForAveragingScreenData)
* Made all monitor updates consistent
* Accommodate more frequent update of the monitors
Update to accommodate the more frequent updates, and to accommodate the reset for the RowingEngine
* improves some testcases, fixes some minor code styling and duplicate definitions
* Fixed a comment about dragfactor
* Added parameters for the new RowingStatistics.js
Added screenUpdateInterval, numOfPhasesForAveragingScreenData and maxCycleTimeBeforePause as config parameters to remove statically determined parameters in RowingStatistics.js
* Added RX800 as second testbed
* fixes some problems that caused the engine to crash
* uses non sanitized durations for now
* updates some settings, fixes some typos
* wires the correct timer configuration, fixes a problem where SPM would not reset to 0
* fixes a crash problem in workout recorder, fixes fallback value for strokeTime
* relaxes constraint on stroke time
* updates some explanatory text, updates some rower parameters
Co-authored-by: Lars Berning <151194+laberning@users.noreply.github.com>
Added the flankdetector, to reliably detect an acceleration or deceleration of the flywheel
Added extra metrics for the creation of TCX-files
Added extra metrics (speed in m/s and cadence) to allow future export of this data to Garmin TCX files, which everybody seems to love.
I increased the priority of the GPIO-service, as I noticed that much of the measurement noise originates from delayed read-outs of the GPIO.
An Excel tool to "play" with the settings of a rower, to adjust the settings found in the rowerprofiles.js
Adds test and data for RX800 rower
Lightweight version of Excel file
Co-authored-by: Lars Berning <151194+laberning@users.noreply.github.com>