US20250319359A1

SYSTEM AND METHOD FOR SIMULATED FLYWHEEL TRAINING

Publication

Country:US
Doc Number:20250319359
Kind:A1
Date:2025-10-16

Application

Country:US
Doc Number:18634436
Date:2024-04-12

Classifications

IPC Classifications

A63B24/00A63B21/00A63B21/005A63B71/06

CPC Classifications

A63B24/0087A63B21/0058A63B21/153A63B71/0622A63B2024/0068A63B2024/0093A63B2214/00A63B2220/13A63B2220/30A63B2220/40A63B2225/02

Applicants

OxeFit, Inc.

Inventors

Peter Neuhaus

Abstract

A control system for simulating flywheel training includes processing circuitry. The processing circuitry is programmed to obtain sensor data indicating movement of an end effector of fitness equipment. The processing circuitry is also programmed to operate an electric motor of the fitness equipment, based on the movement of the end effector, to exert a force on the end effector. The force on the end effector is determined based on a result of a physics-based simulation of a virtual flywheel in order to provide a flywheel training experience for a user without requiring a flywheel physically coupled to the end effector.

Figures

Description

BACKGROUND

[0001]Aspects of the present application relate to fitness equipment, for example exercise equipment useful for strength and/or endurance training. One goal for some users of fitness equipment is to improve performance, ability, competitive level, etc. at a sport or game, intended to result from improved fitness, strength, mobility, endurance, etc. achieved via repeated use of the fitness equipment. Flywheel training involves a rope wound about a shaft with a flywheel mounted to the shaft. When the user moves an end effector, the flywheel is driven to rotate. The user exerts a force during a concentric portion of an exercise to accelerate the flywheel, and exerts force during an eccentric portion of the exercise to decelerate the flywheel. Flywheel training can advantageously provide increased resistance during the eccentric portion of the exercise compared to other cable or dumbbell exercises.

SUMMARY

[0002]One implementation of the present disclosure is fitness equipment, according to some embodiments. In some embodiments, the fitness equipment includes an electric motor, a tensile member, an end effector, a sensor, and a controller. In some embodiments, the tensile member is coupled with an output shaft of the electric motor. In some embodiments, the end effector is coupled to the electric motor through the tensile member and configured for interaction with a user during performance of a flywheel training exercise by the user. In some embodiments, the electric motor is operable to provide a force to the end effector through the tensile member. In some embodiments, the sensor is configured to obtain at least one of a position, a velocity, or an acceleration of the end effector. In some embodiments, the controller is programmed to cause the electric motor to operate to exert the force on the end effector during the interaction with the user by generating motor controls by simulating rotation of a virtual flywheel using the at least one of the position, the velocity, or the acceleration of the end effector.

[0003]In some embodiments, the controller is further programmed to, during a wind-out phase of the flywheel training exercise, determine a first force to be exerted on the end effector based on the acceleration of the end effector and a characteristic of a simulated flywheel using a first model of the simulated flywheel. In some embodiments, the controller is further programmed to track a speed of the simulated flywheel. In some embodiments, the controller is further programmed to cause the electric motor to operate to exert the first force on the end effector. In some embodiments, the first force is exerted on the end effector in a direction opposing a first direction of motion of the end effector during the wind-out phase of the flywheel training exercise. The wind-out phase occurs over a concentric portion of the flywheel training exercise when the tensile member is winding out, according to some embodiments.

[0004]In some embodiments, the controller is further programmed to, during a wind-in phase of the flywheel training exercise, determine a second force to be exerted on the end effector based on a comparison between a speed of the end effector and the speed of the simulated flywheel using a second model of the simulated flywheel. In some embodiments, the controller is programmed to cause the electric motor to operate to exert the second force on the end effector. In some embodiments, the second force exerted on the end effector in the direction that is the same as a second direction of motion of the end effector during the wind-out phase of the flywheel training exercise and opposing a force exerted by the user on the end effector in the first direction. The wind-in phase occurs over an eccentric portion of the flywheel training exercise when the tensile member is being wound in or taken up, according to some embodiments.

[0005]In some embodiments, the second model of the simulated flywheel is different than the first model of the simulated flywheel. In some embodiments, the second model includes a monotonically increasing function of the comparison between the speed of the end effector and the speed of the simulated flywheel.

[0006]In some embodiments, the controller is further programmed to determine whether to transition a simulator of a virtual flywheel out of a wind-out state corresponding to the wind-out phase of the flywheel training exercise and into a wind-in state corresponding to the wind-in phase of the flywheel training exercise. In some embodiments, the controller is programmed to transition the simulator out of the wind-out state and into the wind-in state responsive to at least one of (i) a position of the end effector exceeding a maximum allowable position corresponding to an end of the wind-out phase, or (ii) a simulated payout of the virtual flywheel returning to an intermediate position of the end effector after passing the maximum allowable position. In some embodiments, the controller is programmed to determine whether to transition the simulator of the virtual flywheel out of the wind-in state and into the wind-out state responsive to at least one of (i) the position of the end effector being less than or equal to a minimum allowable position corresponding to an end of the wind-in phase, or (ii) a speed of the virtual flywheel being less than or equal to zero.

[0007]In some embodiments, the controller is programmed to implement a calibration phase before the flywheel training exercise by operating a display screen of the fitness equipment to prompt the user to perform one or more repetitions of the flywheel training exercise. In some embodiments, the controller is programmed to record a first position of the end effector at which the end effector is fully retracted. In some embodiments, the controller is programmed to record a second position of the end effector at which the end effector is fully extended. In some embodiments, the controller is programmed to use the first position and the second position of the end effector to transition a simulator of a virtual flywheel between a wind-out state corresponding to the wind-out phase of the flywheel training exercise and a wind-in state corresponding to the wind-in phase of the flywheel training exercise.

[0008]In some embodiments, the controller is programmed to operate a user interface of the fitness equipment to prompt the user to enter a user input indicating a characteristic of a virtual flywheel for the flywheel training exercise. In some embodiments, the controller is programmed to, based on the characteristic of the virtual flywheel, cause the electric motor to operate to exert the force on the end effector during interaction with by the user to simulate the flywheel training exercise across both the wind-out phase and the wind-in phase of the flywheel training exercise.

[0009]In some embodiments, the fitness equipment further includes a gearbox and a spool. In some embodiments, the output shaft of the electric motor is coupled with the gearbox, and the gearbox is coupled with the spool, the spool configured to take-up and let-out the tensile member responsive to movement of the end effector.

[0010]Another implementation of the present disclosure is a method of simulating a flywheel training exercise, according to some embodiments. In some embodiments, the method includes providing exercise equipment including a motor and an end effector operably coupled with the motor. In some embodiments, the method includes obtaining a user input indicating a desired characteristic of a virtual flywheel, the desired characteristic determining an amount of resistance to be exerted on the end effector by the motor during the flywheel training exercise. In some embodiments, the method includes obtaining calibration data indicating a first position and a second position of the end effector corresponding to a range of motion of the flywheel training exercise. In some embodiments, the method includes, during a wind-out phase in which the end effector is moved in a first direction, determining a first force to be exerted on the end effector using a simulation of a flywheel based on acceleration of the end effector, and operating the motor to exert the first force on the end effector. In some embodiments, the method includes, during a wind-in phase in which the end effector is moved in a second direction, determining a second force to be exerted on the end effector using the simulation of the flywheel based on speed of the end effector, and operating the motor to exert the second force on the end effector.

[0011]In some embodiments, determining the first force during the wind-out phase of the flywheel training exercise includes determining the first force based on an acceleration of the end effector and the desired characteristic of the virtual flywheel. In some embodiments, determining the second force during the wind-in phase of the flywheel training exercise includes determining the second force based on a monotonically increasing function of a difference between a speed of the end effector and a simulated speed of the virtual flywheel. In some embodiments, the simulated speed of the virtual flywheel is updated based on a previously determined simulated speed of the virtual flywheel and a force exerted by a user on the end effector. In some embodiments, the calibration data is obtained by at least one of (i) prompting a user to perform a repetition of the flywheel training exercise and recording the first position and the second position of the end effector, (ii) predicting the first position and the second position of the end effector based on one or more characteristics of the user, or (iii) predicting the first position and the second position of the end effector based on a first position and a second position of the end effector for a different exercise. In some embodiments, the method includes determining whether to transition the simulation of the virtual flywheel out of a wind-out state corresponding to the wind-out phase of the flywheel training exercise and into a wind-in state corresponding to the wind-in phase of the flywheel training exercise responsive to at least one of (i) a position of the end effector exceeding the first position, or (ii) a simulated payout of the virtual flywheel returning to an intermediate position of the end effector after passing the second position.

[0012]In some embodiments, the method includes determining whether to transition the simulation of the virtual flywheel out of a wind-in state and into a wind-out state responsive to at least one of (i) the position of the end effector being less than or equal to a minimum allowable position corresponding to an end of the wind-out phase, or (ii) a speed of the virtual flywheel being less than or equal to zero. In some embodiments, the first force is determined in the wind-out phase during a concentric portion of a repetition of the flywheel training exercise, and the second force is determined in the wind-in phase during an eccentric portion of the repetition of the flywheel training exercise. In some embodiments, the speed of the end effector and the acceleration of the end effector are determined based on sensor data from a position sensor and inertial measurement data obtained from an inertial measurement unit positioned within the end effector.

[0013]Another implementation of the present disclosure is a control system for simulating flywheel training, according to some embodiments. In some embodiments, the control system includes processing circuitry. In some embodiments, the processing circuitry is programmed to obtain sensor data indicating movement of an end effector of fitness equipment. In some embodiments, the processing circuitry is programmed to operate an electric motor of the fitness equipment, based on the movement of the end effector, to exert a force on the end effector, the force on the end effector determined based on a result of a physics-based simulation of a virtual flywheel in order to provide a flywheel training experience for a user without requiring a flywheel physically coupled to the end effector.

[0014]In some embodiments, a size of the virtual flywheel for the physics-based simulation is user adjustable to adjust a behavior of the virtual flywheel and the force exerted on the end effector responsive to movement of the end effector. In some embodiments, the processing circuitry is further programmed to, prior to the operation of the electric motor to simulate the flywheel training experience, operate a display screen of the fitness equipment to prompt the user to perform multiple repetitions of the flywheel training exercise with the end effector. The processing circuitry is also programmed to record minimum and maximum positions of the end effector while performing the multiple repetitions. The processing circuitry is also programmed to implement the physics-based simulation of the virtual flywheel using the minimum and maximum positions to determine when to transition between a wind-in state and a wind-out state of the virtual flywheel.

[0015]In some embodiments, the sensor data includes position data obtained from a position sensor operably coupled with an output shaft of the electric motor. In some embodiments, the movement of the end effector includes a speed and an acceleration of the end effector. In some embodiments, the speed and the acceleration of the end effector are determined by the processing circuitry using numerical differentiation of the position data and a filter.

[0016]Another implementation of the present disclosure is one or more non-transitory computer-readable media storing program instructions that, when executed by one or more processors, cause the one or more processors to perform operations, according to some embodiments. The operations may include obtaining data indicating movement of an end effector of fitness equipment. The operations can also include determining a target force for a motor of the fitness equipment by, during a first phase of an exercise, determining the target force based on an acceleration of the end effector, and during a second phase of the exercise, determining the target force based on a simulated speed of a virtual mass. The operations may also include controlling the motor based on the target force. In some embodiments, the virtual mass is a virtual flywheel.

BRIEF DESCRIPTION OF THE FIGURES

[0017]FIG. 1 is a perspective view of fitness equipment, according to some embodiments.

[0018]FIG. 2 is another perspective view of fitness equipment, according to some embodiments.

[0019]FIG. 3 is a block diagram of the fitness equipment of FIG. 1 or FIG. 2, according to some embodiments.

[0020]FIG. 4 is a block diagram of a control system for the fitness equipment of FIG. 3, according to some embodiments.

[0021]FIG. 5 is a diagram of a sensor manager of a controller of the control system of FIG. 4, according to some embodiments.

[0022]FIG. 6 is a block diagram of the sensor manager of the controller of the control system of FIG. 4, according to some embodiments.

[0023]FIG. 7 is a state diagram of the controller of FIG. 4, according to some embodiments.

[0024]FIG. 8 is a flow diagram of a process for operating an electric motor of exercise equipment to simulate flywheel training, according to some embodiments.

[0025]FIG. 9 is a graph illustrating virtual flywheel position as a user performs repetitions, according to some embodiments.

[0026]FIG. 10 is a graph showing effector extension corresponding to the virtual flywheel position of FIG. 9, according to some embodiments.

DETAILED DESCRIPTION

[0027]Before turning to the figures, which illustrate certain exemplary embodiments in detail, it should be understood that the present disclosure is not limited to the details or methodology set forth in the description or illustrated in the figures. It should also be understood that the terminology used herein is for the purpose of description only and should not be regarded as limiting.

[0028]Referring generally to the figures, an exercise apparatus and methods relating thereto are shown. In particular, an exercise apparatus configured as a motorized strength training apparatus is shown. In the motorized strength training apparatus described herein, an electric motor operates to generate a tension in a cable. An end effector, in particular an exercise implement such as a handle, bar, etc. can be connected to the cable such that the tension is communicated to the exercise implement and a force is exerted on a user holding (or otherwise in contact with) the exercise implement. As described in further detail below, fitness equipment within the scope of the present disclosure can provide an integrated fitness and game (e.g., sport) experience, which can cause users to increase their fitness and game performance.

[0029]According to various embodiments, a control system including a controller and a motor are configured to implement simulated flywheel training. The motor may be operably coupled with the end effector. The controller is configured to use sensor data indicating motion of the end effector as the user performs an exercise and perform a physics-based simulation of a virtual flywheel. The controller operates the motor to provide a counter-force that opposes a direction of motion of the movement of the end effector in accordance with the physics-based simulation of the virtual flywheel in order to implement a simulated flywheel training experience for the user without requiring a physical flywheel to be coupled with the end effector.

[0030]Referring now to FIG. 1, fitness equipment, in particular an exercise apparatus 100, is shown, according to some embodiments. The exercise apparatus 100 includes a base platform 102, a first stanchion 104 extending vertically from the base platform 102 proximate a first end of the base platform 102, a second stanchion 106 extending vertically from the base platform 102 proximate the first end of the base platform 102, a display console 108 coupled to the base platform 102 and positioned between the first stanchion 104 and the second stanchion 106. The exercise apparatus can also include a bench selectively positionable on the base platform 102. The exercise apparatus 100 also includes a first motor 112 positioned on the base platform 102 at the first stanchion 104 and a second motor 114 positioned on the base platform 102 at the second stanchion 106.

[0031]The exercise apparatus 100 can also include a first cable extending from the first motor 112 and a second cable extending from the second motor 114. The exercise apparatus 100 also includes a first terminal 122 coupled to the first stanchion and repositionable along the first stanchion 104, and a first set of pulleys 123 positioned at the base platform 102. In the state shown in FIG. 1, the first cable can extend from the first motor 112 along the first set of pulleys 123 to the first terminal 122, for example. Cable routing according to some embodiments is shown in U.S. patent application Ser. No. 17/495,584, filed Oct. 6, 2021, the entire disclosure of which is incorporated by reference herein in its entirety.

[0032]The exercise apparatus 100 also includes a second terminal 124 coupled to the second stanchion 106 and repositionable along the second stanchion 106, and a second set of pulleys 125 positioned at the base platform 102. In the state shown in FIG. 1, the second cable can extend from the second motor 114 along the second set of pulleys 125 to the second terminal 124, for example. Cable routing according to some embodiments is shown in U.S. patent application Ser. No. 17/495,584, filed Oct. 6, 2021, the entire disclosure of which is incorporated by reference herein in its entirety.

[0033]As shown in FIG. 1, the base platform 102 is substantially planar and is configured to stably rest on a floor or other ground surface to provide a stable foundation for the exercise apparatus 100. The base platform 102 can define an exercise surface on which a user can perform one or more exercise and/or on which a bench can be positioned. In some embodiments, the base platform 102 is configured to be at least partially foldable into an out-of-use configuration in which the base platform 102 is folded up and away from the floor or ground under the base platform 102 (thereby reducing the space occupied by the exercise apparatus 100 when not in use). The base platform 102 can include one or more sensors configured to detect user interactions with the base platform 102, for example one or more force sensors, pressure sensors, load cells, accelerometers, acoustic sensors (microphones), etc. For example, the base platform 102 may include one or more force plates coupled to a frame of the base platform 102 so as to be slightly moveable, enabling the one or more force plates to measure (e.g., weigh) forces and/or pressures exerted thereon and/or accelerations thereof (e.g., caused by a user). In some embodiments, sensors in the base platform 102 can measure a shifting, change of balance, etc. of user's weight (e.g., shifting of weight from one foot of the user to the other foot of the user).

[0034]The display console 108 may be configured to display information relating to operation of the exercise apparatus 100 to a user. As shown in FIG. 1, the display console 108 includes a screen 140 (e.g., LED screen). In some embodiments, the screen 140 is a touchscreen configured to accept user input. In other embodiments, one or more additional buttons, keys, toggles, etc. are included on the display console 108 to receive user input. In some embodiments, the display console 108 includes one or more speakers configured to emit sounds relating to operation of the exercise apparatus 100. In some embodiments, the exercise apparatus 100 alternatively or additionally includes a virtual reality or augmented reality headset configured to be worn by a user and to display information relating to operation of the exercise apparatus 100 to the user. In some embodiments, the display console 108 houses a controller for the exercise apparatus 100.

[0035]The first stanchion 104 and the second stanchion 106 extend upwards from the base platform 102 and are spaced apart from one another near an end of the base platform 102. The first stanchion 104 and the second stanchion 106 are shown as being substantially symmetric across a center line of the base platform 102. As shown in FIG. 1, the first stanchion 104 and the second stanchion 106 are substantially the same height. The first stanchion 104 and the second stanchion 106 may be approximately six feet tall, for example with a height in a range between five feet and seven feet, as in the example of FIG. 1. In other embodiments, the first stanchion 104 and/or the second stanchion 106 may be shorter, for example with a height in a range between two feet and four feet.

[0036]The first terminal 122 is coupled to the first stanchion 104 and is configured to be selectively repositioned along the first stanchion 104. For example, the first terminal 122 may include a projection that rides along a groove or slot of the first stanchion 104 (or vice-versa) and can be selectively held in place at various heights using a pin configured to engage apertures of the first stanchion 104. The first terminal 122 can include a handle to facilitate repositioning of the first terminal 122. The second terminal 124 is coupled to the second stanchion 106 and is configured to be selectively repositioned along the second stanchion 106. For example, the second terminal 124 may include a projection that rides along a groove or slot of the second stanchion 106 (or vice-versa) and can be selective held in place at various heights using a pin configured to engage apertures of the second stanchion 106. The second terminal 124 can include a handle to facilitate repositioning of the second terminal 124. Accordingly, the first terminal 122 and the second terminal 124 can be repositioned (e.g., manually by a user) to various heights along the first stanchion 104 and the second stanchion 106, i.e., at various heights above the base platform 102. In some embodiments, actuators (e.g., linear actuators) are included in the first stanchion 104 and the second stanchion 106 to automatically move the first terminal 122 and the second terminal 124, for example as described in U.S. patent application Ser. No. 17/584,245, filed 20 Jan. 2022, the entire disclosure of which is incorporated by reference herein.

[0037]The first motor 112 is shown as being positioned on the base platform 102 at a bottom end of the first stanchion 104. The first motor 112 can be operationally coupled to a first cable such that the first motor 112 can generate tension in the first cable. In some examples, the first motor 112 can include an electric motor coupled to a spool such that the electric motor operates to generate a torque that rotates the spool. In such examples, the spool is coupled to a first cable such that the first cable can be repeatedly wound and unwound from the spool of the first motor 112 by operation of the first motor 112.

[0038]The first motor 112 is configured to controllably generate a force that acts both acts to retract a first cable towards the first motor 112 and to resists the first cable from being pulled out (unspooling, releasing) from the first motor 112. Thus, the first motor 112 can provide a controllable tension in the first cable in different phases (e.g., concentric and eccentric phases) of exercises performed using the exercise apparatus 100, for example providing different amounts of tension in different phases or otherwise dynamically altering the tension. In some embodiments, the first motor 112 includes a permanent magnet direct current motor. In various embodiments, the first motor 112 includes a belt, a gear, a set of gears, various gearing, etc.

[0039]The second motor 114 is shown as being positioned on the base platform 102 at a bottom end of the second stanchion 106. The second motor 114 is operationally coupled to a second cable such that the second motor 114 can generate tension in the second cable 120. Other than acting on the second cable rather than the first cable, the second motor 114 is configured substantially the same as the first motor 112 in the examples shown. Various exercises that can be enabled by the operation of the first motor 112 and the second motor 114 including strength training exercises, cardio exercises (e.g., rowing, paddling, swimming, skiing, etc. exercises), Pilates exercises, etc., and are shown in U.S. patent application Ser. No. 17/495,584 filed Oct. 6, 2021, U.S. patent application Ser. No. 17/462,237 filed Aug. 31, 2021, and U.S. patent application Ser. No. 17/495,575 filed Oct. 6, 2021, the entire disclosures of which are incorporated by reference herein.

[0040]Referring now to FIG. 2, a perspective view of fitness equipment, in particular a fitness system 200 is shown, according to an example embodiment. The fitness system 200 is configured to provide a full fitness experience, including a resistance training experience. In particular, the fitness system 200 includes a multi-cable force production system 202, a pacing lighting system 204, a display interface 206, an integrated bench 208, and adjustable rails 210.

[0041]The multi-cable force production system 202 can be configured as described in detail in U.S. patent application Ser. No. 16/909,003, filed Jun. 23, 2020, the entire disclosure of which is incorporated by reference herein. The multi-cable force production system 202 as shown here in FIG. 2 includes multiple (shown as four) cables 212 connected to an end effector, shown as barbell 214, that can be selectively supported by cradles 211 supported by a frame 213. The cables 212 are connected to independent electric motors via separate pulleys 216. The electric motors can be operated to independently vary the tension in each cable in order to create a desired force profile at the barbell 214, as described in detail in the above-cited U.S. patent application Ser. No. 16/909,003.

[0042]The multi-cable force production system 202 is also shown as include platform (base, foundation, exercise surface, etc.) 218. Platform 218 can include one or more sensors configured to detect user interactions with the platform 218, for example one or more force sensors, pressure sensors, load cells, accelerometers, acoustic sensors (microphones), etc. For example, the base platform 218 may include one or more force plates coupled to a frame of the platform 218 so as to be slightly moveable, enabling the one or more force plates to measure (e.g., weigh) forces and/or pressures exerted thereon and/or accelerations thereof (e.g., caused by a user).

[0043]The pacing lighting system 204 can be configured as described in detail in U.S. patent application Ser. No. 17/010,573, filed Sep. 2, 2020, the entire disclosure of which is incorporated by reference herein. The pacing lighting system 204 as shown here in FIG. 2 includes a pair of vertically-arranged rows of lighting element configured to illuminate dots (points, circles, areas) of different colors. The dots illuminated on the pacing lighting system 204 can indicate to a user a desired/preferred range of motion for an exercise a real-time indication of the preferred position of the user (showing movement intended to be followed by the user), and a current position of the user (or barbell 214) relative to that range of motion. As shown in FIG. 2, the pacing lighting system 204 can be arranged parallel to a linear path along which the frame 213 can move, such that the pacing lighting system 204 can illuminate points that correspond to heights relative to the frame 213. In some cases, control of the pacing lighting system 204 and the linear positioning system for the frame 213 are coordinated so that an illuminated dot intended to guide the user's motion is aligned with the cradles 211 at the beginning and end of an exercise.

[0044]The display interface 206 is configured to show various instructions, exercise data, resistance amounts, exercise routines, and other information to a user. The display interface 206 may be a touchscreen to enable interaction between the user and the display interface 206. For example, the display interface 206 may be configured to accept user inputs requesting operations and changing settings for the fitness system 200, force production system 202, and/or pacing lighting system 204. Various customized exercise programs and content can be provided via the display interface 206, including as described in U.S. patent application Ser. No. 16/909,003 cited above and incorporated herein by reference.

[0045]The fitness system 200 is also shown as including an integrated bench 208 which can be selectively included or removed from the fitness system 200 to enable exercises suitable for performance using a bench (e.g., bench press). The integrated bench 208 may be configured to be coupled to the platform 218 in some embodiments. The integrated bench 208 can be adjustable to different inclinations for various exercises. In some embodiments, the integrated bench 208 includes sensors or electronics to facilitate use of the integrated bench with other elements of the fitness system 200.

[0046]The fitness system 200 is also shown as including adjustable rails 210. The adjustable rails 210 are positioned below the cradles 211 and along sides of the platform 218, and are configured to stop the bar from moving lower than height defined by the adjustable rails 210. The adjustable rails 210 can thus receive the barbell 214 when a user is unable to complete an exercise or otherwise wishes to place the barbell 214 somewhere other than in the cradles 211.

[0047]Various hardware and/or software of the various elements of the fitness system 200 can be integrated and/or interoperable to provide for a comprehensive, unified experience for users of the fitness system 200. For example, a control system for the fitness system 200 can control the force production system 202, the pacing lighting system 204, and the display interface 206. As one feature enabled by this integration, the force production system 202 can be controlled in coordinate with motorized movement of the cradles 211 by one or more actuators (e.g., as described in U.S. patent application Ser. No. 17/584,245, filed 20 Jan. 2022, the entire disclosure of which is incorporated by reference herein), for example either allowing the cables 212 to be extended as the cradles 211 move upwards or by retracting slack in the cables 212 as the cradles 211 move downwards. Various other integrations are also possible in various embodiments.

[0048]Referring now to FIG. 3, a diagram illustrates exercise equipment 300. The exercise equipment 300 may be implemented as the exercise apparatus 100 or the fitness system 200. The exercise equipment 300 includes a motor 302, a gearbox 306, a spool 308, a cable 310 (e.g., a rope, a tensile member, a tensile element, etc.), and an effector 312. The gearbox 306 may be optional. The motor 302 is configured to drive the spool 308 through a driveshaft 304 (e.g., an output shaft). The driveshaft 304 may be coupled directly with the spool 308 (e.g., the spool 308 is mounted on the driveshaft 304), or may be coupled with an input of the gearbox 306 which is coupled with the spool 308 at a separate driveshaft. The motor 302 may be the first motor 112 or the second motor 114. In some embodiments, multiple motors 302 are implemented to drive the spool 308. The cable 310 may be the first cable or the second cable described in greater detail above with reference to FIG. 1. The cable 310 may also be the cables 212. The effector 312 is movable by the user in a first direction (e.g., such that the cable 310 is unwound from the spool 308) and a second direction (e.g., such that the cable 310 is wound onto the spool 308).

[0049]The effector 312 is coupled with a free end of the cable 310. The effector 312 may have the form of a handle, a rope, a barbell, etc. For example, the effector 312 may have the form of the barbell 214. The effector 312 is fixedly coupled with the cable 310 such that when a user pulls on the effector 312 during a wind out state, the spool 308 is driven to rotate thereby winding out the cable 310 that is wrapped around the spool 308. The cable 310 includes a stopper 314 (e.g., a member anchored or coupled to the cable 310 proximate the effector 312). The cable 310 is configured to pass through an opening 316 of a frame 318 of the exercise equipment 300 with the stopper 314 positioned more proximate the effector 312. The stopper 314 has a larger size than the opening 316 so that, when the effector 312 is released, the cable 310 is limited from being fully wound around the spool 308.

[0050]It should be understood that the exercise equipment 300 may include multiple motors 302 that are arranged in series. For example, the exercise equipment 300 can include a first electric motor positioned on a first side of the spool 308 and a second electric motor positioned on a second side of the spool 308. The first and second electric motor can be operated in unison to drive the spool 308. Likewise, the exercise equipment 300 can include multiple cables 310 that are wound around separate spools 308. The motor 302 is configured to drive to provide a counter-torque to the spool 308 during the wind-out of the cable 310 due to the pulling motion by the user on the end effector 312.

[0051]The motor 302 is operated to provide torque to the spool 308 to simulate a flywheel or disk coupled with the spool 308. The motor 302 is specifically operated in order to provide counter-torques to resist the motion of the effector 312 and corresponding linear motion of the cable 310 in a manner as if a flywheel or disk were coupled to the spool 308. The motor 302 implements a simulated disk having rotational inertia coupled with the spool 308.

[0052]The motor 302 may be operated by a control system 400 of the exercise equipment 300. The control system 400 includes a controller 402, a motor controller 404, and a user interface 436. The control system 400 also includes a position sensor 408 at the spool 308 that is configured to measure a position of the spool 308. The control system 400 may also include an inertial measurement unit (“IMU”) 406 that is positioned within the effector 312 or another sensor, or a combination of one or more sensors. The IMU 406 may include multiple accelerometers configured to measure acceleration in multiple directions. The IMU 406 may be an optional sensor. The IMU 406 (e.g., the sensor in the effector 312) may be configured to obtain position, velocity, or acceleration of the effector 312.

[0053]The controller 402 is configured to receive position sensor data from the position sensor 408, and inertial sensor data from the IMU sensor 406. The controller 402 may also receive, from the user interface 436, a virtual wheel size as an input. The controller 402 is configured to use the position sensor data, the inertial sensor data, and the virtual wheel size in order to perform a simulation of a position, speed, and acceleration of a virtual wheel (e.g., a virtual disk). The controller 402 is configured to generate, as a result of the simulation, control signals for the motor controller 404 such that the motor controller 404 operates the motor 302 to provide torque to the spool 308 so that the user experiences corresponding forces on the effector 312 as if a disk having the virtual wheel size were coupled to the spool 308. It should be understood that the controller 402 and the motor controller 404 may be structurally similar (e.g., both including processing circuits) or may be implemented on a same processing circuit. For example, the controller 402 may be a remote computing system that is configured to wirelessly communicate with the components of the control system 400 and communicate wirelessly with the motor controller 404 or another intermediary controller. In another example, the functionality of both the controller 402 and the motor controller 404 are implemented on common processing circuitry. Advantageously, the control system 400 implements a simulation of a disk in order to provide the user of the exercise equipment 300 with the experience of flywheel training, without requiring a physical flywheel. The control system 400 can also perform the simulation using different virtual wheel sizes as selected or set by the user via the user interface 436. The user interface 436 may be or include the screen 140, the display console 108, or the display interface 206. The virtual wheel size may determine or result in an amount of resistance that is supplied to the effector 312 during the simulated flywheel training experience by changing a behavior of the virtual flywheel simulated by the controller 402.

[0054]Referring to FIG. 4, the controller 402 includes processing circuitry 410 including a processor 412 and memory 414. Processing circuitry 410 can be communicably connected to a communications interface such that processing circuitry 410 and the various components thereof can send and receive data via the communications interface. Processor 412 can be implemented as a general purpose processor, an application specific integrated circuit (ASIC), one or more field programmable gate arrays (FPGAs), a group of processing components, or other suitable electronic processing components.

[0055]Memory 414 (e.g., memory, memory unit, storage device, etc.) can include one or more devices (e.g., RAM, ROM, Flash memory, hard disk storage, etc.) for storing data and/or computer code for completing or facilitating the various processes, layers and modules described in the present application. Memory 414 can be or include volatile memory or non-volatile memory. Memory 414 can include database components, object code components, script components, or any other type of information structure for supporting the various activities and information structures described in the present application. According to some embodiments, memory 414 is communicably connected to processor 412 via processing circuitry 410 and includes computer code for executing (e.g., by processing circuitry 410 and/or processor 412) one or more processes described herein.

[0056]The memory 414 includes a sensor manager 416, a calibration manager 418, a virtual wheel simulator 420, a state machine 422, a display manager 424, and a control manager 426. The controller 402 is configured to receive the position sensor data from the position sensor 408 in real-time (e.g., time-series data). The controller 402 is also configured to obtain the IMU sensor data provided by the IMU 406. The controller 402 is also configured to receive a selection of the virtual wheel size from the user interface 436.

[0057]The controller 402 is configured to generate controls for the motor controller 404 as a result of the simulation implemented using the virtual wheel size. The controller 402 may either provide control signals to the motor controller 404 or directly to the motor 302 (e.g., motor controls) such that the motor 302 is operated to provide a tension to the cable 310 that results in a force at the effector 312 that simulates a wheel having the virtual wheel size coupled with the spool 308.

[0058]The sensor manager 416 is configured to obtain the position sensor data from the position sensor 408 and determine both a speed of the effector 312 and an acceleration of the stopper 314. In some embodiments, the effector 312 is considered to be moved along a single dimension: either in a wind-out direction such as away from the spool 308 so that the cable 310 is unwound from the spool 308, or in a wind-in direction such as towards to the spool 308 so that the cable 310 is wound onto the spool 308.

[0059]The sensor manager 416 is configured to use the position sensor data from the position sensor 408 indicative of a position of the effector 312 to determine a speed and acceleration of the effector 312. The sensor manager 416 may implement either a numerical differentiators or a Kalman filter to determine both the speed (e.g., velocity) and acceleration of the effector 312. Referring to FIGS. 4 and 5, the sensor manager 416 may implement a first numerical differentiator 428, a filter 430, and a second numerical differentiator 432. The first numerical differentiator 428 is configured to receive the position sensor data and numerically differentiate the position sensor data. The first numerical differentiator 428 is configured to output velocity of the effector 312. The first numerical differentiator 428 and the second numerical differentiator 432 may implement any numerical differentiation technique that receive time-series data of position and output velocity (e.g., a rate of change of the position sensor data with respect to time). When the first numerical differentiator 428 outputs velocity, the velocity may include unwanted high frequency components in the signal due to the numerical differentiation technique. The first numerical differentiator 428 may provide the velocity (e.g., time-series data of velocity of the effector 312) to the filter 430. The filter 430 is configured to attenuate higher frequency portions of the velocity while allowing lower frequency components to pass through. The filter 430 may be a first order low pass filter. The filter 430 outputs a filtered velocity signal to the second numerical differentiator 432. The second numerical differentiator 432 is configured to perform differentiation with respect to time on the filtered velocity signal to determine acceleration of the effector 312. The second numerical differentiator 432 may similarly output the acceleration to another filter similar to filter 430 for attenuating high frequency components of the acceleration output. In this way, the sensor manager 416 may use numerical differentiation techniques in order to determine both a velocity and acceleration of the position sensor data as provided by the position sensor 408.

[0060]Referring to FIGS. 4 and 6, the sensor manager 416 may implement a Kalman filter 434 to determine both the velocity and acceleration of the effector 312. The Kalman filter 434 is configured to receive both the position sensor data from the position sensor 408 indicating position of the spool 308 and therefore the effector 312, and the IMU sensor data from the IMU 406 indicating acceleration of the effector 312 is different directions (e.g., in multiple directions). The Kalman filter 434 is configured to output both velocity and acceleration of the effector 312. In this way, the sensor manager 416 may implement numerical differentiation techniques as described in greater detail above with reference to FIG. 5, or a Kalman filter as described herein with reference to FIG. 6 in order to determine both the velocity and acceleration of the effector 312.

[0061]Referring again to FIG. 4, the calibration manager 418 is configured to implement a calibration process or technique for the virtual wheel simulator 420. The calibration manager 418 is configured to determine a pair of transition points between the wind-out state and the wind-in state. In particular, the calibration manager 418 is configured to determine, based on data collected over a calibration time period, a first position of the virtual wheel or the spool 308, pmaximum (e.g., a maximum allowable position), and a second position of the virtual wheel or the spool 308, pminimum (e.g., a minimum allowable position). In a physical flywheel device, the user adjusts the length of the corresponding cable or rope so that when the cable or rope is fully extended during the exercise (e.g., at an end point of a concentric portion of the range of motion of the exercise), the position of the physical flywheel device is such that the cable or rope used over the course of the exercise is fully unwrapped from a corresponding shaft or spool (pmaximum). Similarly, the user must set the second position (pminimum), so that when the cable or rope is fully retracted (e.g., at an end point of an eccentric portion of the range of motion of the exercise), the position of the physical flywheel device is such that an entirety of cable or rope that used during the exercise is fully wrapped on the corresponding shaft or spool. In this way, in a physical flywheel device, the user sets the length of the rope or cable for the specific exercise such that the cable is completely unwrapped from the flywheel at a first end of range of motion of the specific exercise, and completely wrapped onto the flywheel at a second end of range of motion of the specific exercise. The first position (pminimum) and the second position (pmaximum) may be calibration data.

[0062]For the simulated or virtual flywheel (e.g., a disk having inertia) implemented by the controller 402, the calibration manager 418 is configured to determine the first position pminimum and the second position pmaximum of a specific exercise corresponding to different ends of range of motion of the specific exercise. The first position pminimum represents a point at which the virtual flywheel is beginning to unwrap the rope or cable from the virtual flywheel (e.g., at a beginning of the concentric phase of the exercise, or a first phase of the exercise). The second position pmaximum represents a point at which the virtual flywheel has completely wrapped the rope or cable onto the virtual flywheel for the specific exercise (e.g., at an end of the concentric phase and a beginning of an eccentric phase or second phase of the exercise). In physical flywheel devices, when the flywheel is first accelerated from rest at the first position, the physical flywheel exerts resistance on the rope due to inertia of the physical flywheel device. As the physical flywheel device is accelerated to rotate due to movement of the effector or handle, the cable or rope is unwound from the shaft during the concentric phase of the exercise, until the physical flywheel device reaches the second position at which point the cable or rope is completely unwound from the shaft. Due to rotational inertia of the flywheel, the shaft continues to rotate past the second position and begins to wind the cable or rope onto the shaft in an opposite direction across the eccentric phase of the exercise. The user must exert a force to counter the force exerted on the effector to decelerate the flywheel as the cable or rope is wound onto the shaft.

[0063]The calibration manager 418 is configured to determine the first position and the second position by implementing a calibration phase. During the calibration phase, the calibration manager 418 may operate the motor 302 to exert a resistance on the cable 310 while the user is instructed (e.g., via the user interface 436) to perform several repetitions of the exercise. The calibration manager 418 is configured to monitor the position sensor data obtained from the position sensor 408 and determine minimum and maximum positions as provided by the position sensor 408 while performing the repetitions of the exercise. The calibration manager 418 may average the minimum and maximum positions or otherwise aggregate the minimum position and the maximum position to determine the first position pminimum and the second position pmaximum of the virtual flywheel. In some embodiments, the calibration manager 418 is configured to select an absolute minimum value and an absolute maximum value from the multiple values of the minimum and maximum positions of the position sensor data obtained over the calibration process as the first position pminimum and the second position pmaximum of the virtual flywheel.

[0064]The first position first position pminimum and the second position pmaximum of the virtual flywheel may also be determined by the calibration manager 418 by using previously recorded values of the first position pminimum and the second position pmaximum of the virtual flywheel for specific exercises performed by the user. For example, the calibration manager 418 may keep a database of preferred values of the first position pminimum and the second position pmaximum of the virtual flywheel for specific exercises for the user and default to previously used values if available. In some embodiments, the calibration manager 418 is configured to estimate the first position pminimum and the second position pmaximum of the virtual flywheel for a specific exercise of the user based on values of the first position pminimum and the second position pmaximum of the virtual flywheel for other exercises. For example, the calibration manager 418 can perform a regression technique based on the values of the first position pminimum and the second position pmaximum of the virtual flywheel for other exercises to predict or infer different characteristics of the user such as height, forearm length, etc. In some embodiments, the calibration manager 418 uses the characteristics of the user and a predictive model to predict the values of the first position pminimum and the second position pmaximum of the virtual flywheel for the specific exercise selected by the user. In some embodiments, the characteristics of the user are provided as user inputs via the user interface 436. In some embodiments, the characteristics of the user are otherwise obtained such as based on image data obtained from image sensors or cameras of the exercise equipment 300 and image tracking techniques.

[0065]The calibration manager 418 is configured to calculate, using any of the techniques described in greater detail above, the values of the first position pminimum and the second position pmaximum of the virtual flywheel, and subsequently adjust the values during performance of the exercise. Specifically, the calibration manager 418 may adjust the calculated values of the first position pminimum and the second position pmaximum of the virtual flywheel based on position sensor data obtained from the position sensor 408, thereby combining the calibration process with the calculations of the values in order to determine values for the first position pminimum and the second position pmaximum of the virtual flywheel. In this way, the values of the first position pminimum and the second position pmaximum of the virtual flywheel can be adjusted in real-time based on actual motion of the exercise performed by the user.

[0066]The calibration manager 418 is configured to provide the values of the first position pminimum and the second position pmaximum of the virtual flywheel to the virtual wheel simulator 420 and the state machine 422. The state machine 422 is configured to transition the virtual wheel simulator 420 between a wind-in state in which the virtual flywheel is simulated to be pulling the cable 310 in (e.g., onto a shaft or spool) and a wind-out state in which the user is pulling on the cable 310 (or rope) to unwrap the cable 310 from the virtual flywheel. The state machine 422 and the simulator 420 operate using the wind-out state and the wind-in state instead of referring to eccentric and concentric motion because the state of the virtual flywheel may, in some scenarios, not be entirely dictated by the motion of the effector 312 implemented by the user.

[0067]During the wind-out state, while the user is performing a concentric motion of the exercise via the effector 312, force on the effector 312 is directly proportional to acceleration of the effector 312. For example, higher rates of acceleration on the effector 312 exerted by the user are directly proportional to an amount of force exerted on the effector 312. The resistance on the effector 312 during the wind-out state is therefore responsive to the motion of the effector 312 due to the user's action, which thereby allows the user to control the magnitude of reactive force on the effector 312 (e.g., a degree of tension). The harder the user pulls on the effector 312 (e.g., the higher the acceleration of the effector 312), the more the virtual wheel is accelerated, and due to inertia of the virtual wheel, the higher the force is applied on the effector 312. This allows the user to control the resistive force exerted on the effector 312 during concentric motions of the exercise.

[0068]The resistive force exerted on the effector 312 by the virtual wheel may be determined using a first model of the virtual wheel implemented by the virtual wheel simulator 420. The virtual wheel simulator 420 generally performs a physics-based simulation of a virtual flywheel. The first model of the virtual wheel is implemented by the virtual wheel simulator 420 when the state machine 422 commands the virtual wheel simulator 420 into the wind-out state (e.g., while the wind-out state is active). The first model may have the form:

Fend,effector=τdisk*rvirtual(1)

where τdisk is an amount of torque on the virtual wheel and rvirtual is the radius of the virtual wheel (e.g., a characteristic of the virtual wheel). The radius of the virtual wheel may be set by user as a parameter or characteristic of the virtual wheel size provided by the user via the user interface 436.

[0069]The amount of torque on the virtual wheel is determined by the virtual wheel simulator

τdisk=Idisk*adisk(2)

where Idisk is rotational inertia of the virtual wheel and @disk is acceleration of the virtual wheel. The rotational inertia of the virtual wheel may be set by the user as a parameter of the virtual wheel size provided via the user interface 436. In this way, the user may set the radius of the virtual wheel or the rotational inertia of the virtual wheel in order to achieve a different workout or different loads provided by the motor 302 via the simulation of the virtual wheel.

[0070]The acceleration of the virtual wheel is determined based on both an acceleration of the effector 312 and the virtual radius of the virtual wheel:

adisk=aend,effectorrvirtual(3)

where aend,effector is the acceleration on the effector 312. The acceleration on the effector 312 may be determined based on sensor data provided by the IMU 406 or the position sensor 408 as described in greater detail above with reference to FIGS. 4-5. The force on the effector, Fend,effector is provided to the control manager 426 which uses a relationship or algorithm to transfer the force to control signals for the motor controller 404 in order to implement motor controls on the motor 302 to achieve the force on the end effector Fend,effector.

[0071]The virtual wheel simulator 420 and the control manager 426 may also operate the motor 302 such that at least a threshold reactive force is always provided to the effector 312 during the wind-out state. If a threshold reactive force is not provided to the effector 312 during the wind-out state (e.g., as the user performs a concentric motion with the effector 312), the cable 310 may go slack. The virtual wheel simulator 420 can accomplish this by setting the force on the effector 312 Fend,effector to a minimum value such that the force Fend,effector is always at least a threshold value (e.g., setting the force Fend,effector equal to the threshold value if the force Fend,effector as determined by Equation 1 decreases below or equal to the threshold value), according to some embodiments. In some embodiments, the virtual wheel simulator 420 implements providing at least the threshold force to the effector 312 by adding a constant value to the force Fend,effector such that the force Fend,effector is maintained as a positive value.

[0072]The virtual wheel simulator 420 is also configured to track a velocity (e.g., angular velocity) of the virtual wheel during the wind-out state. The virtual wheel simulator 420 may determine the velocity of the virtual wheel using the function:

adisk=aend,effectorrvirtual(3)

where adisk is the angular acceleration of the virtual wheel (e.g., in radians squared per second), aend,effector is the acceleration on the effector 312, and rvirtual is the radius of the virtual wheel (e.g., as determined or set by the user input indicating virtual wheel size).

[0073]When the virtual wheel simulator 420 is operating in the wind-out state (e.g., as determined by the state machine 422), the virtual wheel simulator 420 is configured to track velocity (e.g., angular velocity @disk) of the virtual wheel. The virtual wheel simulator 420 may determine the velocity of the virtual wheel by selecting a minimum of either the velocity of the virtual wheel or a determined value of the virtual wheel based on both the velocity of the effector 312 and the radius of the virtual wheel. The selection may have the form:

vdisk=minimum (vdisk,prev,vend,effectorrvirtual)(4)

where vdisk,prev is the previous velocity of the virtual wheel (e.g., as a previous time step or control implementation), vend,effector is the velocity of the effector 312, rvirtual is the radius of the virtual wheel, and vdisk is the velocity of the virtual wheel for a current control implementation. Alternatively, the virtual wheel simulator 420 may integrate the acceleration of the virtual wheel, adisk (as determined in Equation 3 shown above) to determine the velocity of the virtual wheel. The virtual wheel simulator 420 may implement a numerical integration technique to determine the acceleration of the virtual wheel adisk.

[0074]When the virtual wheel simulator 420 is transitioned into the wind-in state (e.g., by the state machine 422) due to the virtual wheel reaching a position where the simulated cable or rope is being wound onto a shaft or taken up onto the shaft, the virtual wheel simulator 420 is configured to calculate force on the effector 312 by (e.g., a second model):

Fend,effector=k*f(e)*Idisk(5)

where k is a constant (e.g., a predetermined value), Idisk is the rotational inertia of the virtual wheel, and ƒ(e) is a monotonically increasing function of the variable e (e.g., an error value).

[0075]The virtual wheel simulator 420 is also configured to determine the value of the variable e using:

e=vdisk-(-vend,effector,disk)(6)

where vdisk is updated with every control cycle by:

vdisk=vdisk,prev-f(Fend,effector)(7a)

where vdisk is the velocity of the virtual wheel for the current control cycle (e.g., a current wind-in state compared to a previous wind-in state, a current implementation of an exercise compared to a previous performance of the exercise, etc.), vdisk,prev is the velocity of the virtual wheel for the previous control cycle, and ƒ(Fend,effector) is a function based on the force on the effector 312 (e.g., Fend,effector). The variable e represents an error, difference, or comparison between the velocity of the virtual wheel and the speed of the effector 312.

[0076]Equation 7a may also have the form:

vdisk(k+1)=vdisk(k)-f(Fend,effector)(7b)

where vdisk(k+1) is the velocity of the virtual wheel for the current or next control cycle, vdisk(k) is the velocity of the virtual wheel for a previous control cycle relative to vdisk(k+1) (e.g., at a previous time step where a control implementation is performed every k interval (e.g., a refresh rate)), and ƒ(Fend,effector) is a function based on the force on the effector 312 (e.g., Fend,effector).

[0077]The variable vend,effector, disk in Equation 6 above is a measured linear velocity of the effector 312 converted to the coordinate or reference frame of the virtual wheel. For example, vend,effector,disk may be determined by the virtual wheel simulator 420 by:

vend,effector,disk=vend,effector*rvirtual(8)

where vend,effector is the velocity of the effector 312 and rvirtual is the radius of the virtual wheel.

[0078]The virtual wheel simulator 420 is also configured to replicate resistance force applied during the eccentric phase provided by the user. In a system that uses a physical flywheel, resistance force during the eccentric portion of the exercise is controlled by the user. For example, as the flywheel is winding in the rope or cable, the faster the user attempts to stop or slow the motion off the flywheel, the higher the force exerted by the user is. If the user attempts to “speed-match” the motion of the effector with the speed of the flywheel, the rope will go slack since the user is not providing a resistance force to the effector. However, if the user speed-matches the motion of the effector with the rotation of the flywheel, the rope or cable will be taken up until the flywheel is abruptly stops when a stopper on the rope contacts a portion of the frame of the exercise equipment.

[0079]In order to simulate this behavior, the virtual wheel simulator 420 is configured to use a virtual value of the velocity of the virtual wheel, vdisk, to adjust resistance during the wind-in phase. The starting value of the velocity of the virtual wheel vdisk is set during the wind-out phase as described in greater detail above with reference to Equations 4 and 7.

[0080]During the wind-in phase, the virtual wheel simulator 420 is configured to both determine resistance and update the velocity of the virtual wheel vdisk. For example, in a physical flywheel device, the resistance exerted during the wind-in phase is dependent on how the user moves the effector eccentrically and how the user resists the rotation of the physical flywheel. If the user matches the speed of the effector to the speed of the physical flywheel, then no resistance is applied to the cable or rope. Similarly, if the user tries to limit or decelerate the physical flywheel, the resistance on the rope increases.

[0081]The virtual wheel simulator 420 is configured to simulate this behavior (e.g., the resulting resistive forces due to differences between the velocity at the effector 312 and velocity of the virtual wheel) during the wind-in state using Equation 5 as described in greater detail above. The function ƒ(e) is a monotonically increasing function of the variable e which expresses an error between the velocity of the virtual wheel and the velocity of the effector 312 as described in Equation 6 above. It should also be understood that the term ƒ(e) in Equation 5 indicates that there is a relationship between the error e and the force to be applied to the effector 312 Fend,effector. The relationship between the error e and the force to be applied to the effector 312 Fend,effector may be linear or non-linear, provided the relationship is a monotonically increasing function. Further, in order to ensure that the user does not experience excessively high loads on the effector 312, the virtual wheel simulator 420 may set a threshold value of the force on the effector 312 which the force Fend,effector is not allowed to exceed. In some embodiments, the threshold value is set by the user provided as a user input via the user interface 436.

[0082]Referring still to FIG. 4, the state machine 422 is configured to determine when to transition the virtual wheel simulator 420 between the wind-out state and the wind-in state. The state machine 422 provides commands to the virtual wheel simulator 420 to perform the wind-in or the wind-out functionality as described in greater detail above. The virtual wheel simulator 420 is configured to output time-series or real-time values of the force on the effector 312 Fend,effector to the control manager 426 so that the motor 302 is operated (e.g., by the motor controller 404 or by the controller 402 directly) to provide the force determined by the virtual wheel simulator 420 to the effector 312.

[0083]The state machine 422 may begin the virtual wheel simulator 420 in the wind-out state at the beginning of an exercise. The state machine 422 is configured to transition the virtual wheel simulator 420 out of the wind-out state and into the wind-in state responsive to either one of two conditions occurring.

[0084]First, if the position of the effector 312, as indicated by the position sensor 408, exceeds the second position (pmaximum). If the current position of the effector 312 is such that the user has extended the effector 312 beyond the second position, the state machine 422 is configured to command the virtual wheel simulator 420 to transition out of the wind-out state and into the wind-in state to simulate continued rotation of the virtual wheel and the corresponding forces exerted on the effector 312 during the wind-in state.

[0085]Second, if the user stops pulling on the effector 312 before reaching the second position (pmaximum), at pi, the virtual wheel simulator 420 will continue simulating rotation of the virtual flywheel and winding out the rope or cable. Once the virtual wheel reaches the end of the length of simulated rope and begins virtually taking up the rope or cable, the virtual wheel will eventually reach the position pi at which the user stopped pulling on the effector 312 (albeit rotating to virtually take up the rope or cable). When the virtual wheel reaches the position pi at which the user stopped pulling on the effector 312, the state machine 422 is configured to command the virtual wheel simulator 420 to transition out of the wind-out state and into the wind-in state.

[0086]Referring still to FIG. 4, the state machine 422 may command the virtual wheel simulator 420 to transition out of the wind-in state and into the wind-out state responsive to one of either two conditions. First, if the position of the effector 312 as indicted by the position sensor data is less than pminimum (the first position), then the state machine 422 commands the virtual wheel simulator 420 to transition out of the wind-in state and into the wind-out state. Second, if the velocity of the virtual wheel is less than or equal to zero (vdisk≤0), then the state machine 422 commands the virtual wheel simulator 420 to transition out of the wind-in state and into the wind-out state.

[0087]Referring to FIG. 7, a state diagram 500 illustrates functionality of both the state machine 422 and the virtual wheel simulator 420. The functionality described herein with reference to the state diagram 500 is implemented after the calibration process has been performed to determine both the first position pmaximum and the second position pminimum. The state diagram 500 includes both a wind-out state 502 and a wind-in state 504. The wind-out state 502 is implemented by the virtual wheel simulator 420 by determining the force to be exerted on the effector 312 using Equations 1-3 as described in greater detail above with reference to FIG. 4. In response to the position of the effector 312, pend,effector (e.g., as measured by the position sensor 408) being greater than the first position pmaximum, the state machine 422 is configured to transition the virtual wheel simulator 420 out of the wind-out state 502 and into the wind-in state. This transition corresponds to the point in a physical flywheel device when the flywheel has completely let out or wound out the rope and has begun to take-in or wind in the rope. The state machine 422 is also configured to transition the virtual wheel simulator 420 out of the wind-out state 502 and into the wind-in state if the user stops moving the effector 312 at a position pi before reaching the second position pmaximum after the simulation of the virtual flywheel has virtually rotated past the second position pmaximum where the rope or cable is completely unwound, and reached the position pi past the second position pmaximum (while taking up the rope or cable). Once the virtual wheel reaches the position where the user stopped pulling on the effector 312 (e.g., at the position pi), the state machine 422 commands the virtual wheel simulator 420 to transition into the wind-in state. The virtual wheel simulator 420 is configured to track both the velocity of the virtual wheel, vdisk, and the position of the virtual wheel in order to determine when to transition out of the wind-out state 502 and into the wind-in state 504.

[0088]When the virtual wheel simulator 420 is in the wind-in state, the virtual wheel simulator 420 uses Equations 5-7 to determine the force to be exerted on the effector 312 and operate the motor 302 to provide a torque resulting in the force being applied to the effector 312. The motor 302 is therefore operated to simulate the wind-in force due to inertia of a physical flywheel during the eccentric motion of the exercise. The state machine 422 is configured to identify if one of either two conditions is true, and responsive to one of either of the conditions being true, command the virtual wheel simulator 420 to transition out of the wind-in state and into the wind-out state. The first condition is if the position of the effector 312, pend,effector, is less than or equal to the second position (pminimum). If the position of the effector 312 is less than or equal to the second position pminimum, then the state machine 422 commands the virtual wheel simulator 420 to transition out of the wind-in state 504 and into the wind-out state 502. Likewise, if the velocity of the virtual wheel vdisk is less than or equal to zero, the state machine 422 commands the virtual wheel simulator 420 to transition out of the wind-in state 504 and into the wind-out state 502. When the velocity of the virtual wheel is less than or equal to zero, this indicates that the virtual wheel has been simulated to completely wind up the rope or cable, and the wind-in state 504 has been completed.

[0089]Referring to FIGS. 9 and 10, graphs 700 and 800 illustrate position of the virtual wheel over time (graph 700) and position of the effector (graph 800) over time while a user performs an exercise. It should be understood that graphs 700 and 800 are provided for illustrative purposes and are not intended to be limiting. For example, the shape and size of the curves 702 and 802 shown in graphs 700 and 800 is provided for illustrative purposes only, and the actual shape and size of the curves 702 and 802 may be different. The X-axis of graphs 700 and 800 represents time, while the Y-axis of graph 700 indicates position of the virtual flywheel, and the Y-axis of the graph 800 indicates extension of the effector 312. During a time period corresponding to a first repetition (Rep1), the user extends the effector 312 during the concentric phase of the exercise, which causes the virtual flywheel to change in position. As the user extends the effector 312, the virtual wheel position is transitioned form a first minimum position, pminimum where the virtual cable is fully wound around a shaft of the virtual flywheel such that the virtual cable is unwound from the shaft of the virtual flywheel responsive to change in the extension of the effector 312. Once the user reaches a fully extended position of the first repetition, the virtual flywheel reaches the maximum position pmaximum where the virtual cable or rope is completely unwound from the shaft. The un-wrapping of the virtual cable occurs over time period 706a when the user extends the effector 312 from the fully retracted position to the fully extended position.

[0090]Once the virtual flywheel has reached the maximum position pmaximum where the effector 312 is fully extended, the eccentric phase of the first repetition begins. During the eccentric phase of the repetition, the effector 312 transitions from the fully extended position to the fully retracted position and the virtual flywheel continues rotating in the same direction as the concentric phase to take up the virtual cable across time period 708a. The user exerts a force on the effector 312 to resist the inertia of the virtual flywheel. Once the effector 312 has returned to the fully retracted position, the eccentric phase of the first repetition has been completed, and the virtual flywheel has been simulated to be at a second minimum position pminimum. The second minimum position pminimum may be the same as the first minimum position, but in a real-world flywheel device, the cable is wound onto the shaft in an opposite direction. The virtual wheel simulator 420 and the state machine 422 are configured to simulate rotation of the virtual flywheel across the time period 706a and the time period 708b as if the virtual flywheel were being accelerated during time period 706a, with the inertia of the virtual flywheel exerting a counter force on the effector 312, and continuing to rotate in the same direction across time period 708a with the inertia of the virtual flywheel exerting a counter force which the user must resist in order to decelerate the virtual flywheel until the virtual flywheel reaches the minimum position. In the example shown in FIGS. 9 and 10, the second repetition is performed similarly to the first repetition across time periods 706b and 708b, where a real-world flywheel would rotate in an opposite direction as across the first repetition. While graph 700 shows the virtual flywheel changing direction of rotation from the first repetition to the second repetition, the virtual flywheel device, when simulated by the virtual wheel simulator 420, may be simulated to only rotate in a single direction (e.g., by being reset to a zero or minimum position once the first repetition has been completed).

[0091]However, FIGS. 9 and 10 also illustrate the case where the user, during the third repetition, stops the range of motion of the exercise at a partially extended position of the effector 312. As shown in graphs 700 and 800, the user begins the third repetition by extending the effector 312 which causes the virtual wheel position to change as simulated by the virtual wheel simulator 420. However, during the concentric phase of the third repetition, the user stops extending the effector 312 at a partially extended position (e.g., an intermediate position), corresponding to the position pi of the virtual flywheel. When this occurs, the virtual wheel simulator 420 notes the position pi of the virtual flywheel at which the effector 312 stopped extending, and continues to simulate rotation of the virtual flywheel based on the inertia of the virtual flywheel. The virtual wheel simulator 420 continues simulating rotation of the virtual flywheel, past the maximum point at which the simulated cable would be fully unwrapped from the shaft, and, once the virtual flywheel reaches the position pi during take-up of the cable, the state machine 422 transitions the virtual wheel simulator 420 out of the wind-out state and into the wind-in state. The state machine 422 is configured to record the position pi which is an angular distance 704 from the maximum position pmaximum where the virtual cable would be fully unwound from the shaft, and simulate the virtual payout of the virtual flywheel until the virtual flywheel again reaches the position pi (the angular distance 704 past the maximum position pmaximum). This may occur over a time interval 710 during which the user waits for the virtual flywheel to payout and reach the position pi.

[0092]Referring to FIG. 8, a flow diagram of a process 600 for operating an electrified exercise equipment to simulate flywheel training includes steps 602-614, according to some embodiments. The process 600 can be performed by the control system 400 of the exercise equipment 300 in order to operate the motor 302 to provide a simulated flywheel training experience without requiring the user to actually have a physical flywheel system. While the examples herein relate to a simulated flywheel, various other types of simulated mass, simulated objects (e.g., virtual plates, virtual weight stacks, virtual chains, etc.) can be simulated according to adaptations of the present disclosure.

[0093]The process 600 includes providing exercise equipment including an effector, a cable, a shaft, and an electric motor (step 602), according to some embodiments. The exercise equipment may be the equipment 300. The effector is coupled with an end of the cable, and the cable is wound about a spool or take-up component mounted to the shaft. The electric motor is configured to operate to provide a torque to the shaft in a direction that opposes motion of the shaft as driven due to extension of the effector.

[0094]The process 600 includes obtaining a user input indicating a level of resistance (step 604), according to some embodiments. The user input may include a selection of a size of a virtual flywheel, a mass of the virtual flywheel, a radius of the virtual flywheel, etc. In some embodiments, the user input is provided by allowing the user (via the user interface 436) to select from different predetermined sizes of virtual flywheel. In some embodiments, the user interface 436 is operated to provide different fields relating to the shape, size, or weight of the virtual flywheel, and the user may set custom values for the virtual flywheel.

[0095]The process 600 includes implementing a calibration process in which a user performs one or more repetitions of an exercise with the effector and recording first and second positions of the effector corresponding to end points of a range of motion of the exercise (step 606), according to some embodiments. The end points may be positions of the effector 312 or angular positions of the spool 308 corresponding to full retraction and full extension of the effector 312 when the user performs a specific exercise. In some embodiments, step 604 includes prompting the user to perform repetitions of a desired exercise, by operating a display screen, and recording sensor feedback (e.g., from the sensor 408) indicating position of the effector 312, the spool 308, or the motor 302. In some embodiments, the calibration process is performed by determining, based on one or more known characteristics of the user (e.g., height, limb length, weight, etc.), the first and second position of the effector. The first and second positions of the effector 312 corresponding to the end points of the exercise may be calibrated or adjusted during subsequent use of the exercise equipment. In some embodiments, the calibration process includes determining, based on the first and second positions for different exercises, values of the first and second positions for an exercise to be implemented. In some embodiments, step 606 is performed by the calibration manager 418 as described in greater detail above with reference to FIG. 4.

[0096]The process 600 includes, responsive to the user extending the effector, simulating a resistive force exerted on the cable due to inertia of a virtual flywheel using the first and second position, a position of the effector, a speed of the effector, and an acceleration of the effector (step 608), according to some embodiments. The process 600 also includes operating the electric motor to provide torque to the shaft such that the resistive force is provided via the cable to the effector to simulate flywheel training (step 610), according to some embodiments. Steps 606 and 608 may be performed based on real-time sensor feedback during a wind-out or concentric phase of an exercise. In some embodiments, step 608 is performed by the virtual wheel simulator 420 and the state machine 422, and step 610 (e.g., causing the motor to provide the torque) is performed by the control manager 426 and the motor controller 404.

[0097]Step 608 may use the first and second position of the effector or virtual flywheel determined during the calibration phase (e.g., step 606) to check that the virtual flywheel should be simulated in the wind-out phase. In some embodiments, step 606 is performed by the virtual wheel simulator using Equation (1) to determine the force that should be exerted on the effector 312. Step 606 also uses the user input provided in step 604 to determine the force that should be exerted on the effector 312 by the motor 302 responsive to movement of the effector 312. The position of the effector 312 may be determined from the position sensor 408. The speed and acceleration of the effector 312 and consequently the speed and acceleration of the virtual flywheel may be determined based on the sensor data from the position sensor 408 (e.g., using numerical integration) or based on the sensor data from the position sensor 408 and sensor data from the IMU 406 (e.g., using a Kalman filter). Step 608 includes implementing Equations (1)-(3) in real-time or otherwise modeling and simulating movement of the virtual flywheel to determine the force exerted on the effector 312 due to rotational inertia of the virtual flywheel. The force determined in step 608 is used to operate the motor 302 in step 610 to provide real-time counter-torque that is experienced by the user as a resistive force on the effector 312. Step 608 may also include tracking the speed and position of the virtual flywheel.

[0098]The process 600 includes, responsive to the user retracting the effector, simulating a resistive force exerted on the cable due to inertia of the virtual flywheel using the first and second positions, the position of the effector, the speed of the effector, the acceleration of the effector, and the speed of the virtual flywheel (step 612), according to some embodiments. The process 600 also includes operating the electric motor to provide torque to the shaft such that the resistive force is provided via the cable to the effector to simulate flywheel training (step 614), according to some embodiments. Steps 612 and 614 may be performed based on real-time sensor feedback during a wind-in or eccentric phase of the exercise. In particular, steps 608-610 are performed during a concentric phase of a repetition, and steps 612-614 are performed during an eccentric phase of a repetition.

[0099]In some embodiments, step 612 is performed by the state machine 422 and the virtual wheel simulator 420. Step 614 is performed by the control manager 426 and the motor controller 404, according to some embodiments. Step 612 includes using Equations (5)-(7) implemented by the virtual wheel simulator 420. The virtual wheel simulator 420, in particular, may use recorded speed (e.g., angular speed) of the virtual flywheel at the end of performing steps 608-610 to determine, at the beginning of performing steps 612-614, an amount of resistive force to apply to the effector 312 based on the simulated inertia of the virtual flywheel. In particular, in step 612, the virtual wheel simulator 420 is configured to simulate, based on both the speed of the virtual flywheel, characteristics of the virtual flywheel (e.g., the size, moment of inertia, etc.) and control that the user exerts on the effector 312, a force to apply to the effector 312 to resist the direction of force exerted by the user on the effector 312. For example, the user may exert a force on the effector 312 that opposes force due to the rotational inertia of the virtual flywheel, while allowing the effector 312 to be retracted in a controlled manner. In some embodiments, step 612 includes comparing the speed on the effector 312 to the speed of the virtual flywheel, and based on this difference, determining an amount of force that should be exerted on the effector 312 by operation of the motor 302. Once steps 612-614 are completed (e.g., the user has completed the eccentric phase or wind-in phase of the exercise), process 600 may return to steps 608-610 for the next repetition of the exercise.

[0100]The state machine 422 is configured to implement transitioning of the virtual wheel simulator 420 between the wind-out phase or state (steps 608-610) and the wind-in phase or state (steps 612-614). In particular, the state machine 422 checks for conditions before allowing the process 600 to proceed from steps 608-610 to steps 612-614, and before allowing the process 600 to return from steps 612-614 to steps 608-610. In some embodiments, the state machine 422 is configured to implement the conditions described in greater detail above with reference to FIG. 7 to transition the process 600 between the wind-out state (steps 608-610) and the wind-in state (612-614).

[0101]The foregoing description of embodiments has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the disclosure to the precise form disclosed, and modifications and variations are possible in light of the above teachings or may be acquired from this disclosure. The embodiments were chosen and described in order to explain the principals of the disclosure and its practical application to enable one skilled in the art to utilize the various embodiments and with various modifications as are suited to the particular use contemplated. Other substitutions, modifications, changes and omissions may be made in the design, operating conditions and arrangement of the embodiments without departing from the scope of the present disclosure as expressed in the appended claims.

Claims

What is claimed is:

1. Fitness equipment, comprising:

an electric motor;

a tensile member coupled with an output shaft of the electric motor;

an end effector coupled to the electric motor through the tensile member and configured for interaction with a user during performance of a flywheel training exercise by the user, wherein the electric motor is operable to provide a force to the end effector through the tensile member;

a sensor configured to obtain at least one of a position, a velocity, or an acceleration of the end effector; and

a controller programmed to cause the electric motor to operate to exert the force on the end effector during the interaction with the user by generating motor controls by simulating rotation of a virtual flywheel using the at least one of the position, the velocity, or the acceleration of the end effector.

2. The fitness equipment of claim 1, wherein the controller is further programmed to:

during a wind-out phase of the flywheel training exercise:

determine a first force to be exerted on the end effector based on the acceleration of the end effector and a characteristic of a simulated flywheel using a first model of the simulated flywheel;

track a speed of the simulated flywheel; and

cause the electric motor to operate to exert the first force on the end effector, the first force exerted on the end effector in a direction opposing a first direction of motion of the end effector during the wind-out phase of the flywheel training exercise.

3. The fitness equipment of claim 2, wherein the controller is further programmed to:

during a wind-in phase of the flywheel training exercise:

determine a second force to be exerted on the end effector based on a comparison between a speed of the end effector and the speed of the simulated flywheel using a second model of the simulated flywheel; and

cause the electric motor to operate to exert the second force on the end effector, the second force exerted on the end effector in the direction that is the same as a second direction of motion of the end effector during the wind-out phase of the flywheel training exercise and opposing a force exerted by the user on the end effector in the first direction.

4. The fitness equipment of claim 3, wherein the second model of the simulated flywheel is different than the first model of the simulated flywheel, the second model comprising a monotonically increasing function of the comparison between the speed of the end effector and the speed of the simulated flywheel.

5. The fitness equipment of claim 1, wherein the controller is further programmed to:

determine whether to transition a simulator of a virtual flywheel out of a wind-out state corresponding to the wind-out phase of the flywheel training exercise and into a wind-in state corresponding to the wind-in phase of the flywheel training exercise responsive to at least one of (i) a position of the end effector exceeding a maximum allowable position corresponding to an end of the wind-out phase, or (ii) a simulated payout of the virtual flywheel returning to an intermediate position of the end effector after passing the maximum allowable position; and

determine whether to transition the simulator of the virtual flywheel out of the wind-in state and into the wind-out state responsive to at least one of (i) the position of the end effector being less than or equal to a minimum allowable position corresponding to an end of the wind-in phase, or (ii) a speed of the virtual flywheel being less than or equal to zero.

6. The fitness equipment of claim 1, wherein the controller is programmed to implement a calibration phase before the flywheel training exercise by:

operating a display screen of the fitness equipment to prompt the user to perform one or more repetitions of the flywheel training exercise;

record a first position of the end effector at which the end effector is fully retracted;

record a second position of the end effector at which the end effector is fully extended; and

use the first position and the second position of the end effector to transition a simulator of a virtual flywheel between a wind-out state corresponding to the wind-out phase of the flywheel training exercise and a wind-in state corresponding to the wind-in phase of the flywheel training exercise.

7. The fitness equipment of claim 1, wherein the controller is programmed to:

operate a user interface of the fitness equipment to prompt the user to enter a user input indicating a characteristic of a virtual flywheel for the flywheel training exercise; and

based on the characteristic of the virtual flywheel, cause the electric motor to operate to exert the force on the end effector during interaction with by the user to simulate the flywheel training exercise across both the wind-out phase and the wind-in phase of the flywheel training exercise.

8. The fitness equipment of claim 1, further comprising a gearbox and a spool, wherein the output shaft of the electric motor is coupled with the gearbox, and the gearbox is coupled with the spool, the spool configured to take-up and let-out the tensile member responsive to movement of the end effector.

9. A method of simulating a flywheel training exercise, the method comprising:

providing exercise equipment comprising a motor and an end effector operably coupled with the motor;

obtaining a user input indicating a desired characteristic of a virtual flywheel, the desired characteristic determining an amount of resistance to be exerted on the end effector by the motor during the flywheel training exercise;

obtaining calibration data indicating a first position and a second position of the end effector corresponding to a range of motion of the flywheel training exercise;

during a wind-out phase in which the end effector is moved in a first direction, determining a first force to be exerted on the end effector using a simulation of a flywheel based on acceleration of the end effector, and operating the motor to exert the first force on the end effector; and

during a wind-in phase in which the end effector is moved in a second direction, determining a second force to be exerted on the end effector using the simulation of the flywheel based on speed of the end effector, and operating the motor to exert the second force on the end effector.

10. The method of claim 9,

wherein determining the first force during the wind-out phase of the flywheel training exercise comprises determining the first force based on an acceleration of the end effector and the desired characteristic of the virtual flywheel; and

wherein determining the second force during the wind-in phase of the flywheel training exercise comprises determining the second force based on a monotonically increasing function of a difference between a speed of the end effector and a simulated speed of the virtual flywheel.

11. The method of claim 10, wherein the simulated speed of the virtual flywheel is updated based on a previously determined simulated speed of the virtual flywheel and a force exerted by a user on the end effector.

12. The method of claim 9, wherein the calibration data is obtained by at least one of:

prompting a user to perform a repetition of the flywheel training exercise and recording the first position and the second position of the end effector;

predicting the first position and the second position of the end effector based on one or more characteristics of the user; or

predicting the first position and the second position of the end effector based on a first position and a second position of the end effector for a different exercise.

13. The method of claim 9, further comprising:

determining whether to transition the simulation of the virtual flywheel out of a wind-out state corresponding to the wind-out phase of the flywheel training exercise and into a wind-in state corresponding to the wind-in phase of the flywheel training exercise responsive to at least one of (i) a position of the end effector exceeding the first position, or (ii) a simulated payout of the virtual flywheel returning to an intermediate position of the end effector after passing the second position.

14. The method of claim 9, further comprising:

determining whether to transition the simulation of the virtual flywheel out of a wind-in state and into a wind-out state responsive to at least one of (i) the position of the end effector being less than or equal to a minimum allowable position corresponding to an end of the wind-out phase, or (ii) a speed of the virtual flywheel being less than or equal to zero.

15. The method of claim 9, wherein the first force is determined in the wind-out phase during a concentric portion of a repetition of the flywheel training exercise, and the second force is determined in the wind-in phase during an eccentric portion of the repetition of the flywheel training exercise.

16. The method of claim 9, wherein the speed of the end effector and the acceleration of the end effector are determined based on sensor data from a position sensor and inertial measurement data obtained from an inertial measurement unit positioned within the end effector.

17. A control system for simulating flywheel training, the control system comprising:

processing circuitry programmed to:

obtain sensor data indicating movement of an end effector of fitness equipment; and

operate an electric motor of the fitness equipment, based on the movement of the end effector, to exert a force on the end effector, the force on the end effector determined based on a result of a physics-based simulation of a virtual flywheel in order to provide a flywheel training experience for a user without requiring a flywheel physically coupled to the end effector.

18. The control system of claim 17, wherein a size of the virtual flywheel for the physics-based simulation is user adjustable to adjust a behavior of the virtual flywheel and the force exerted on the end effector responsive to movement of the end effector.

19. The control system of claim 17, wherein the processing circuitry is further programmed to:

prior to the operation of the electric motor to simulate the flywheel training experience, operate a display screen of the fitness equipment to prompt the user to perform a plurality of repetitions of the flywheel training exercise with the end effector;

record minimum and maximum positions of the end effector while performing the plurality of repetitions; and

implement the physics-based simulation of the virtual flywheel using the minimum and maximum positions to determine when to transition between a wind-in state and a wind-out state of the virtual flywheel.

20. The control system of claim 17, wherein the sensor data comprises position data obtained from a position sensor operably coupled with an output shaft of the electric motor, wherein the movement of the end effector comprises a speed and an acceleration of the end effector, the speed and the acceleration of the end effector determined by the processing circuitry using numerical differentiation of the position data and a filter.

21. One or more non-transitory computer-readable media storing program instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising:

obtain data indicating movement of an end effector of fitness equipment;

determine a target force for a motor of the fitness equipment by:

during a first phase of an exercise, determining the target force based on an acceleration of the end effector; and

during a second phase of the exercise, determining the target force based on a simulated speed of a virtual mass; and

control the motor based on the target force.

22. The one or more non-transitory computer-readable media of claim 21, wherein the virtual mass is a virtual flywheel.