Skip to content

Conversation

@JaapvanEkris
Copy link
Contributor

No description provided.

JaapvanEkris and others added 30 commits February 7, 2024 11:35
Update to fix an error in both Theil-Sen regressors, as the arrays used were not processed completely. Thanks to @Abasz for reporting.
Change the startup and powerdown behaviour to depend on Angular velocity, as that is constructed using the TS-calculation, reducing the dependency on an individual measurement.

Inserted more explicit memory management by setting values to null before destroying the node, in order to make the Garbage collector's work a bit easier. This fixes a lot of memory leaks.

Performance improvement of the Quadratic TS Series: Implementation of a lazy algorithm to calculate B, C and goodnessOfFit, avoiding the unneccessary calculation of them when not needed/used.

Improved coding style: Instead of making explicit function calls, we now expose the underlying series, allowing use of their functions directly.

Adds different rowers, including the model C (see laberning#157 )
# New functionality in 0.9.5

- Added **FIT-File support**: you an now automatically generate a FIT-file after a rowing session, which alows for a more detailed reporting than the tcx-format, and is commonly accepted by most platforms
- **Introduction of the session manager**, which provides support for intervals, splits, rest intervals and spontanuous pauses in the session and also adds these to the FIT, tcx and RowingData recordings. Please note, setting predetermined intervals and splits in a user friendly way (via PM5 and webinterface) is still a ToDo that is intended for 1.0.0.
- **Improvement of Magnetic rower support**: the new session manager makes sure that the session is nicely stopped, even when the flywheel has stopped quite abruptly before pause timeouts have time to kick in. This is the case on some magnetic rowers which have an extreme high drag, resulting in very short spin down times of their flywheel.

# Bugfixes and robustness improvements in 0.9.5

- **Improvement of the architecture**: we cleaned up the old architecture and went to a more message bus structure where clients are responsible for listening to the datatransmissions they are interested in. See [the architecture description](Architecture.md) for a deep-dive of the implementation. Key benefit is that this is more maintainable as it allows serving data more easily to totally different clients (webGUI, recorders and BLE/ANT+) with totally different needs, making future enhancements easier.
- **Improvement of Bluetooth stability**: we moved away from abandonware's BLE NoBle/BleNo implementation and moved to stoprocent's implementation, as that package is better maintained and works better with newer installs of BlueZ, which should fix some issues on Raspberry Pi Bookworm. Unfortunatly, none of the NoBle/BleNo descendents are immune to some specific BlueZ issues (see known issues).
- **Performance improvement of the TS estimator**, further reducing CPU load, which significantly improves accuracy of the measurements and metrics as the Linux kernel has an easier job keeping the time accurate.
- **Removed a lot of memory leaks**, although only being problematic in large simulations (i.e. over 3000K), we want to keep our code to behave nice
- **Improved robustness of the stroke detection algorithm**
- **Validation of the engine against a PM5 for over 3000KM**, where the deviation is a maximum of 0.1%

# Known issues in 0.9.5

- **Bluetooth Heartrate can't be switched dynamically**: due to some underlying changes in the OS, BLE heartrate monitors can't be activated through the GUI without crashing the BLE metrics broadcast (see [the description of issue 69](#69)). As this is an issue in the OS, and all previous versions of OpenRowingMonitor are also affected by this issue. Version 0.9.5 has a workaround implemented that mitigates this at startup. So configuring the use of a BLE heartrate monitor in the config file should work.
We calculate pace in a safe way in the RowingMetrics, no need to repeat that here in an unsafe manner
Improvement of the initialization to remove the dependency of the SessionManager to send a metricsUpdate at the start
Replaced Chromium with Firefox as it saves almost a complete core on a Raspberry Pi 4B
Improved startup behaviour that let the app crash on a shutdown at start
Fixes timing, split/interval and pause issues
EXR triggers a 'startOrResume' upon closure via PM5's CSAFE, triggering a metrics with pause flags being sent, being added to the recordings, setting them off
EXR triggers a 'startOrResume' upon closure via PM5's CSAFE, triggering a metrics with pause flags being sent, being added to the recordings, setting them off
EXR triggers a 'startOrResume' upon closure via PM5's CSAFE, triggering a metrics with pause flags being sent, being added to the recordings, setting them off
@JaapvanEkris JaapvanEkris deleted the 0.9.6-PM5Bugfixes branch May 25, 2025 13:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants