Commit Graph

23 Commits

Author SHA1 Message Date
Lars Berning 8dc8146abf
fixes #69 error in angularDisplacement calculation 2022-03-08 20:09:42 +01:00
Lars Berning 70f6623af6
updates some comments, bumps version 2022-02-12 20:21:08 +01:00
Lars Berning dec19fdd1f
adds feature to shutdown device, adds some minor UI improvements 2022-02-12 11:32:31 +00:00
Lars Berning 943518b986
implements confirmation dialogs, improvements to strava upload 2022-02-11 22:37:36 +00:00
Lars Berning 15cdf2e22f
adds initial strava integration to upload activities 2022-02-05 13:15:43 +01:00
Lars Berning a4a7a1b0a0
adds features to store recordings with gzip compression, fixes a bug with the recording config 2022-02-01 20:20:32 +01:00
Lars Berning 2ccd54a65d
adds a constant metric stream for BLE devices to fix some connectivity issues 2022-02-01 19:25:51 +01:00
Lars Berning fc00c01e61
fixes a problem that prevented session recording from working 2022-01-30 13:52:17 +01:00
Jaap van Ekris 47e71ea5ef
Drag poising bugfix (#44)
* 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..
2022-01-10 21:41:21 +01:00
Lars Berning 4196009237
adds documentation on the physics model (#25)
* adds documentation on the physics model
2021-11-08 11:32:08 +01:00
Lars Berning f6c46c0f9f
updates some documentation 2021-11-07 22:02:15 +01:00
Lars Berning 02359e819d
updates documentation, fixes typos 2021-11-07 21:51:11 +01:00
Lars Berning 8f064a0aab
fixes typos, updates documentation to new names 2021-11-07 15:14:51 +01:00
Jaap van Ekris 7ee25292fc
Improved Rowing Engine (#24)
* 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>
2021-11-07 14:53:11 +01:00
Lars Berning 602766c4a0
implements tcx and raw export 2021-05-20 13:40:42 +02:00
Lars Berning b019fb3bd4
adds more settings, adds auto adjust for damping 2021-05-05 12:16:04 +02:00
Jaap van Ekris 1b895972af
refactores FlankDetector, extracts some flank settings
* Improvement of the MovingflankDetector

Simplified the call of the moving flank detector, making it dependent on the settings

* Update MovingFlankDetector.js

Cleaned up the call to the MovingFlankDetector

* Added heartrate data to TCX

* Added parameters for the flankdetector

Added parameters for the flankdetector (flankLength and numberOfErrorsAllowed)

* Gave the RX800 some room as the settings haven't stabilised yet (and I think the recording is with a different damper setting than the source tree)
2021-05-05 05:41:11 +02:00
Lars Berning 475f0f4835
improves regression tests, renames some settings 2021-05-02 15:02:58 +02:00
JaapvanEkris 2c6819ca02
implements better flank detection, adds spreadsheet for analysis
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>
2021-04-30 22:03:47 +02:00
JaapvanEkris b4c53336cc
Added settings for the RX800 and stroke detection
Added settings for the RX800 for each damper setting, and the calibrated data for the WRX700 and DKNR320 based on their calibration sets. 
Also added the data for the improved stroke detection mechanism (like the magicConstant).
2021-04-29 14:19:04 +02:00
Lars Berning d385ad78d7 adds support for ant+ heart rate monitors 2021-04-22 21:03:59 +02:00
Lars Berning 15c1553e42 adds an option to configure the ftms device names 2021-04-21 20:39:27 +02:00
Lars Berning 55cde69ce6 moves rower configuration into a config file and adds rower presets 2021-04-20 21:48:34 +02:00