Guide for rower specific settings

This guide helps you to adjust the rowing monitor specifically for a new type of rower or even for your specific use, when the default rowers don’t suffice.

Why we need rower specific settings

No rowing machine is the same, and some physical construction parameters are important for the Rowing Monitor to be known to be able to understand your rowing stroke. By far, the easiest way is to select your rower profile from config/rowerProfiles.js and put its name in config.js (i.e. rowerSettings: rowerProfiles.WRX700). The rowers mentioned there are maintained by us for OpenRowingMonitor and are structurally tested with changes typically automatically implemented.

If you want something special, or if your rower isn’t in there, this guide will help you set it up. Please note that determining these settings is quite labor-intensive, and typically some hard rowing is involved. If you find suitable settings for a new type of rower, please send in the data and settings, so we can add it to OpenRowingMonitor and make other users happy as well.

Settings you must change for a new rower

The key feature for Open Rowing Monitor is to reliably produce metrics you see on the monitor, share via Bluetooth with games and share with Strava and the like. Typically, these metrics are reported on a per-stroke basis. So, to be able to use these metrics for these goals, you need two key parts of the settings right:

Getting stroke detection right

A key element in getting rowing data right is getting the stroke detection right, as we report many metrics on a per-stroke basis. The Impulse Noise reduction settings reduce the level of noise on the level of individual impulses. You should change these settings if you experience issues with stroke detection or the stability of the drag factor calculation. The stroke detection consists out of three types of filters:

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 rest of the stroke detection settings.

Another set of settings are the flankLength and numberOfErrorsAllowed setting, which determine the condition when the stroke detection is sufficiently confident that the stroke has started/ended. In essence, the stroke detection looks for a consecutive increasing/decreasing impulse lengths, and the flankLength determines how many consecutive flanks have to be seen before the stroke detection considers a stroke to begin or end. Please note that making the flank longer does not change your measurement in any way: the algorithms always rely on the beginning of the flank, not at the current end. Generally, a flankLength of 2 to 3 typically works. Sometimes, a measurement is too noisy, which requires some errors in the flanks to be ignored, which can be done through the numberOfErrorsAllowed setting. For example, the NordicTrack RX-800 successfully uses a flankLength of 9 and a numberOfErrorsAllowed of 2, which allows quite some noise but forces quite a long flank. This setting requires a lot of tweaking and rowing.

At the level of the stroke detection, there is some additional noise filtering, preventing noise to start a drive- or recovery-phase too early. The settings minimumDriveTime and minimumRecoveryTime determine the minimum times (in seconds) for the drive and recovery phases. Generally, the drive phase lasts at least 0.500 second, and the recovery phase 1.250 second for recreational rowers.

For the noise reduction settings and stroke detection settings, you can use the Excel tool. When OpenRowingMonitor records a log (set setting createRawDataFiles to true), you can paste the values in the first column of the “Raw Data” tab (please observe that the Raspberry uses a point as separator, and your version of Excel might expect a comma). From there, the Excel file simulates the calculations the OpenRowingMonitor makes, allowing you to play with these settings.

Please note that changing the noise filtering and stroke detection settings will affect your calculated dragFactor. 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.

Getting the metrics right

There are some parameters you must change to get Open Rowing Monitor to calculate the real physics with a rower. These are:

Here, some rowing and some knowledge about your rowing gets involved. Setting your damping factor is done by rowing a certain number of strokes and then seeing how much you have rowed and at what pace. If you know these metrics by hart, it just requires some rowing and adjusting to get them right. If you aren’t that familiar with rowing, a good starting point is that a typical distance covered by a single stroke at 20 strokes per minute (SPM) is around 10 meters. So when you row a minute, you will have 20 strokes recorded and around 200 meters rowed. When possible, we use the Concept Model D (or RowerErg) as a “Golden standard”: when you know your pace on that machine, you can try to mimic that pace on your machine. Most gym’s have one, so trying one can help you a lot in finding the right settings for your machine.

Settings you COULD change for a new rower

In the previous section, we’ve guided you to set up a real robust working rower, but it will result in more crude data. To improve the accuracy of many measurements, you could switch to a more accurate and dynamic rower. This does require a more sophisticated rower: you need quite a few data points per stroke, with much accuracy, to get this working reliably. And a lot of rowing to get these settings right is involved.

More accurate stroke detection

The naturalDeceleration setting determines the natural deceleration. This setting is used to distinguish between a powered and unpowered flywheel. This must be a negative number and indicates the level of deceleration required to interpret it as a free spinning flywheel. The best way to find the correct value for your rowing machine is a try and error approach. You can also set this to zero (or positive), to use the more robust, but not so precise acceleration-based stroke detection algorithm. Setting it to -0.1 enables the alternative less robust algorithm. By seeing how your stroke detection behaves during a row, you can slowly lower this number until you start missing strokes.

Please note that changing this stroke detection will affect your calculated dragFactor.

Dynamically adapting the drag factor

In reality, the drag factor of a rowing machine isn’t static: it depends on air temperature, moisture, dust, (air)obstructions of the flywheel cage and sometimes even speed of the flywheel. So using a static drag factor is reliable, it isn’t accurate. Open Rowing Monitor can automatically calculate the drag factor on-the-fly based on the recovery phase (see this description of the underlying physics). To do this, you need to set the following settings:

Please note that you don’t need to use the dynamic drag factor to test your settings. To see the calculated drag factor for your rowing machine, please ensure that the logging level of the RowingEngine is set to ‘info’ or higher. Then do some strokes on the rower and observe the calculated drag factor in the logging.

It must be noted that you have to make sure that your machine’s measurements are sufficiently free of noise: noise in the drag calculation can have a strong influence on your speed and distance calculations and thus your results. 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 as it takes in account environmental conditions. When your machine’s power and speed readings are too volatile it is wise to turn it off

Settings you can tweak

Some people want it all, and we’re happy to give to you when your rower and your Raspberry Pi can handle the pain. Some interesting settings: