The present disclosure relates to improved control techniques for a treadmill.
This section provides background information related to the present disclosure which is not necessarily prior art.
Treadmills are well known exercise devices for running or walking in place. A treadmill is comprised of a platform or base which supports a moving belt driven by an electric motor. During operation, the belt moves from the front end of the platform to the rear end of the platform. The user walks or runs on the belt at a speed matching the speed of the belt. Through the use of an input device, the speed of the belt may be set or otherwise controlled by the user.
A treadmill, in accordance with one or more aspect of the disclosure, comprises a moveable belt and a controller configured to cause the belt to move in accordance with a target speed, receive information indicative of a current gradient of the belt, and automatically adjust the value of the target speed in dependence on the current gradient of the belt.
The controller may be configured to receive an input speed for the belt and to automatically adjust the value of the target speed in dependence on the input speed and the current gradient of the belt.
When the current gradient of the belt is greater than zero, the controller may be configured to automatically adjust the value of the target speed such that the target speed is less than the input speed.
When the current gradient of the belt is zero, the controller may be configured to automatically set the target speed equal to the input speed.
When the current gradient of the belt is less than zero, the controller may be configured to automatically set the target speed equal to the input speed, or the controller may be configured to automatically adjust the value of the target speed such that the target speed is greater than the input speed.
The controller may be configured to receive information indicative of a change in the input speed and to automatically adjust the target speed in dependence on the input speed, the change in the input speed, and the current gradient of the belt.
The treadmill may further comprise a motor. In such case, the belt may be driven by the motor and the controller may be configured to cause the motor to generate torque as required to cause the belt to move in accordance with the target speed.
The controller may be configured to receive an input gradient for the belt and to cause the belt to move from a first position to a second position in which the belt is tilted at the input gradient.
The treadmill may further comprise a tilt sensor configured to sense the current gradient of the belt. In such case, the controller may be configured to receive information indicative of the current gradient of the belt from the tilt sensor and the controller may be configured to automatically adjust the value of the target speed in dependence on the current gradient of the belt, even when the current gradient of the belt is different from the input tilt angle.
The treadmill may further comprise a linear actuator. In such case, the controller may be configured to cause the linear actuator to extend or retract as required to move the belt from the first position to the second position.
The controller may be configured compare the current gradient of the belt to a predefined gradient limit and to automatically adjust the value of the target speed in dependence on the lowest value of the current gradient and the predefined gradient limit.
The controller may be configured to automatically adjust the value of the target speed by dividing the target speed by a grade adjusted speed (GAS) factor. In such case, when the current gradient of the belt is greater than or equal to 0% and less than or equal to 10%, the GAS factor may be calculated according to the following equation:
When the current gradient of the belt is greater than 10%, the GAS factor may be calculated according to the following equation:
wherein 0.001≤a≤0.002 and 0.01≤b≤0.03.
In aspects, the controller may be further configured to automatically adjust the value of the target speed in dependence on a distance of a user on the treadmill from a predefined target position on the treadmill.
In aspects, the controller may be configured to cause the belt to move to a position in which the belt is tilted at a target gradient and automatically adjust the value of the target gradient in dependence on the time derivative of the target speed of the belt and the gravitational acceleration constant.
A treadmill, in accordance with one or more aspects of the disclosure, comprises a moveable belt and a controller configured to cause the belt to move in accordance with a target speed and a target gradient and to receive information indicative of a current gradient of the belt. The controller comprises a grade adjusted speed (GAS) module configured to calculate a grade adjusted speed for the belt in dependence on the current gradient of the belt and the target speed of the belt, the controller being configured to automatically adjust the target speed of the belt in dependence on the grade adjusted speed calculated by the GAS module.
The controller may further comprise a free run module configured to calculate an adjusted target speed for the belt in dependence on a previous target speed of the belt and a distance of a user on the treadmill from a predefined target position on the treadmill. In such case, the GAS module may be configured to calculate a grade adjusted speed for the belt in dependence on the current gradient of the belt and the adjusted target speed for the belt and the controller may be configured to automatically adjust the target speed of the belt in dependence on the adjusted target speed calculated by the free run module and the grade adjusted speed calculated by the GAS module
The controller may further comprise a simulated inertial module configured to calculate an adjusted gradient angle for the belt in dependence on the time derivative of the target speed, the gravitational acceleration constant, and the target speed or the grade adjusted speed for the belt. In such case, the controller may be configured to automatically adjust the target gradient of the belt in dependence on the adjusted target gradient calculated by the simulated inertial module.
A computer-implemented method for controlling a treadmill, in accordance with one or more aspect of the disclosure, comprises: (i) driving, by a controller, a motor of the treadmill in accordance with a target speed, the motor being operatively coupled to a moveable belt of the treadmill, (ii) receiving, by the controller, a change in a gradient of the belt, (iii) computing, by the controller, an adjusted value for the target speed of the motor based on the change in the gradient of the belt, and (iv) automatically adjusting, by the controller, the target speed of the motor in accordance with the adjusted value for the target speed.
Further areas of applicability of the present disclosure will become apparent from the detailed description, the claims and the drawings. The detailed description and specific examples are intended for purposes of illustration only and are not intended to limit the scope of the disclosure.
The drawings described herein are for illustrative purposes only of selected embodiments and not all possible implementations, and are not intended to limit the scope of the present disclosure.
Corresponding reference numerals indicate corresponding parts throughout the several views of the drawings.
Example embodiments will now be described more fully with reference to the accompanying drawings.
With reference to
In an exemplary embodiment, the main controller 32 is implemented as a microcontroller. The logic for control of the treadmill 10 by main controller 32 can be implemented in hardware logic, software logic, or a combination of hardware and software logic. In this regard, the main controller 32 can be or can include any of a digital signal processor (DSP), microprocessor, microcontroller, or other programmable device which is programmed with software implementing the operation of the treadmill 10. Additionally or alternatively, the main controller 32 may be or may include other logic devices, such as a Field Programmable Gate Array (FPGA), a complex programmable logic device (CPLD), or application specific integrated circuit (ASIC). When it is stated that the main controller 32 performs a function or is configured to perform a function, it should be understood that the main controller 32 is configured to do so with appropriate logic (such as in software, logic devices, or a combination thereof).
The distance sensor 34 is configured to measure the distance from a definite location on the treadmill 10 to a user on the treadmill 10. For example, the distance sensor 34 may be configured to measure the distance from the user console 26 to a waist or torso of a user on the treadmill 10. In such case, the distance sensor 34 may be positioned on or embedded in the user console 26, as shown in
The optional torque sensor 36 is configured to sense or determine the torque generated by the motor 20, i.e., the motor torque. In an example embodiment, the torque is directly proportional to the applied current and the torque sensor 36 is a current sensor sensing the current drawn by the motor 20, although other types of torque sensors are contemplated by this disclosure. In other embodiments, the motor torque is estimated from the requested motor current signal and the torque sensor 36 is not needed. For example, the requested motor current signal may be an output signal from the motor controller 40. The torque generated by the motor 20 is transferred to the belt 18 and controls the speed of the belt 18.
The optional tilt sensor 38 is configured to sense or determine a tilt angle α (
The optional speed sensor 39 is configured to sense or determine the actual speed of the belt 18 and to transmit data indicative of the actual speed of the belt 18 to the main controller 32. In aspects, the speed sensor 39 may be coupled to one of the rollers 126, as shown in
During operation, a user on the treadmill 10 interacts with the user console 26 to input to the main controller 32 a desired speed for the belt 18 and optionally a desired tilt angle α for the base 12. Additionally or alternatively, the user may interact with the auxiliary device 44 to input to the main controller 32 a desired speed for the belt 18 and/or a desired tilt angle α for the base 12, or to initiate a program on the auxiliary device 44 that inputs to the main controller 32 a desired speed for the belt 18 and/or a desired tilt angle α for the base 12. Based on the input speed from the user console 26 and/or the auxiliary device 44, the main controller 32 outputs a target speed to the motor controller 40, and the motor controller 40 controls the motor torque of the motor 20 so that the belt 18 moves at the target speed. For example, the user can input a desired speed for the belt 18 of 10 kilometers per hour (km/h). Based on the input tilt angle α from the user console 26 and/or the auxiliary device 44, the main controller 32 outputs a target tilt angle α to the linear actuator controller 42, and the linear actuator controller 42 controls movement of the linear actuator 29 to move the belt 18 so that the belt 18 is tilted at the target tilt angle α. For example, the user can input a desired tilt angle α for the belt 18 of π/60 radians (i.e., 3 degrees). In aspects, the tilt angle input by the user may be in degrees or a percent grade and the main controller 32 may convert the input tilt angle α to radians, as needed.
The main controller 32 may include a free run module 46, a grade adjusted speed (GAS) module 47, and/or a simulated inertia module 49, which may control or adjust the target speed of the belt 18 based on information in addition to or alternative to the input speed and/or the input tilt angle α from the user console 26 and/or the auxiliary device 44. For example, the free run module 46 is configured to operate the treadmill 10 in a Free Run mode in which the target speed of the belt 18 generated by the main controller 32 is a function of the user's position with the respect to the treadmill 10. When the treadmill 10 is operating in Free Run mode, the user can control the speed of the belt 18 without manual interaction with the user console 26 and/or the auxiliary device 44, i.e., without inputting a desired speed for the belt 18, which may help improve the user's comfort and enjoyment. The objective of Free Run mode is to automatically maintain the user at an appropriate position (i.e., a “target position”) relative to the treadmill 10. In aspects, the target position may be a location at or near a center of the belt 18, between the front end 14 and the rear end 16. In aspects, Free Run mode may be activated or deactivated by the user of the treadmill 10 via the user console 26 and/or the auxiliary device 44.
When the treadmill 10 is operating in Free Run mode, a user can freely vary their moving speed, and the main controller 32 will automatically adjust the target speed of the belt 18 so that the user is maintained at the target position relative to the treadmill 10. More specifically, when the treadmill 10 is operating in Free Run mode and the user changes their moving speed, which causes the user to move forward or rearward of the target position, the free run module 46 of the main controller 32 is configured to generate an adjusted target speed for the belt 18 that is calculated to return the user to the target position. In aspects, the adjusted target speed generated by the free run module 46 may automatically be output by the main controller 32 to the motor controller 40 as the target speed for the belt 18. In other aspects, the adjusted target speed generated by the free run module 46 may be used by the main controller 32, for example, in combination with the GAS module 47 and/or the simulated inertia module 49 in determining the target speed of the belt 18 output to the motor controller 40. In response to receiving the target speed from the main controller 32, the motor controller 40 is configured to automatically increase or decrease the torque of the motor 20 as required to move the belt 18 in accordance with the target speed.
When the treadmill 10 is operating in Free Run mode, if the user accelerates relative to the belt 18 and thereby moves forward of the target position (i.e., toward the user console 26 and toward the front end 14 of the base 12), the free run module 46 of the main controller 32 is configured to generate an adjusted target speed that is greater than the previous target speed, which, when implemented by the motor 20, will cause the user to move backwards on the belt 18, towards the target position. If the user decelerates relative to the belt 18 and thereby moves rearward of the target position, the free run module 46 is configured to generate an adjusted target speed that is less than the previous target speed, which, when implemented by the motor 20, will cause the user to move forward on the belt 18, towards the target position.
Referring now to
Referring now to
The filter 62 is configured to filter the data in the TOF distance signal to reduce signal noise. The filter 62 may include two filters arranged in parallel, a first filter 64 and a second filter 66. The signal generated by the first filter 64 may be used by the proportional control term and the signal generated by the second filter 66 may be used by the derivative control term in equation (5) described below with respect to the PD controller 82 of the nonlinear controller 72. In aspects, the filter 62 may be configured to transmit a signal indicative of the TOF distance signal noise and/or loss of data packets to the safety monitor 56, and the safety monitor 56 may be configured to terminate Free Run mode when the TOF distance signal noise and/or loss exceeds a predetermined threshold. To avoid a delayed acceleration or deceleration response in intervals, the second filter 66 may be disabled if the user's position is outside a specified band around the target position (for example, in situations where the user's position is 10 cm forward or rearward of the target position).
In aspects, the first filter 64 may be a first order Butterworth filter with a 0.5 Hz cutoff frequency and the second filter 66 may be a moving average filter. In aspects where the second filter 66 is a moving average filter, the second filter 66 may have a present window size of, for example, 2 seconds. For simplicity, in aspects, the first filter 64 and the second filter 66 may be exponential filters. In such case, the first filter 64 may have a time constant of 0.33 seconds (low filtering) and the second filter may have a time constant of 1.25 seconds (heavy filtering), or vice versa.
In aspects, the second filter 66 may be configured to minimize belt speed fluctuations during steady state running. This is because, if a user runs or walks on the treadmill 10 at a constant pace, it is mechanically identical to running overground, as long as belt speed fluctuations are negligible. Therefore, it may be desirable to minimize belt speed oscillations when the user is running or walking at a constant pace. For example, because treadmill users may typically have small forward and backward motion relative to the treadmill 10 during running and/or walking, the TOF distance signal may contain a periodic position fluctuation. Consequently, the free run module 46 may be constantly reacting to this small position fluctuation, which may lead to belt speed fluctuations during steady state running. To minimize these belt speed fluctuations, the second filter 66 may be configured to smooth the TOF distance signal based on the cadence of the user, which is reflected in and thus can be determined by analysis of the belt speed fluctuations.
For example, in aspects where the second filter 66 is a moving average filter, the second filter 66 may be programmed to have a variable window size that is as long as the step time, which will effectively mitigate belt speed fluctuations. The step time may be calculated according to equation (1):
where the user's cadence may be calculated based on the motor torque and the acceleration torque, which will oscillate in response to the user's cadence. A standard peak detector algorithm may be used to identify each minimum and maximum of the oscillating signal, with the cadence being defined as the time interval between two consecutive maxima or two consecutive minima. This process yields two cadence signals-one derived from the minima and the other from the maxima of the signal. The final cadence may be obtained by averaging the two values.
Where the second filter 66 is a moving average filter, to mitigate belt speed fluctuations, the second filter 66 may be configured to have a variable window size, N, that is calculated based the user's cadence according to equation (2):
where the step time is in seconds, cadence is in steps per minute, and Δt is the update cycle time of the free run module 46.
In aspects where the second filter 66 is an exponential filter, to mitigate belt speed fluctuations, the second filter 66 may be programmed to have a variable time constant that is calculated based the user's cadence according to equation (3):
where c is a proportionality constant and step time is in second and calculated according to equation (1).
As shown in
With reference to
The target position calculator 68 determines a desired target position of the user relative to the treadmill 10. When Free Run mode is activated, the target position may be set to the user's current position. In other implementations, the target position may be set to a predefined and fixed area on the belt 18. The target position should be set to a position that ensures a minimum distance between the user and the rear end 16 of the base 12 or belt 18 and optionally to ensure a minimum distance between the user and the front end 14 of the base 12 or belt 18. It may be desirable to ensure a minimum distance between the user and the rear end 16 of the base 12 because, for example, when Free Run mode is active, the user must physically move behind the target position to decelerate the belt 18. Therefore, to ensure that the user can decelerate safely, there should be sufficient distance on the belt 18 behind the target position. In aspects, the target position of the user may be one-dimensional and may be defined as the horizontal distance from the distance sensor 34 to a vertical line extending from a defined point on the belt 18.
Typically, the target position of the user is static when Free Run mode is active, but this need not be the case. In aspects, the target position may be dynamic and may depend, for example, on the target speed or the actual speed of the belt 18 and may be calculated to accommodate the observed behavior that treadmill users tend to move closer to the front of the treadmill 10 when their speed increases. Additionally or alternatively, the target position of the user can also be adjusted based on the tilt angle α of the base 12. For example, as shown in
adjusted target position=target position−target position adjustment (5)
where h is the height of the distance sensor 34 from the belt 18 in meters and α is the tilt angle of the base 12 in radians. In aspects, h=0.935 meters. Other conditions for adjusting the target position are envisioned by this disclosure.
The error comparator 70 calculates the error or difference between the target position calculated by the target position calculator 68 and the actual position of the user on the treadmill 10 (i.e., the TOF distance) and outputs the error to the nonlinear controller 72.
With reference to
The proportional gain calculator 80 calculates or determines the proportional gain constant, Kp, that should be applied to the error in the PD controller 82 algorithm. The proportional gain constant may be a function of a difference between the user's actual position on the treadmill 10 (i.e., the TOF distance) and the target position, or the position “error,” and also optionally may be a function of the actual speed or target speed of the belt 18. Referring now to
The PD controller 82 calculates the target acceleration in meters per second squared (m/s2) according to the following equation (6):
where the error is the difference between the TOF distance of the user and the target position of the user in meters, Kp is the proportional gain constant (as calculated by the proportional gain calculator 80), and Kd is the derivative gain constant. The derivative control term
is included in the target acceleration calculation performed by the PD controller 82 to increase responsiveness. The derivative control term is independent of the TOF distance of the user and will generate a target acceleration value due to acceleration by the user, regardless of the user's position relative to the target position. Including the derivative control term in the target acceleration calculation performed by the PD controller 82 may cause the belt 18 to accelerate earlier and stronger compared to using the proportional control term (Kp·error) by itself, for example, when the user accelerates close to the target position. In some embodiments, the derivative gain constant may be set to a constant value, for example 1.5. In other embodiments, the derivative gain constant may vary. In aspects, the derivative control term may be eliminated from equation (5) by setting the derivative gain constant to zero, for example, when
is less than 0.15 meters per second (m/s), which may help improve stability during steady-state running.
Additionally or alternatively, the nonlinear controller 72 may be configured to output a target acceleration of zero when the user is in flight phase, which may help ensure that the belt 18 is moving at a similar speed during push-off and subsequent landing of the user on the belt 18, thereby better simulating outdoor running mechanics. For example,
Additionally or alternatively, the nonlinear controller 72 may be configured to help improve the ease with which a user is able to seamlessly modify (increase or decrease) their pace, without experiencing undesirable speed fluctuations by the belt 18, even when the treadmill 10 is operating in Free Run mode. When the treadmill 10 is operating in Free Run mode, if the user wants to increase or decrease their current pace, the user must briefly subceed or exceed their new desired pace because, after the user moves in front or behind the target position and then returns to the target position (where the belt speed will stabilize) the speed will change again. The resulting under/overshoot effect is illustrated in
When included in the target speed calculator 52, the torque controller 76 may help improve the robustness and responsiveness of the free run module 46, for example, by accounting for the torque applied by the user to the belt 18 and the motor 20 when calculating the target acceleration. The control objective of the torque controller 76 is to maintain a constant (low) setpoint torque during the user's push-off phase. To accomplish this, the torque controller 76 helps maintain the motor torque close to the setpoint torque by accelerating the belt 18 when the user applies a force to the belt 18 that would result in a motor torque below the setpoint torque. The torque controller 76 receives data including the setpoint torque, for example, from the motor controller 40, and the actual motor torque, for example, from the torque sensor 36, and outputs a target acceleration for the belt 18 that is calculated to maintain the motor torque close to the setpoint torque (e.g., as determined by the motor controller 40).
In aspects where the target speed calculator 52 includes the torque controller 76, the maximum calculator 78 compares the target acceleration generated by the nonlinear controller 72 and the torque controller 76 and outputs the maximum value of the target acceleration calculated by the nonlinear controller 72 and the torque controller 76 to the integrator 74.
The integrator 74 calculates the adjusted target speed of the belt 18 by integrating the target acceleration generated by the nonlinear controller 72 (or by the torque calculator 76) over time to obtain the change in target speed and adding the change in target speed to the previous target speed, as shown in the following equation (7):
where t is the variable of integration. The previous target speed may be the speed initially set by the user (e.g., using the user console 26) or may be the adjusted target speed previously calculated by the integrator 74, for example, and saved in memory. In aspects, the previous target speed may be obtained from the GAS module 47 (described below).
With reference to
The initializer 92 is configured to function as an initial check prior to initiating operation of the treadmill 10 in Free Run mode. For example, the initializer 92 may receive a measurement of the TOF distance from the distance sensor 34 via the signal preprocessor 50 and compare the measured TOF distance to a range of valid TOF distances. If the initializer 92 determines that the measured TOF distance is valid, the initializer 92 will not interfere with the target speed send to the limiter and arbitrator 54 by the free run module 46 and may output a signal to the limiter and arbitrator 54 that Free Run mode is authorized. On the other hand, if the initializer 92 determines that the measured TOF distance is invalid, the initializer 92 may output a signal to the limiter and arbitrator 54 to prevent implementation of Free Run mode.
The time out detector 94 is configured to receive information regarding the TOF distance signal recovery time from the signal recovery module 60 and to compare the TOF distance signal recovery time to a predetermined allowable recovery time. As described above, signal recovery is enabled when the TOF signal has invalid data. If the TOF distance signal recovery time exceeds the allowable recovery time, the time out detector 94 is configured to output a signal to the limiter and arbitrator 54 that Free Run mode is not permitted. For example, the time out detector 94 may determine that Free Run mode is not permitted and should be terminated when the TOF distance signal recovery time is greater than 1 second.
The idle detector 96 is configured to receive information regarding the actual speed of the belt 18 (e.g., from the speed sensor 39) and to determine when the actual speed of the belt 18 has been zero for more than a preset duration, e.g., 3 seconds. When Free Run mode is active and the idle detector 96 determines that the actual speed of the belt 18 has been zero for more than the preset duration, the idle detector 96 is configured to output a signal to the limiter and arbitrator 54 that Free Run mode is not permitted and should be terminated.
The speed validator 98 is configured to receive information regarding the actual speed of the belt 18 (e.g., from the speed sensor 39) and to determine when the actual speed of the belt 18 is below a predefined threshold, e.g., below 1.35 meters per second (m/s) (equivalent to a pace of about 20 minutes per mile). If the speed validator 98 determines that the actual speed of the belt 18 is below the predefined threshold speed for Free Run mode operation, the speed validator 98 is configured to output a signal to the limiter and arbitrator 54 that Free Run mode is not permitted. As such, prior to initiating Free Run mode, an input speed that is greater than or equal to the predefined threshold speed must be received from the user console 26 or the auxiliary device 44 and implemented by the main controller 32 before the treadmill 10 can being operating in Free Run mode.
The acceleration validator 100 is configured to validate instructions from the free run module 46 that would increase or decrease the target speed of the belt 18 prior to implementing a speed change commanded by the free run module 46. To accomplish this, the acceleration validator 100 receives information regarding the adjusted target speed (from the target speed calculator 52), the actual speed of the belt 18 (e.g., from the speed sensor 39), and the motor torque (e.g., from the torque sensor 36 via the signal preprocessor 50) and determines whether increases or decreases in the target speed of the belt 18 commanded by the target speed calculator 52 are accompanied by a corresponding increase or decrease in motor torque. The motor torque can be used to validate increases or decreases in the target speed of the belt 18 commanded by the target speed calculator 52 because an increase or decrease in the speed the user is walking or running on the treadmill 10 should also be accompanied by a corresponding increase or decrease in the torque generated by the motor 20. If an increase or decrease in the target speed of the belt 18 is accompanied by a corresponding increase or decrease in motor torque, then the acceleration validator 100 is configured to permit the increase or decrease in the target speed of the belt 18. Alternatively, if an increase or decrease in the target speed of the belt 18 commanded by the target speed calculator 52 is not accompanied by a corresponding increase or decrease in motor torque, then the acceleration validator 100 is configured to output a signal to the limiter and arbitrator 54 to limit the change in target speed commanded by the target speed calculator 52.
The inaccurate TOF distance detector 102 is configured to analyze the TOF distance (e.g., from the distance sensor 34 via the signal preprocessor 50) and identify instances when then TOF distance may be inaccurate. For example, the inaccurate TOF distance detector 102 may be configured to analyze the TOF distance and identify relatively large and rapid changes in the TOF distance that are likely unrelated to the user's intention to increase the speed of the belt 18. For example, the distance sensor 34 may be briefly obstructed by the user's arm swing and, as a result, the target speed calculator 52 may incorrectly translate the change in TOF distance as an increase or decrease in target speed. To prevent such unintentional speed changes, the inaccurate TOF distance detector 102 may prevent increases or decreases in target speed when such increases or decreases are the result of relatively large and rapid changes in TOF distance. For example, if an increase or decrease in the target speed of the belt 18 results from two consecutive TOF distance measurements with a difference of greater than 0.1 meter, then the inaccurate TOF distance detector 102 may be configured to output a signal to the limiter and arbitrator 54 to limit the change in target speed commanded by the target speed calculator 52. As another example, the inaccurate TOF distance detector 102 may be configured to identify circumstances when the distance sensor 34 is blocked, for example, if the TOF distance output by the distance sensor 34 has been less than 10 centimeters (cm) for greater than or equal to 0.5 seconds, the inaccurate TOF distance detector 102 may be configured to output a signal to the limiter and arbitrator 54 to limit or withhold the change in target speed commanded by the target speed calculator 52.
Although not shown in
Yet another example, the safety monitor 52 may be configured to identify circumstances where the user is unable to keep up with the speed of the belt 18, for example, by identifying situations where the TOF distance of the user is too large, meaning that the user is too close to the rear end 16 of the base 12. In such case, the safety monitor 52 may be configured to disable Free Run mode and stop the belt when the TOF distance is greater than a definite value, which may be based on the tilt angle α of the base 12. In aspects where the base 12 of the treadmill 10 is level and the tilt angle α is zero, the safety monitor 52 may be configured to disable Free Run mode and stop the belt when the TOF distance is greater than or equal to about 1 meter. When the tilt angle α is not zero, the safety monitor 52 may be configured to disable Free Run mode and stop the belt when the TOF distance is greater than or equal to a user out of range distance calculated by the following equation (8):
where h is the height of the distance sensor 34 from the belt 18 in meters (e.g., 0.935 meters) and a is the tilt angle of the base 12 in radians.
With reference to
The speed limiter 104 receives the adjusted target speed from the free run module 46 and limits the adjusted target speed output from the free run module 46 if the adjusted target speed is above or below certain predefined values. For example, the speed limiter 104 may limit the adjusted target speed to values greater than or equal to 0 km/h and less than or equal to 24.1 km/h, or optionally less than or equal to 17.5 km/h.
The rate limiter 106 limits changes in the target speed of the belt 18 that would result in rapid accelerations or decelerations of the belt 18. For example, the rate limiter 106 may adjust the adjusted target speed of the belt 18 so that, in comparison to the previous target speed of the belt 18, the adjusted target speed generated by the free run module 46 will not result in an acceleration of greater than or equal to 0.879 meters per second squared (m/s2) and will not result in a deceleration of greater than or equal to 2.6 m/s2, or optionally greater than or equal to 1.4 m/s2. If the rate limiter 106 receives a signal from the safety monitor 52 that the adjusted target speed should be limited, the rate limiter 106 may adjust the adjusted target speed so that the adjusted target speed output by the free run module 46 will not result in an acceleration or a deceleration greater than a predefined value, for example, greater than or equal to 0.25 m/s2.
The arbitrator 108 is the final check for before the adjusted target speed generated by the free run module 46 is used by the main controller 32 to adjust the target speed of the belt 18 output to the motor controller 40. If the arbitrator 108 receives a signal from the safety monitor 52 that Free Run mode is not permitted, the arbitrator 108 may output a signal to stop Free Run mode or the arbitrator 108 may output an adjusted target speed of zero meters per second (m/s). If the arbitrator 108 receives a signal from the safety monitor 52 that Free Run mode is not permitted and the belt 18 is currently moving, the arbitrator 108 may withhold any changes in the target speed of the belt 18. Alternatively, if the belt 18 is currently moving and the arbitrator 108 outputs an adjusted target speed of zero m/s, the main controller 32 may control the speed of the belt 18 so that it is gradually stopped.
After successfully passing the limiter and arbitrator 54, the adjusted target speed generated by the free run module 46 may be output by the main controller 32 as the target speed to the motor controller 40. In other embodiments, the adjusted target speed generated by the free run module 46 may be output to the GAS module 47 (
Referring now to
The function of the GAS module 47 is based on the observation that, when walking or running outdoors, a person will typically react to changes in grade by adjusting their pace. For example, when grade increases, to maintain the same effort, a person typically must reduce their speed, and vice versa. In response to a change in the tilt angle α of the belt 18, the GAS module 47 is configured to automatically generate a grade adjusted speed for the belt 18 that is calculated to mimic a person's natural adjustment to their pace when reacting to grade changes when walking or running outdoors. Some sports devices and companion apps may use a grade adjusted pace (GAP) model to gauge the effort level of a user's running activity. Existing GAP models are designed to calculate the equivalent pace that a runner would achieve with the same effort when running on flat ground instead of at a gradient and are traditionally based on an assessment of the metabolic energy cost of running at different gradients or equivalent heart rates. Instead of assessing the user's effort level, the GAS module 47 is configured to control the target speed of the belt 18 such that the effort of the user of the treadmill 10 remains generally constant, even when the tilt angle α of the belt 18 changes.
The GAS module 47 includes a signal filter 128, a GAS calculator 110, an inversed GAS calculator 112, and a summation module 120. In response to a change in the actual tilt angle α of the base 12 and thus of the belt 18, the GAS calculator 110 is configured to calculate a grade adjusted speed for the belt 18 that is used by the main controller 32 in determining the target speed for the belt 18 output to the motor controller 40. Because changes to the target tilt angle α of the belt 18 may not be implemented by the linear actuator 29 instantaneously, the grade adjusted speed calculated by the GAS calculator 110 is based on the current or actual tilt angle α of the belt 18 as sensed or determined by the tilt sensor 38 or by another component of the control system 30.
The signal filter 128 filters the data in the actual tilt angle α signal generated, for example, by the tilt sensor 38 to reduce signal noise prior to passing the actual tilt angle α to the GAS calculator 110. In aspects, the signal filter 128 may be a first order Butterworth filter 64 with a 2.0 Hz cutoff frequency. In aspects, the signal filter 128 may be part of or integrated with the signal preprocessor 50 of the free run module 46.
The GAS calculator 110 receives the filtered tilt angle α signal from the signal filter 128 and calculates the grade adjusted speed for the belt 18. Referring now to
where α is the actual tilt angle of the base 12 (and thus of the belt 18) in radians.
In aspects, the limiter 114 may limit the value of the gradient output to the GAS factor calculator 116 to a predefined gradient limit. For example, the limiter 114 may limit the gradient output to the GAS factor calculator 116 to values greater than 0% and less than or equal to 10%.
The GAS factor calculator 116 receives the gradient calculated by the limiter 114 (or the value of the predefined gradient limit, whichever is greater) and uses the gradient to calculate a GAS factor that can be applied to the target speed to generate a grade adjusted speed for the belt 18 that is formulated to maintain the user of the treadmill 10 at substantially the same effort level. In embodiments, the GAS factor calculator 116 may calculate the GAS factor using equation (10), (11), or (12). As shown by equation (10), when the gradient is less than zero (0), the GAS factor is equal to one (1). When the gradient is greater than or equal to 0 and less than or equal to 10, the GAS factor is calculated according to equation (11). When the gradient is greater than 10, the GAS factor is calculated according to equation (12):
where the gradient is calculated according to equation (9) and expressed as a percentage, 0.001≤a≤0.002, and 0.01≤b≤0.03. In aspects, 0.0014≤a≤0.0015, or optionally 0.00141≤a≤0.00143, In aspects, 0.015≤b≤0.025, or optionally 0.0195≤b≤0.02. In aspects, a=0.00142019 and b=0.0199205.
In other embodiments, the GAS factor calculator 116 may use a different formula to calculate the GAS factor. Other methods for calculating the GAS factor may be similar to known methods for calculating a runner's grade adjusted pace. One such method is described in U.S. Pat. No. 11,623,121 B1 entitled Using aggregate activity data to generate a grade adjusted pace model. Other methods of calculating the GAS factor also may be used. However, the inventors of the present disclosure have discovered that, when the GAS factor is calculated using equation (10), (11), or (12), the grade adjusted speed output by the GAS module 47 results in an adjustment to the target speed of the belt 18 that helps maintain the user at a constant effort level, without being disruptive or distracting to the user, which helps improve the overall experience and enjoyment of the user of the treadmill 10.
The grade adjusted speed calculator 118 receives the target speed of the belt 18 and the value of the GAS factor calculated by the GAS factor calculator 116 and calculates the adjusted target speed according to equation (13).
where target speed is the target speed of the belt 18 that would otherwise be output to the motor controller 40 absent the GAS module 47 and is equal to the speed the belt 18 would be controlled to move if the tilt angle α of the base 12 were zero. In response to a change in the current tilt angle α of the base 12, the target speed in equation (13) initially will be the previous target speed of the belt 18 before the change in the tilt angle α of the base 12 occurred.
The inversed GAS calculator 112 is configured to ensure that the grade adjusted speed calculated by the GAS module 47 is based on a value of the target speed that would be output to the motor controller 40 without consideration for the user's grade adjusted pace, i.e., if the main controller 32 did not include the GAS module 47 or the tilt angle α of the base 12 were zero. This ensures that the GAS calculator 110 does not apply the GAS factor to a target speed value that is already based on a grade adjusted speed calculated by the GAS factor calculator 116, which would result in an inaccurate adjustment of the user's grade adjusted pace. To accomplish this, the inversed GAS calculator 112 receives the grade adjusted speed from the GAS calculator 110 and reverses the calculations performed by the GAS calculator 110 to obtain an unadjusted target speed of the belt 18. Specifically, the inversed GAS calculator 112 receives the grade adjusted speed from the GAS calculator 110 and calculates the unadjusted target speed of the belt 18 according to the following equation (14):
where the GAS factor is the GAS factor previously calculated by the GAS factor calculator 116 of the GAS calculator 110. Then, the inversed GAS calculator 112 either returns the unadjusted target speed calculated by equation (14) to the summation module 120 (
As shown in
where the GAS factor is calculated according to equation (10), (11), or (12), the GAS factor gain is a value greater than or equal to 0 and less than or equal to 1, and the scaled GAS factor depends on the tilt direction. A GAS factor gain of 1 allows the target speed by the GAS module 47 to be adjusted by the full value of the GAS factor and a GAS factor gain of 0 results in no adjustment to the target speed. For example, the GAS factor gain may be set to 1 in situations where the adjusted target speed results from an increase in the tilt angle α of the base 12. On the other hand, the GAS factor gain may be set to 0 in situations where the adjusted target speed results from a decrease in the tilt angle α of the base 12.
In situations where a GAS factor gain is applied to the GAS factor when calculating the grade adjusted speed, the inversed GAS calculator 112 may calculate the unadjusted target speed of the belt 18 according to the following equations (17) and (18):
unadjusted target speed(k−1)=grade adjusted speed(k−1)·GAS factor(k) (18)
where k is the current sample of the discrete signal, k−1 is the previous sample corresponding to a one-sample-period delay in the discrete signal. Equation (17) is used in situations where no change in the direction of the tilt angle α occurred between k and k−1. Equation (18) is used in situations where a change in the direction of the tilt angle α occurred between k and k−1.
Referring now to
The simulated inertia module 49 may include an acceleration calculator 122 and an adjusted grade calculator 124. The acceleration calculator 122 is configured to calculate the user's acceleration a by calculating the time derivative of the target speed of the belt 18 according to the following equation (19):
where v is the target speed of the belt 18 and dt is the change in time. The target speed of the belt 18 may be the input speed of the belt from the user console 26 or the auxiliary device 44, or the target speed may be the adjusted target speed calculated by the free run module 46 or the grade adjusted speed calculated by the GAS module 47.
The adjusted grade calculator 124 is configured to calculate an adjusted tilt angle α for the base 12 in response to changes in the target speed of the belt 18 according to the following equations (20), (21), (22), (23), and (24):
where grade is the target tilt angle α of the base 12 in radians, the grade force is the force exerted on the user in Newtons, m is the mass of the user, g is the gravitational acceleration constant (i.e., 9.8 m/s2), a is the user's acceleration calculated by the acceleration calculator 122, and the adjusted grade is the adjusted tilt angle α of the base 12 calculated in radians.
The adjusted tilt angle α of the base 12 calculated by the adjusted grade calculator 124 may be used by the main controller 32 in determining the target tilt angle α to output to the linear actuator controller 42. In aspects, the main controller 32 will output the adjusted tilt angle α calculated by the adjusted grade calculator 124 as the target tilt angle α to the linear actuator controller 42, and the linear actuator controller 42 will control movement of the linear actuator 29 and thus of the belt 18 so that the belt 18 is tilted at the target tilt angle α.
In aspects, the adjusted tilt angle α of the base 12 calculated by the simulated inertia module 49 may be scaled based on the time derivative of the target tilt angle α, allowing its magnitude to be reduced or fully disabled as needed. For example, it may be preferable to prevent implementation of the simulated inertia module 49 when the target tilt angle α of the base 12 remains constant, even if the user's speed changes.
Because it takes time to change the actual tilt angle α of the base 12 after a commanded change in the target tilt angle α, changes to the actual tilt angle α of the base 12 implemented by the simulated inertia module 49 may take too long to implement in response to the acceleration dynamics of the user, for example, because the user may accelerate or decelerate very quickly. Therefore, to ensure that changes in the actual tilt angle α of the base 12 implemented by the simulated inertia module 49 effectively coincide with the acceleration dynamics of the user, changes to the target tilt angle α of the base 12 implemented by the simulated inertia module 49 may be limited to a maximum of ±2 percent grade. This may help ensure that the effects of the simulated inertia module 49 are in sync with the user's acceleration dynamics.
The control techniques described herein may be implemented by one or more computer programs executed by one or more processors of the main controller 32. The computer programs include processor-executable instructions that are stored on a non-transitory tangible computer readable medium. The computer programs may also include stored data. Non-limiting examples of the non-transitory tangible computer readable medium are nonvolatile memory, magnetic storage, and optical storage.
Some portions of the above description present the techniques described herein in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. These operations, while described functionally or logically, are understood to be implemented by computer programs. Furthermore, it has also proven convenient at times to refer to these arrangements of operations as modules or by functional names, without loss of generality.
Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system memories or registers or other such information storage, transmission or display devices.
Certain aspects of the described techniques include process steps and instructions described herein in the form of an algorithm. It should be noted that the described process steps and instructions could be embodied in software, firmware or hardware, and when embodied in software, could be downloaded to reside on and be operated from different platforms used by real time network operating systems.
The present disclosure also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a computer selectively activated or reconfigured by a computer program stored on a computer readable medium that can be accessed by the computer. Such a computer program may be stored in a tangible computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, application specific integrated circuits (ASICs), or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus. Furthermore, the computers referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.
The foregoing description of the embodiments has been provided for purposes of illustration and description. It is not intended to be exhaustive or to limit the disclosure. Individual elements or features of a particular embodiment are generally not limited to that particular embodiment, but, where applicable, are interchangeable and can be used in a selected embodiment, even if not specifically shown or described. The same may also be varied in many ways. Such variations are not to be regarded as a departure from the disclosure, and all such modifications are intended to be included within the scope of the disclosure.
This application claims the benefit of U.S. Provisional Application No. 63/623,004, filed on Jan. 19, 2024.
| Number | Date | Country | |
|---|---|---|---|
| 63623004 | Jan 2024 | US |