Skip to content

Commit

Permalink
Removal of cluncky syntax
Browse files Browse the repository at this point in the history
  • Loading branch information
JaapvanEkris authored Jan 30, 2024
1 parent 0faec9b commit 5077217
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions docs/physics_openrowingmonitor.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ A rowing machine effectively has two fundamental movements:

Physically these movements are related, as they are connected by a chain or belt, allowing the rowing person to move the flywheel. This is shown in the following figure:

![Image showing a rowing machine with its linear and rotational energy systems](img/physics/indoorrower.png)
<img src="img/physics/indoorrower.png" alt="Image showing a rowing machine with its linear and rotational energy systems" width="700">
<span class="caption">A basic view of an indoor rower's energy systems</span>

The linear and rotational speeds are related: the stronger/faster you pull in the linear direction, the faster the flywheel will rotate. The rotation of the flywheel simulates the effect of a boat in the water: after the stroke, the boat will continue to glide only be dampened by the drag of the boat, so does the flywheel.
Expand Down Expand Up @@ -209,7 +209,7 @@ stateDiagram-v2
From the perspective of Open Rowing Monitor, there only is a stream of *CurrentDt*'s, which should form the basis of this detection:

The following picture shows the time between impulses through time:
![Measurements of flywheel](img/physics/flywheelmeasurement.png)
<img src="img/physics/flywheelmeasurement.png" alt="Image showing the currentDt measurements of the flywheel through time" width="700">
<span class="caption">example currentDt Measurements of flywheel</span>

Open Rowing Monitor combines two types of force detection, which work independently: *basic force detection* and *advanced stroke detection*. Both can detect a stroke accuratly, and the combination has proven its use.
Expand All @@ -228,7 +228,7 @@ In the remainder of this paragraph, we describe the underlying physics of both t

One of the key indicator is the acceleration/decelleration of the flywheel. Looking at a simple visualisation of the rowing stroke, we try to achieve the following:

![Impulses, impulse lengths and rowing cycle phases](img/physics/rowingcycle.png)
<img src="img/physics/rowingcycle.png" alt="Image showing the relation between Impulses, impulse lengths and rowing cycle phases" width="700">
<span class="caption">Impulses, impulse lengths and rowing cycle phases</span>

Here we plot the *currentDt* against its sequence number. So, a high *currentDt* means a long time between impulses (so a low *angular velocity*), and a low *currentDt* means that there is a short time between impulses (so a high *angular velocity*).
Expand All @@ -247,7 +247,7 @@ In Open Rowing Monitor, the settings allow for using the more robust ascending/d

The more advanced, but more vulnerable approach depends on the calculated torque. When looking at *CurrentDt* and Torque over time, we get the following picture:

![Average curves of a rowing machine](img/physics/currentdtandacceleration.png)
<img src="img/physics/currentdtandacceleration.png" alt="Image showing the average currentDt curves of a rowing machine" width="700">
<span class="caption">Average currentDt (red) and Acceleration (blue) of a single stroke on a rowing machine</span>

In this graph, we plot *currentDt* and Torque against the time in the stroke. As soon as the Torque of the flywheel becomes below the 0, the *currentDt* begins to lengthen again (i.e. the flywheel is decelerating). As indicated earlier, this is the trigger for the basic force detection algorithm (i.e. when *minumumRecoverySlope* is set to 0): when the *currentDt* starts to lengthen, the drive-phase is considered complete.
Expand Down Expand Up @@ -475,7 +475,7 @@ However, there are some current practical objections against using these more co

We also observe specific practical issues, which could result in structurally overfitting the dataset, nihilating its noise reduction effect. As the following sample of three rotations of a Concept2 flywheel shows, due to production tolerances or deliberate design constructs, there are **systematic** errors in the data due to magnet placement or magnet polarity. This results in systematic issues in the datastream:

![Image showing the sinoid measurement deviations of a Concept 2 RowErg over three full flywheel rotations](img/Concept2_RowErg_Construction_tolerances.jpg)
<img src="img/Concept2_RowErg_Construction_tolerances.jpg" alt="Image showing the sinoid measurement deviations of a Concept 2 RowErg over three full flywheel rotations" width="700">
<span class="caption">Deviation of the Concept 2 RowErg</span>

Fitting a quadratic curve with at least two full rotations of data (in this case, 12 datapoints) seems to reduce the noise to very acceptable levels. In our view, fitting a third-degree polynomial would result in a better fit with these systematic errors, but resulting in a much less robust signal.
Expand Down

0 comments on commit 5077217

Please sign in to comment.