DYNAMIC STRENGTH LOADING PER MOVEMENT

Dynamic strength loading per movement includes determining progress within a given state of an exercise. It further includes controlling, as a function of the progress within the given state of the exercise, a force generated by a motor of an exercise machine.

Skip to: Description  ·  Claims  · Patent History  ·  Patent History
Description
CROSS REFERENCE TO OTHER APPLICATIONS

This application claims priority to U.S. Provisional Patent Application No. 63/028,281 entitled DYNAMIC STRENGTH LOADING PER MOVEMENT filed May 21, 2020 which is incorporated herein by reference for all purposes.

BACKGROUND OF THE INVENTION

Strength training, also referred to as resistance training or weight lifting, is an important part of any fitness routine. It promotes the building of muscle, the burning of fat, and improvement of a number of metabolic factors including insulin sensitivity and lipid levels. Many users seek a more efficient and safe method of strength training.

BRIEF DESCRIPTION OF THE DRAWINGS

Various embodiments of the invention are disclosed in the following detailed description and the accompanying drawings.

FIG. 1A illustrates an embodiment of an exercise machine.

FIG. 1B illustrates a front view of one embodiment of an exercise machine.

FIG. 2 illustrates an embodiment of a system for dynamic loading.

FIG. 3A illustrates an embodiment of a state diagram for repetition phases of movements that begin at the top of a range of motion.

FIG. 3B illustrates an embodiment of a state diagram for repetition phases of movements that begin at the bottom of a range of motion.

FIG. 4A illustrates an embodiment of an ascending load curve profile.

FIG. 4B illustrates an embodiment of a descending load curve profile.

FIG. 4C illustrates an embodiment of a mid-peak load curve profile.

FIG. 4D illustrates an embodiment of a flat load curve profile.

FIG. 5 illustrates an embodiment of an application of a load for isometric exercise.

FIG. 6 illustrates an embodiment of user accommodation in repetitions.

FIG. 7 illustrates an embodiment of user accommodation in repetitions.

FIG. 8 is a flow diagram illustrating an embodiment of a process for dynamic loading.

DETAILED DESCRIPTION

The invention can be implemented in numerous ways, including as a process; an apparatus; a system; a composition of matter; a computer program product embodied on a computer readable storage medium; and/or a processor, such as a processor configured to execute instructions stored on and/or provided by a memory coupled to the processor. In this specification, these implementations, or any other form that the invention may take, may be referred to as techniques. In general, the order of the steps of disclosed processes may be altered within the scope of the invention. Unless stated otherwise, a component such as a processor or a memory described as being configured to perform a task may be implemented as a general component that is temporarily configured to perform the task at a given time or a specific component that is manufactured to perform the task. As used herein, the term ‘processor’ refers to one or more devices, circuits, and/or processing cores configured to process data, such as computer program instructions.

A detailed description of one or more embodiments of the invention is provided below along with accompanying figures that illustrate the principles of the invention. The invention is described in connection with such embodiments, but the invention is not limited to any embodiment. The scope of the invention is limited only by the claims and the invention encompasses numerous alternatives, modifications and equivalents. Numerous specific details are set forth in the following description in order to provide a thorough understanding of the invention. These details are provided for the purpose of example and the invention may be practiced according to the claims without some or all of these specific details. For the purpose of clarity, technical material that is known in the technical fields related to the invention has not been described in detail so that the invention is not unnecessarily obscured.

For a user, benefits from weight lifting depend greatly on execution of the exercise, including but not limited to: form comprising movement path/pattern, intensity comprising amount of weight/resistance, tempo comprising how fast/slow is the movement, number of sets/repetitions, and timing comprising how long to wait between repetitions and sets. Furthermore, improvements in strength and efficacy are found when the user exercising is pushed to and beyond failure; the point at which they may no longer lift the weight and must go through recovery allowing the muscle to rebuild itself stronger.

A number of additional techniques exist to strengthen a user further. Important ones include the use of concentric, eccentric, and isometric training. Concentric movements are when muscles contract under load, for example, using a bicep muscle to initiate lifting a weight. Isometric movements are when a muscle remains stable or at the same position under load, for example, once the bicep muscle has lifted the weight, isometric movement is holding the weight in place. Eccentric is when a muscle lengthens under load, for example, using a bicep muscle to resist gravity as the weight is being lowered back down.

Collectively, factors including form, intensity, tempo, number of sets/repetitions, timing, concentric movements, isometric movements, and eccentric movements are termed “protocols.” Traditionally, most resistance training involves symmetric concentric and eccentric loads, such that the same amount of weight is used in both directions. For example, a user may lift a weight and then resist gravity under the same weight load when lowering it.

Exercise protocols exist that rely on asymmetric movements, including pure concentric, pure eccentric, and/or blended asymmetric concentric-eccentric movements. The term “concentric loading” is used when the concentric phase has more weight applied to it than the eccentric phase. The term “eccentric loading” is used when the eccentric phase has more weight applied to it than the concentric phase. These protocols, and many variants on them, for example, mixtures of concentric-isometric-eccentric combinations, as well as plyometric explosive movements, are well known to any person having ordinary skill in the art. There are communities of users who value asymmetric protocols for health and efficient training. Users engage in strength training not only to strengthen/build muscles, but also the connective tissue such as tendons around the muscles. Eccentric loading has been shown to build tendon more effectively, particularly in the presence of tendinopathy.

In practice actually achieving asymmetric protocols is challenging. A physical weight such as a dumbbell cannot spontaneously change in weight without violating the laws of physics. Hence, achieving a protocol such as eccentric loading is difficult, where the weight on the eccentric phase is heavier than the concentric phase. A user may try to use makeshift solutions such as elastic bands, stepstools, and/or a second user to address asymmetry, but a user must also maintain proper form and proper timing in order to reap a full benefit from asymmetric protocols which is challenging with makeshift solutions.

One aspect of strength training is that a user's body may be thought of as a function of levers and pulleys, with muscles creating levers across their joints. As a result of their physiology, the body has a naturally varying strength throughout the range of motion of any particular move. As one example, when performing a squat exercise, a user is at their weakest point at the bottom of the squat, which impacts their mobility (since their body may not be receptive to being in that position), and is one reason why users often do not go all the way down when performing a squat. Conversely, as the user is moving up, they become stronger and stronger, and are able to exert greater or increasing amounts of force. At the top of the squat movement, the user is at their strongest. This example of a user's strength curve or profile when performing a squat is similar for other movements as well.

Another aspect to strength training is that humans are different from each other. For example, each muscle as moved through its range of motion has an optimal length at which point it achieves peak tension, that is, it is at its strongest. Plotted on an X-Y axis as a “muscle-tension curve,” the X axis plots position on range of motion, and the Y axis plots tension. There is a point on the muscle-tension curve where tension peaks. This point of optimal length differs from person to person depending on individual DNA, environment, strength, and/or conditioning levels.

Furthermore, a muscle's ability to withstand tension/strength changes as a user fatigues throughout a workout session, such that the shape of the muscle-tension curve changes over time. Having a user move a weight that provides a fixed amount of tension throughout the range of motion is sub-optimal when considering that a muscle's ability to withstand tension varies through its range of motion because the muscle-tension curve is not a flat line. Furthermore, a muscle-tension curve differs for concentric, isometric, and eccentric movements.

Described herein are techniques for dynamic loading. Using the dynamic loading techniques described herein, the load that is provided to a user during strength training may be dynamically varied to match a user's strength at different points in the range of motion of performing an exercise. For example, using the techniques described herein, the load provided by a strength training machine may be dynamically adjusted to match the varying strength of a user throughout execution of a repetition of a movement (e.g., increase the load when the user is stronger, and decrease the load when the user is weaker).

Using the dynamic loading techniques described herein (also referred to herein as a “smart flex” mode), resistance may be added and subtracted throughout each repetition's range of motion to match an athlete's strength at each position in the range of motion for a given movement. At different points during the range of motion, the body, as a result of being a series of levers, gains and loses mechanical advantage. Thus, the human movement has at least four naturally occurring strength curves. By varying the resistance as a function of the range of motion and phase (e.g., concentric and eccentric) according to the appropriate strength curve for the movement being performed, the disclosed dynamic loading techniques described herein may match the body's strength and maximize the effectiveness of every repetition, challenging the muscles at each point and increasing the total volume lifted. The result is better and faster results for users.

Thus, as will be shown in the embodiments and examples described herein, the dynamic loading techniques described herein provide various benefits. For example, using the dynamic loading techniques described herein, the effectiveness of a workout is improved. For example, a user's muscles are challenged throughout their range of motion. In contrast, if dynamic loading such as that described herein were not used (e.g., when using free weights), the user would be limited by their weakest point. For example, in the case of a squat, when using traditional free weights, the weight would have to be selected to be low enough that the user is able to move from the bottom of their squat and finish their repetition. However, that means for the second half of the repetition, the weight would be too low for the user, and their muscles will not be challenged. This is wasteful, as the user is not being forced to lift as much weight as they are able to (that is, the remainder of the repetition is too easy for the user, and they are not being challenged). Using the dynamic loading techniques described herein, the load provided by the exercise machine may be adjusted to match the user's change in strength throughout performance of the squat so that they are challenged at every point of the move.

The dynamic loading techniques described herein also provide a form of safety. In the example of traditional free weights, if a user wished to challenge themselves and chose a higher weight for when they are strongest at the top of the exercise (where the weight would have to remain fixed throughout the exercise), the user would potentially be at risk of being stuck at the bottom of their movement. Using the dynamic loading techniques described herein, the load may be dynamically adjusted such that it is lowest at the bottom of the movement, and can be increased as the user rises. In this way, the user need not compromise and select a load that is too low for some parts of the squat, but too high for other parts of the squat, or vice versa.

In some embodiments, dynamic loading includes sensing progress of an exercise within a given state of the exercise. It further includes controlling the force generated by a motor as a function of the progress within the given state of the exercise.

For illustrative purposes, embodiments of dynamic loading when using a digital strength training exercise machine are described. The techniques for dynamic loading described herein may be variously adapted to accommodate any other type of exercise machine, such as other cable resistance exercise machines, as appropriate.

Example Digital Strength Trainer

FIG. 1A illustrates an embodiment of an exercise machine. In particular, the exercise machine of FIG. 1A is an example of a digital strength training machine. In some embodiments, a digital strength trainer uses electricity to generate tension/resistance. Examples of electronic resistance include using an electromagnetic field to generate tension/resistance, using an electronic motor to generate tension/resistance, and using a three-phase brushless direct-current (BLDC) motor to generate tension/resistance. In various embodiments, the form detection and feedback techniques described herein may be variously adapted to accommodate other types of exercise machines using different types of load elements without limitation, such as exercise machines based on pneumatic cylinders, springs, weights, flexing nylon rods, elastics, pneumatics, hydraulics, and/or friction.

Such a digital strength trainer using electricity to generate tension/resistance is also versatile by way of using dynamic resistance, such that tension/resistance may be changed nearly instantaneously. When tension is coupled to position of a user against their range of motion, the digital strength trainer may apply arbitrary applied tension curves, both in terms of position and in terms of phase of the movement: concentric, eccentric, and/or isometric. Furthermore, the shape of these curves may be changed continuously and/or in response to events; the tension may be controlled continuously as a function of a number of internal and external variables including position and phase, and the resulting applied tension curve may be pre-determined and/or adjusted continuously in real time.

The example exercise machine of FIG. 1A includes the following:

a motor controller circuit (1004), which in some embodiments includes a processor, inverter, pulse-width-modulator, and/or a Variable Frequency Drive (VFD);

a motor (1006), for example, a three-phase brushless DC driven by the controller circuit (1004). While a single motor is shown in this example, other numbers of motors may be used. For example, dual motors may be used;

a spool/hub with a cable (1008) wrapped around the spool and coupled to the spool. On the other end of the cable an actuator (1010) is coupled in order for a user to grip and pull on. Examples of actuators include handles and bars that are attached to the cables. The actuators may be attached to the cables at distal ends of the arms of the exercise machine, which are described in further detail below. The spool is coupled to the motor (1006) either directly or via a shaft/belt/chain/gear mechanism;

a filter (1002), to digitally control the controller circuit (1004) based on receiving information from the cable (1008) and/or actuator (1010);

optionally (not shown in FIG. 1A) a gearbox between the motor and spool. Gearboxes multiply torque and/or friction, divide speed, and/or split power to multiple spools. A number of combinations of motor and gearbox may also be used. A cable-pulley system may be used in place of a gearbox, and/or a dual motor may be used in place of a gearbox;

one or more of the following sensors (not shown in FIG. 1A):

encoders: In various embodiments, encoders are used to measure cable lengths (e.g., left and right cable lengths in this example), cable speeds, weight (tension), etc.

One example of an encoder is a position encoder; a sensor to measure position of the actuator (1010) or motor (1006). Examples of position encoders include a hall effect shaft encoder, grey-code encoder on the motor/spool/cable (1008), an accelerometer in the actuator/handle (1010), optical sensors, position measurement sensors/methods built directly into the motor (1006), and/or optical encoders. In one embodiment, an optical encoder is used with an encoding pattern that uses phase to determine direction associated with the low resolution encoder. As another example, a magnetic encoder is used to determine cable position/length. Other mechanisms that measure back-EMF (back electromagnetic force) from the motor (1006) in order to calculate position may also be used;

a motor power sensor; a sensor to measure voltage and/or current being consumed by the motor (1006);

a user tension sensor; a torque/tension/strain sensor and/or gauge to measure how much tension/force is being applied to the actuator (1010) by the user. In one embodiment, a tension sensor is built into the cable (1008). Alternatively, a strain gauge is built into the motor mount holding the motor (1006). As the user pulls on the actuator (1010), this translates into strain on the motor mount which is measured using a strain gauge in a Wheatstone bridge configuration. In another embodiment, the cable (1008) is guided through a pulley coupled to a load cell. In another embodiment, a belt coupling the motor (1006) and cable spool or gearbox (1008) is guided through a pulley coupled to a load cell. In another embodiment, the resistance generated by the motor (1006) is characterized based on the voltage, current, or frequency input to the motor.

Another example of sensors includes inertial measurement units (IMUs). In some embodiments, IMUs are used to measure the acceleration and rate of rotation of actuators. The IMUs may be embedded within or attached to actuators (e.g., in both handles or as an attachment on a bar).

In some embodiments, an IMU is placed on the cable (e.g., via a clip) to determine inertial measurements with respect to the cable. As another example, IMUs may be included in a device that clips onto an actuator accessory such as a bar handle.

Another example type of sensor used by the exercise machine includes cameras.

In some embodiments, the exercise machine includes an embedded camera.

In some embodiments, the exercise machine is communicatively coupled (either in a wired or wireless manner) with a dedicated accessory camera external to the exercise machine that is paired with the exercise machine. The dedicated accessory camera may be set up in a different location to the exercise machine, such as on an adjacent wall, above the exercise machine on the same wall, on a tripod, etc.

In some embodiments, the exercise machine is paired with an external device that has or is attached to a camera, where such devices include mobile phones, tablets, computers, etc.

Various types of cameras may be used. As one example, RGB cameras are used. As another example, cameras with depth-sensing capability are used.

In some embodiments, infrared cameras are used that measure heat, where in some embodiments such information is used to deduce quantities such as muscle exertion, soreness, etc.

In some embodiments, the sensors used by the exercise machine include accessories such as smart watches, with which the exercise machine may be communicatively coupled (e.g., via a wireless connection such as Bluetooth or WiFi). The readings from such sensors may then be used to monitor form.

Other examples of accessories that may be communicatively coupled with the exercise machine include: smart clothing that measures muscle engagement or movement; and smart mats or smart benches that measure spatial distribution of force when the user is on them.

In some embodiments, the exercise machine includes mechanisms to locate devices (e.g., actuators, IMUs, etc.) in 3-Dimensional space. As one example, Bluetooth Low Energy (BLE) spatial locationing (e.g., Angle of Arrival and Angle of Departure “AoA/AoD”) is used to locate devices in 3-D space.

In one embodiment, a three-phase brushless DC motor (1006) is used with the following:

    • a controller circuit (1004) combined with the filter (1002) that includes:
      • processor that runs software instructions;
      • pulse width modulators (PWMs), each with two channels, modulated at 20 kHz;
      • six transistors in an H-Bridge configuration coupled to the three PWMs;
      • optionally, two or three ADCs (Analog to Digital Converters) monitoring current on the H-Bridge; and/or
      • optionally, two or three ADCs monitoring back-EMF voltage;
    • the three-phase brushless DC motor (1006), which in some embodiments includes a synchronous-type and/or asynchronous-type permanent magnet motor, such that:
      • the motor (1006) may be in an “out-runner configuration” as described below;
      • the motor (1006) may have a maximum torque output of at least 60 Nm and a maximum speed of at least 300 RPMs;
      • optionally, with an encoder or other method to measure motor position;
    • a cable (1008) wrapped around the body of the motor (1006) such that the entire motor (1006) rotates, so the body of the motor is being used as a cable spool in one embodiment. Thus, the motor (1006) is directly coupled to a cable (1008) spool. In one embodiment, the motor (1006) is coupled to a cable spool via a shaft, gearbox, belt, and/or chain, allowing the diameter of the motor (1006) and the diameter of the spool to be independent, as well as introducing a stage to add a set-up or step-down ratio if desired. Alternatively, the motor (1006) is coupled to two spools with an apparatus in between to split or share the power between those two spools. Such an apparatus could include a differential gearbox, or a pulley configuration; In some embodiments, the two motors (dual motor configuration) are each coupled with a respective spool.
    • an actuator (1010) such as a handle, a bar, a strap, or other accessory connected directly, indirectly, or via a connector such as a carabiner to the cable (1008).

In some embodiments, the controller circuit (1002, 1004) is programmed to drive the motor in a direction such that it draws the cable (1008) towards the motor (1006). The user pulls on the actuator (1010) coupled to the cable (1008) against the direction of pull of the motor (1006).

One example purpose of this setup is to provide an experience to a user similar to using a traditional cable-based strength training machine, where the cable is attached to a weight stack being acted on by gravity. Rather than the user resisting the pull of gravity, they are instead resisting the pull of the motor (1006).

Note that with a traditional cable-based strength training machine, a weight stack may be moving in two directions: away from the ground or towards the ground. When a user pulls with sufficient tension, the weight stack rises, and as that user reduces tension, gravity overpowers the user and the weight stack returns to the ground.

By contrast in a digital strength trainer, there is no actual weight stack. The notion of the weight stack is one modeled by the system. The physical embodiment is an actuator (1010) coupled to a cable (1008) coupled to a motor (1006). A “weight moving” is instead translated into a motor rotating. As the circumference of the spool is known and how fast it is rotating is known, the linear motion of the cable may be calculated to provide an equivalency to the linear motion of a weight stack. Each rotation of the spool equals a linear motion of one circumference or 2πr for radius r. Likewise, torque of the motor (1006) may be converted into linear force by multiplying it by radius r.

If the virtual/perceived “weight stack” is moving away from the ground, motor (1006) rotates in one direction. If the “weight stack” is moving towards the ground, motor (1006) rotates in the opposite direction. Note that the motor (1006) is pulling towards the cable (1008) onto the spool. If the cable (1008) is unspooling, it is because a user has overpowered the motor (1006). Thus, note a distinction between the direction the motor (1006) is pulling, and the direction the motor (1006) is actually turning.

If the controller circuit (1002, 1004) is set to drive the motor (1006) with, for example, a constant torque in the direction that spools the cable, corresponding to the same direction as a weight stack being pulled towards the ground, then this translates to a specific force/tension on the cable (1008) and actuator (1010). Referring to this force as “Target Tension,” in one embodiment, this force is calculated as a function of torque multiplied by the radius of the spool that the cable (1008) is wrapped around, accounting for any additional stages such as gear boxes or belts that may affect the relationship between cable tension and torque. If a user pulls on the actuator (1010) with more force than the Target Tension, then that user overcomes the motor (1006) and the cable (1008) unspools moving towards that user, being the virtual equivalent of the weight stack rising. However, if that user applies less tension than the Target Tension, then the motor (1006) overcomes the user and the cable (1008) spools onto and moves towards the motor (1006), being the virtual equivalent of the weight stack returning.

BLDC Motor.

While many motors exist that run in thousands of revolutions per second, an application such as fitness equipment designed for strength training has different requirements and is by comparison a low speed, high torque type application suitable for certain kinds of BLDC motors configured for lower speed and higher torque.

In one embodiment, a specification of such a motor (1006) is that a cable (1008) wrapped around a spool of a given diameter, directly coupled to a motor (1006), behaves like a 200 lbs weight stack, with the user pulling the cable at a maximum linear speed of 62 inches per second. The aforementioned weight and linear speed specifications are but examples for illustrative purposes, and the system may be configured to behave to different specifications. A number of motor parameters may be calculated based on the diameter of the spool.

TABLE 1 User Requirements Target Weight 200 lbs Target Speed 62 inches/sec = 1.5748 meters/sec Requirements by Spool Size Diameter (inches) 3 5 6 7 8 9 RPM 394.7159 236.82954 197.35795 169.1639572 148.0184625 131.5719667 Torque (Nm) 67.79 112.9833333 135.58 158.1766667 180.7733333 203.37 Circumference (inches) 9.4245 15.7075 18.849 21.9905 25.132 28.2735

Thus, a motor with 67.79 Nm of force and a top speed of 395 RPM, coupled to a spool with a 3 inch diameter meets these requirements.

Hub motors are three-phase permanent magnet BLDC direct drive motors in an “out-runner” configuration: throughout this specification, the “out-runner” configuration refers to the permanent magnets being placed outside the stator rather than inside, as opposed to many motors which have a permanent magnet rotor placed on the inside of the stator as they are designed more for speed than for torque. Out-runners have the magnets on the outside, allowing for a larger magnet and pole count and are designed for torque over speed. Another way to describe an out-runner configuration is when the shaft is fixed and the body of the motor rotates.

Hub motors also tend to be “pancake style.” As described herein, pancake motors are higher in diameter and lower in depth than most motors. Pancake style motors are advantageous for a wall mount, subfloor mount, and/or floor mount application where maintaining a low depth is desirable, such as a piece of fitness equipment to be mounted in a consumer's home or in an exercise facility/area. As described herein, a pancake motor is a motor that has a diameter higher than twice its depth. As one example, a pancake motor is between 15 and 60 centimeters in diameter, for example, 22 centimeters in diameter, with a depth between 6 and 15 centimeters, for example, a depth of 6.7 centimeters.

Motors may also be “direct drive,” meaning that the motor does not incorporate or require a gear box stage. Many motors are inherently high speed low torque but incorporate an internal gearbox to gear down the motor to a lower speed with higher torque and may be called gear motors. Direct drive motors may be explicitly called as such to indicate that they are not gear motors.

If a motor does not exactly meet the requirements illustrated in the table above, the ratio between speed and torque may be adjusted by using gears or belts to adjust. A motor coupled to a 9″ sprocket, coupled via a belt to a spool coupled to a 4.5″ sprocket doubles the speed and halves the torque of the motor. Alternately, a 2:1 gear ratio may be used to accomplish the same thing. Likewise, the diameter of the spool may be adjusted to accomplish the same.

Alternately, a motor with 100× the speed and 100th the torque may also be used with a 100:1 gearbox. As such a gearbox also multiplies the friction and/or motor inertia by 100×, torque control schemes become challenging to design for fitness equipment/strength training applications. Friction may then dominate what a user experiences. In other applications friction may be present, but is low enough that it is compensated for, but when it becomes dominant, it is difficult to control for. For these reasons, direct control of motor torque is more appropriate for fitness equipment/strength training systems. This would typically lead to the selection of an induction type motor for which direct control of torque is simple. Although BLDC motors are more directly able to control speed and/or motor position rather than torque, torque control of BLDC motors can be made possible when used in combination with an appropriate encoder.

FIG. 1B illustrates a front view of one embodiment of an exercise machine. In some embodiments, exercise machine 1000 of FIG. 1B is an example or alternate view of the exercise machine of FIG. 1A. In this example, exercise machine (1000) includes a pancake motor (100), a torque controller coupled to the pancake motor, and a high resolution encoder coupled to the pancake motor (102). As used herein, a “high resolution” encoder refers to an encoder with 30 degrees or greater of electrical angle. In this example, two cables (503) and (501) are coupled respectively to actuators (800) and (801) on one end of the cables. The two cables (503) and (501) are coupled directly or indirectly on the opposite end to the motor (100). While an induction motor may be used for motor (100), a BLDC motor may also be used for its cost, size, weight, and performance. In some embodiments, a high resolution encoder assists the system to determine the position of the BLDC motor to control torque. While an example involving a single motor is shown, the exercise machine may include other configurations of motors, such as dual motors, with each cable coupled to a respective motor.

Sliders (401) and (403) may be respectively used to guide the cable (503) and (501) respectively along rails (405) and (407). The exercise machine in FIG. 1B translates motor torque into cable tension. As a user pulls on actuators (800) and/or (801), the machine creates/maintains tension on cable (503) and/or (501). The actuators (800, 801) and/or cables (503, 501) may be actuated in tandem or independently of one another.

In one embodiment, electronics bay (720) is included and has the necessary electronics to drive the system. In one embodiment, fan tray (505) is included and has fans that cool the electronics bay (720) and/or motor (100).

Motor (100) is coupled by belt (104) to an encoder (102), an optional belt tensioner (103), and a spool assembly (200). In one embodiment, motor (100) is an out-runner, such that the shaft is fixed and the motor body rotates around that shaft. In one embodiment, motor (100) generates torque in the counter-clockwise direction facing the machine, as in the example in FIG. 1B. Motor (100) has teeth compatible with the belt integrated into the body of the motor along the outer circumference. Referencing an orientation viewing the front of the system, the left side of the belt (104) is under tension, while the right side of the belt is slack. The belt tensioner (103) takes up any slack in the belt. An optical rotary encoder (102) coupled to the tensioned side of the belt (104) captures all motor movement, with significant accuracy because of the belt tension. In one embodiment, the optical rotary encoder (102) is a high resolution encoder. In one embodiment, a toothed belt (104) is used to reduce belt slip. The spools rotate counter-clockwise as they are spooling cable/taking cable in, and clockwise as they are unspooling/releasing cable out.

Spool assembly (200) comprises a front spool (203), rear spool (205), and belt sprocket (201). The spool assembly (200) couples the belt (104) to the belt sprocket (201), and couples the two cables (503) and (501) respectively with spools (205) and (203). Each of these components is part of a low profile design. In one embodiment, a dual motor configuration not shown in FIG. 1B is used to drive each cable (503) and (501). In the example shown in FIG. 1B, a single motor (100) is used as a single source of tension, with a plurality of gears configured as a differential are used to allow the two cables/actuators to be operated independently or in tandem. In one embodiment, spools (205) and (203) are directly adjacent to sprocket (201), thereby minimizing the profile of the machine in FIG. 1B.

As shown in FIG. 1B, two arms (700, 702), two cables (503, 501) and two spools (205, 203) are useful for users with two hands, and the principles disclosed without limitation may be extended to three, four, or more arms (700) for quadrupeds and/or group exercise. In one embodiment, the plurality of cables (503, 501) and spools (205, 203) are driven by one sprocket (201), one belt (104), and one motor (100), and so the machine (1000) combines the pairs of devices associated with each user hand into a single device. In other embodiments, each arm is associated with its own motor and spool.

In one embodiment, motor (100) provides constant tension on cables (503) and (501) despite the fact that each of cables (503) and (501) may move at different speeds. For example, some physical exercises may require use of only one cable at a time. For another example, a user may be stronger on one side of their body than another side, causing differential speed of movement between cables (503) and (501). In one embodiment, a device combining dual cables (503) and (501) for a single belt (104) and sprocket (201) retains a low profile, in order to maintain the compact nature of the machine, which can be mounted on a wall.

In one embodiment, pancake style motor(s) (100), sprocket(s) (201), and spools (205, 203) are manufactured and arranged in such a way that they physically fit together within the same space, thereby maximizing functionality while maintaining a low profile.

As shown in FIG. 1B, spools (205) and (203) are respectively coupled to cables (503) and (501) that are wrapped around the spools. The cables (503) and (501) route through the system to actuators (800) and (801), respectively.

The cables (503) and (501) are respectively positioned in part by the use of “arms” (700) and (702). The arms (700) and (702) provide a framework for which pulleys and/or pivot points may be positioned. The base of arm (700) is at arm slider (401) and the base of arm (702) is at arm slider (403).

The cable (503) for a left arm (700) is attached at one end to actuator (800). The cable routes via arm slider (401) where it engages a pulley as it changes direction, then routes along the axis of rotation of track (405). At the top of rail/track (405), fixed to the frame rather than the track, is pulley (303) that orients the cable in the direction of pulley (300), that further orients the cable (503) in the direction of spool (205), wherein the cable (503) is wound around spool (205) and attached to spool (205) at the other end.

Similarly, the cable (501) for a right arm (702) is attached at one end to actuator (801). The cable (501) routes via slider (403) where it engages a pulley as it changes direction, then routes along the axis of rotation of rail/track (407). At the top of the rail/track (407), fixed to the frame rather than the track is pulley (305) that orients the cable in the direction of pulley (301), that further orients the cable in the direction of spool (203), wherein the cable (501) is wound around spool (203) and attached to spool (203) at the other end.

One use of pulleys (300, 301) is that they permit the respective cables (503, 501) to engage respective spools (205, 203) “straight on” rather than at an angle, wherein “straight on” references being within the plane perpendicular to the axis of rotation of the given spool. If the given cable were engaged at an angle, that cable may bunch up on one side of the given spool rather than being distributed evenly along the given spool.

In the example shown in FIG. 1B, pulley (301) is lower than pulley (300). This demonstrates the flexibility of routing cables. In one embodiment, mounting pulley (301) leaves clearance for certain design aesthetic elements that make the machine appear to be thinner.

In one embodiment, the exercise machine/appliance passes a load/resistance against the user via one or more lines/cables, to a grip(s) (examples of an actuator) that a user displaces to exercise. A grip may be positioned relative to the user using a load arm and the load path to the user may be steered using pulleys at the load arm ends, as described above. The load arm may be connected to a frame of the exercise machine using a carriage that moves within a track that may be affixed to the main part of the frame. In one embodiment, the frame is firmly attached to a rigid structure such as a wall. In some embodiments, the frame is not mounted directly to the wall. Instead, a wall bracket is first mounted to the wall, and the frame is attached to the wall bracket. In other embodiments, the exercise machine is mounted to the floor. The exercise machine may be mounted to both the floor and the wall for increased stability. In other embodiments, the exercise machine is a freestanding device.

In some embodiments, the exercise machine includes a media controller and/or processor, which monitors/measures user performance (for example, using the one or more sensors described above), and determines loads to be applied to the user's efforts in the resistance unit (e.g., motor described above). Without limitation, the media controller and processor may be separate control units or combined in a single package. In some embodiments, the controller is further coupled to a display/acoustic channel that allows instructional information to be presented to a user and with which the user interacts in a visual manner, which includes communication based on the eye such as video and/or text or icons, and/or an auditory manner, which includes communication based on the ear such as verbal speech, text-to-speech synthesis, and/or music. Collocated with an information channel is a data channel that passes control program information to the processor which generates, for example, exercise loading schedules. In some embodiments, the display is embedded or incorporated into the exercise machine, but need not be (e.g., the display or screen may be separate from the exercise machine, and may be part of a separate device such as a smartphone, tablet, laptop, etc. that may be communicatively coupled (e.g., either in a wired or wireless manner) to the exercise machine). In one embodiment, the display is a large format, surround screen representing a virtual reality/alternate reality environment to the user; a virtual reality and/or alternate reality presentation may also be made using a headset.

In one embodiment, the appliance media controller provides audio information that is related to the visual information from a program store/repository that may be coupled to external devices or transducers to provide the user with an auditory experience that matches the visual experience. Control instructions that set the operational parameters of the resistance unit for controlling the load or resistance for the user may be embedded with the user information so that the media package includes information usable by the controller to run the machine. In this way a user may choose an exercise regime and may be provided with cues, visual and auditory as appropriate, that allow, for example, the actions of a personal trainer to be emulated. The controller may further emulate the actions of a trainer using an expert system and thus exhibit artificial intelligence. The user may better form a relationship with the emulated coach or trainer, and this relationship may be encouraged by using emotional/mood cues whose effect may be quantified based on performance metrics gleaned from exercise records that track user performance in a feedback loop using, for example, the sensor(s) described above.

FIG. 2 illustrates an embodiment of a system for dynamic loading. In this example, exercise machine 202 is an alternate view of the exercise machine embodiments shown in FIGS. 1A and 1B. As shown in this example, exercise machine 202 also communicates (over a network 204 such as the Internet) with backend 206.

In this example, exercise machine 202 includes exercise processing engine 208, motor controller board 210 (an example of motor controller 1004), accessories engine 212, and actuators 214. In some embodiments, these elements are compute/sensor nodes that form a computation architecture/stack in which sensor measurements are taken, and computations on such sensor measurements are made, at various levels.

In this example, at the bottom level/layer of the stack are actuators/accessories 214, examples of which include handles, bar controllers, smart mats, etc. In some embodiments, the sensors at the level of actuators 214 include IMUs, buttons, force sensors, etc.

At the next level of the computation architecture is accessories engine 212. Accessories engine 212 is configured to aggregate sensor data from the actuators. As one example, accessories engine 212 is implemented using the BLE (Bluetooth Low Energy) Central plugin, which communicates with accessories (e.g., via BLE, USB, RF, etc.). In some embodiments, the accessories engine is configured to determine the positions of accessories/actuators in physical space.

At the next level of the computation stack is motor controller board (MCB) 210. MCB 210 is another example of a computation node/layer in the computation architecture. In this example, the motor controller board collects data such as cable position and speed, motor position and speed, cable tension, scalable stack information (e.g., health of the motor, board, processor/memory of the board, and communication), etc. As one example, the motor controller board (MCB) is configured to receive encoder messages and determine right and left cable lengths. In some embodiments, the MCB provides such sensor readings to sensor data aggregation engine 216. The information may be sent via a communication bus such as a USB (Universal Serial Bus). The information may be sent periodically (e.g., at a frequency of 50 Hz).

In the next layer of the computation architecture is exercise processing engine 208. In some embodiments, exercise processing engine 208 is a portion of an application running on a computing device included or otherwise associated with the exercise machine. As one example, the application is an Android application running on a computing device such as an Android tablet or computing device embedded in the exercise machine.

In this example, exercise processing engine 208 includes dynamic loading engine 220, which is configured to dynamically determine a load and control the exercise machine by processing and analyzing sensor data (e.g., from accessories and the MCB), as well as user data stored in user data store 218 (e.g., user profile, measurements, goals, suggested weights, etc.), workout data (e.g., current move, load profile for the current move, etc.), camera and microphone information, etc.

As will be described in further detail below, the load to apply is dynamically determined as a function of the progress within a given state or phase of an exercise that a user is performing. As will also be described in further detail below, the progress within a state of the exercise is determined based on an analysis of a stream of sensor measurements.

The next layer of the computation architecture includes backend 206. In this example, the backend compute node includes user data store 218, which includes information aggregated from multiple users of multiple exercise machines, and includes, for example, population statistics for all or subsets of users. The user data store also includes data specific to individual users. This includes suggested weights (load/resistance) for the user for various moves. As will be described in further detail below, in some embodiments, the suggested weights are used to dynamically determine a load to provide to a user. In one embodiment, backend 206 is implemented on Amazon EC2 instances.

As shown in this example, data and data streams, such as sensors and user information/preferences, are distributed throughout the system/computation architecture.

In some embodiments, dynamic loading is performed based on data collected from multiple sensors. Data may be fused, correlated, or analyzed at any compute node in a process referred to herein as “sensor fusion.” The sensor data may also be passed through or pushed downwards to be operated on by various compute nodes in the computation stack.

As one example, suppose that the actuators 214 being used are two handles. The measurements taken from sensors (e.g., IMUs) in the two handles are passed to accessories engine 212 of the exercise machine, which aggregates, for example, sensor readings from all actuators. The actuator sensor data is then passed to exercise processing engine 208.

Sensor information collected by MCB 210 is also passed to sensor data aggregation engine 216. As shown in this example, sensor data aggregation engine 216 is configured to collect and aggregate the various and disparate sensor information (e.g., IMU sensor data, cable/motor/tension sensor data, etc.). Exercise processing engine 208 is then configured to detect the first repetition of a set and repetition phases using the combined sensor data.

In some embodiments, data, such as workout data (e.g., from MCB 210) and accessory data (e.g., smart bench data), is provided to backend 206.

In various embodiments, dynamic loading is calculated at any of the above compute nodes in the computation architecture. In some embodiments, the algorithms and logic to perform the aforementioned dynamic loading are distributed across the entire stack with interfaces between each to obtain optimal performance and accuracy, along with low latency. For example, tasks that require latency that is lower than is possible based on communication between layers are done at lower levels. When latency can be higher or when data is taken in aggregate (e.g., across an entire workout), algorithms are run at higher levels where more computational power and contextual data is available.

Further details regarding dynamic loading are described below.

Dynamic Loading

Dynamic loading engine 220 is configured to determine an amount of load or resistance to provide to a user performing strength training movements. As described above, a load to apply is determined as a function of a user's progress within a given state of an exercise. Example details and embodiments of determining progress within a given state of an exercise, as well as functions used to determine a load based on the user's progress within a given state of an exercise, are described below.

Repetition Phase Detection

In some embodiments, the given state of an exercise is determined as the phase of a repetition of a movement that the user is currently in. In some embodiments, repetition phase detection engine 222 is configured to detect what phase or state of a repetition of a move that the user is in. In some embodiments, the repetition phase detection is implemented as part of the application described above. In other embodiments, the repetition phase detection is implemented in firmware. As another example, the repetition detection is performed across the application and firmware, where the application sends events to the firmware to indicate when repetitions occur or when phases change.

In some embodiments, repetition detection includes identifying maxima and minima in the cable length measurements, and identifying a pattern of extrema (maxes and mins) that are within some thresholds. As described above, the cable length measurements are determined from sensor readings taken from sensors such as optical and magnetic encoders.

The repetition phase detection techniques described herein may be used to go beyond determining when a repetition ends and starts, and may be used to determine information about what is occurring throughout the repetition. This includes determining, in real-time, as the user is performing the repetition, what phase of the repetition the user is in. As will be described in further detail below, using the repetition phase techniques described herein, a repetition is categorized into four parts:

(1) a concentric phase, which corresponds to when a cable is being retracted.

(2) an isometric hold, which is when the cable is extended, but is not moving anymore (for example, at the top or the bottom of the repetition), where the isometric hold is between the concentric and eccentric phase of the repetition.

(3) an eccentric phase, which corresponds to when a cable is retracting.

(4) a resting hold, similar to an isometric hold, but is between repetitions, such as in a bicep curl, where the user is at the top or bottom of the repetition, resting or waiting, before beginning the next repetition.

Using the techniques described herein, the boundaries of the phases are accurately detected, and each of the four phases of a repetition is individually identified. As will be described in further detail below, timings of the phases/states of a repetition, the position of the cable when a user begins and ends each one of those states/phases, etc. are determined. Further, aggregate metrics about each phase of a repetition are determined, such as average speed, maximum speed, maximum power, average power, duration of a phase, the time at which the maximum speed occurred, the time at which the maximum power occurred, etc.

For illustrative purposes, the examples provided herein involve motions where there are 4 states. More complicated examples are also possible using, for example, the state machine formulation described herein, such as compound moves where at the end of the concentric state, another new concentric state begins, such as in an “X Pulldown to Tricep Extension”, which is two moves (X Pulldown and Tricep Extension) blended together such that the end of the concentric state of X Pulldown is eventually followed by, possibly with intermediate Isometric Hold states, the start of the concentric state of Tricep Extension. That is, different types of state machines with different numbers of states as transitions may be used depending on what exercise is being performed.

Further, the phase detection techniques described herein are usable to detect the phase of repetitions for two classes of movements: one class of movement where the repetition starts at the bottom (e.g., where the repetition starts at the bottom, or minimum cable extension boundary, of the range of motion for the exercise), and one class of movement where the repetition starts at the top (e.g., where the repetition starts at the top, or maximum cable extension boundary, of the range of motion for the exercise). Examples of movements that start at the “top” include squats, lunges, and bench presses. For example, in a bench press, the user should start with the arms extended (and the cables are extended to the maximum end of the range of motion). Examples of movements that start from the “bottom” include deadlifts, bicep curls, and tricep extensions.

In some embodiments, detecting/identifying the phases of a repetition is implemented by encoding the phases in a state machine. As the user performs a repetition, depending on the stream of measurements that are collected from various sensors in the exercise machine, the user transitions from one state of the state machine to another, corresponding to transitioning from one phase of a repetition to another. For example, the concentric phase has a corresponding concentric state in the state machine. For some exercises, if the user is in the concentric state and then leaves the concentric state, the next state that they are allowed to enter is the isometric hold.

The state machines and/or transitions may depend on the type/classes of movement that are being performed. For example, the state machines and/or transitions may depend on whether the movement starts on a minimum (bottom) or a maximum (top).

For example, consider the bicep curl, where the user starts with the cable position at the minimum end of the range of motion (where the cable is pulled out the least during the exercise). For a movement starting on a minimum, if the user leaves the concentric phase (e.g., by detecting a cable length maximum that fits within a set of conditions, as will be described in further detail below), then the repetition transitions from having been in the concentric phase/state to the isometric hold/state at the top of the repetition (analogous to a virtual weight stack being at its highest point away from the ground during the exercise). The user/repetition remains in that state until another set of conditions are met (e.g., that the cable length has decreased a certain amount or by a certain percentage range of motion, analogous to a cable retracting and a virtual weight stack returning back towards the ground), after which the user/repetition transitions out of the isometric phase/state and enters the eccentric phase. The user/repetition remains in the eccentric phase/state until a cable length position minimum is detected that meets a set of conditions/criteria, as will be described in further detail below. The repetition then enters a next resting state, waiting for the next repetition to begin. In some embodiments, the transition out of the waiting state occurs when the cable length extends a certain amount, at which point the concentric phase/state is returned to and entered.

Example State Machines

FIGS. 3A and 3B illustrate embodiments of state diagrams corresponding to repetition phases.

Example State Machine for Top-Starting Movements

FIG. 3A illustrates an embodiment of a state diagram for repetition phases of movements that begin at the top. Examples of movements that begin from the top include squats, lunges, and bench presses. In some embodiments, beginning at the “top” refers to the starting position of the repetition corresponding to a “top” or maximum end of the range of motion (defined, for example, using cable length/position) for the movement. This corresponds, for example, to the repetition starting with a virtual weight stack further away from the ground.

In some embodiments, the initial state is the “rest” state, and occurs, for example, when the cable is both not grounded (not resting on the wrist) and the weight is turned on. The transitions from the rest state are different for the two classes of moves that start at the top and bottom of the range of motion, as described above, and as will also be described below in conjunction with the example of FIG. 3B.

Concentric State (302): In this example, in the concentric state, a valid maximum is monitored for. When a valid maximum is detected, then Rest state (304) is entered.

In some embodiments, the valid maximum is computed relative to the range of motion. For example, a rule is defined that specifies that a threshold percentage of range of motion (e.g., 65%) is required to have been covered before exiting the concentric phase into rest state.

Examples of aggregate metrics computed during the concentric state include maximum instantaneous power/speed, average speed, beginning/ending times of the concentric phase (e.g., timestamps for when the concentric state was entered/exited), force applied on the cables, work performed over the entire phase (integration of force times distance), a timestamp of when maximum power occurred, the cable length position at which maximum power occurred, a timestamp of when maximum speed occurred, the cable position at the time that maximum speed occurred, etc.

Rest State (304): In this example, in the rest state, a position decrease by at least a threshold amount is monitored for. When the position decreases by at least a threshold amount, then the eccentric state (306) is entered. In some embodiments, the rest state is a state during which the next rep is waited for. In some embodiments, the threshold is a function of range of motion (e.g., position change as a percentage or proportion of range of motion)

Eccentric State (306): In this example, in the eccentric state, a valid minimum is monitored for. When a valid minimum is detected, then the isometric hold state (408) is entered.

For example, the eccentric state 306 is exited when a suitable filtered minimum is detected. A suitable filtered minimum may be determined based on a threshold minimum cable position. The suitability may also be determined based on a timing constraint, such as a threshold amount of time having passed. The suitability may also be determined on range of motion (e.g., that a threshold percentage or proportion of range of motion has been covered since the last maximum).

Examples of metrics collected for the eccentric state include a max speed (e.g., absolute value, as the direction is negative since the cable length is shortening as the cable is retracting back into the machine during the eccentric phase), beginning and end times of the eccentric state (e.g., timestamps for when the state was entered, and when the state was exited), beginning and ending cable length positions, etc.

Isometric Hold State (308): In this example, in the isometric hold state, a position increase by at least a threshold amount is monitored for. When the cable position increases by at least the threshold amount, then the concentric state (302) is entered.

In some embodiments, the amount of time spent in the isometric hold state is computed. The amount of time spent in the isometric hold state may be computed in a variety of ways. As one example, the time spent in the isometric hold state is computed based on the timestamps recorded for entering and exiting the isometric hold state. As another example, the time spent in the isometric hold state is determined based on timestamps recorded for exiting of the previous state and for entering the next state.

Example State Machine for Bottom-Starting Movements

FIG. 3B illustrates an embodiment of a state diagram for repetition phases of movements that begin at the bottom (of the range of motion). Examples of movements that begin from the bottom include deadlifts, bicep curls, and tricep extensions. In comparison to the example of FIG. 3A, for a move that starts at the bottom, the rest and isometric hold states are reversed, and are switched between coming after concentric or after eccentric. In some embodiments, beginning at the “bottom” refers to the starting position of the repetition corresponding to a “bottom” or minimum of the range of motion for the movement. In some embodiments, this corresponds to the repetition starting with a virtual weight stack closer to the ground.

In some embodiments, the starting state is the rest state, similarly to as described above in conjunction with the example of FIG. 3A.

Concentric State (322): In this example, in the concentric state, a valid maximum is monitored for. When a valid maximum is detected, then Isometric Hold state (324) is entered. Examples of valid maxima and aggregate metrics include those described above in conjunction with concentric state 302 of FIG. 3A.

Isometric Hold State (324): In this example, in the isometric hold state, a position decrease by at least a threshold amount is monitored for. When the cable position decreases by at least the threshold amount, then the eccentric state (326) is entered. Examples of metrics computed during the isometric hold state are described above in conjunction with isometric hold state 308 of FIG. 3A.

Eccentric State (326): In this example, in the eccentric state, a valid minimum is monitored for. When a valid minimum is detected, then rest state (328) is entered. Examples of valid minima and aggregate metrics computed for the eccentric state are described above in conjunction with eccentric state 306 of FIG. 3A.

Rest State (328): In this example, in the rest state, a position increase by at least a threshold amount is monitored for. When the position increases by at least the threshold amount, then the concentric state (322) is entered. In some embodiments, the rest state is a state during which the next rep is waited for. In some embodiments, the threshold is a function of range of motion (e.g., position change as a percentage or proportion of range of motion).

In some embodiments, the repetition counter is incremented after the concentric phase is transitioned out of. In the case of the bicep curl, the first half repetition (which is the first concentric phase for the bicep curl) is monitored for, and when the first concentric phase is detected, and the conditions for a correct concentric phase of a repetition are met, then the repetition counter is incremented. In this example, when the repetition counter is incremented, only half of a repetition has been completed so far. That is, after having completed half a repetition (the concentric phase portion of the repetition), the counter is incremented, and the repetition enters the isometric hold phase/state.

In the case of a movement that starts from the top, such as the bench press, completion of the first two phases is monitored for, before incrementing the repetition counter (such that the counter is incremented after the concentric phase).

In some embodiments, the use of completion of the concentric phase as a trigger to increment the repetition counter increases the accuracy of repetition detection. This is in part because it is more difficult for users to have anomalous patterns of behavior when in the concentric phase. That is, the motions of the concentric phase are not typically performed unless the user is actively trying to perform their repetition.

In some embodiments, two separate state machines (for the two different positions, top and bottom, at which movements may start) are maintained, and one is instantiated at a time (depending on what movement the user is currently performing). In other embodiments, a single state machine is maintained, and the state machine logic (e.g., for transitions, triggers, starting states, etc.) is modified at runtime by passing in an indicator (e.g., a flag) that indicates the type of movement being performed (e.g., movement starting at top or movement starting at bottom).

In some embodiments, a phase detection state diagram includes a set of special states for monitoring for the first repetition. In the example of the bicep curl, sensor measurements are monitored for conditions to be met for the first concentric phase for the bicep curl (e.g., by looking for extrema to match within the acceptable ranges of a set of repetition detection parameters, which may include, for example, personalized maxima and minima for a user, as well as an allowable amount of percentage variation about the maxima and minima). If those conditions are met, then a state corresponding to waiting for the first repetition to be detected is immediately left, and the isometric hold state is entered into.

In some embodiments, the special version of the “waiting for” state for the first repetition uses the predetermined signature described above to detect the first concentric phase of the first repetition. After the concentric phase of the first repetition has been detected (and the counter incremented), then the waiting for/rest state does not need to use the predetermined signature to determine the occurrence of the concentric phase. For example, the actual measurements collected during the performance of the first repetition are used for the remainder of the set. For example, the repetition phase detection algorithm/logic switches over to determining what the user's range of motion was for that first phase of the first repetition, which is then used to update thresholds and range of motion for detecting future phases of repetitions in the set.

Detecting Phase Boundaries

As described above, phase boundaries (e.g., when to exit/enter into certain phase states) are determined based on detected extrema. Extrema, such as maxima and minima, may be determined using extrema detection techniques such as those described above.

Removing Artificial Extrema

In some embodiments, debouncing is performed to remove bogus extrema. Such bogus extrema may occur naturally, as users may have a pause in the midst of performing certain kinds of movements. However, this pause or hitch does not necessarily indicate that the phase has switched. For example, suppose that there is a minimum then a maximum because a user did half of a repetition, then took a pause, and then continued to finish the repetition, resulting in two maxima. This should not be counted as two repetitions. Debouncing is performed to remove intermediate bogus maxima.

Other artificial extrema are filtered out or removed based on timing constraints. For example, another example of an artificial extremum that can occur is because the user did not complete the full range of motion or because not enough time has passed for the user to have physically completed a repetition (e.g., it may not be physically possible for a user to have gone from a maximum to a minimum in the recorded amount of time, and if such a case is detected, then the repetition is not counted, as it may be due to bad data or some other error). In some embodiments, in order for a phase to be determined as having been completed, a threshold amount of time is required to have passed within the phase.

Updating Range of Motion

The range of motion may be defined or updated a number of ways. In some embodiments, the range of motion is updated after each repetition or phase of a repetition, based, for example, on the extrema that are detected in the previous reps in a set. For example, after multiple repetitions have been performed, the range of motion for a current repetition is computed as the median of all of the previous repetitions (in the current set). In this example, each phase may have a new range of motion, where the range of motion is used to determine, as described above, when to exit/enter states. Further details regarding updating range of motion are described below.

Progress within a Given Phase

As described above, in addition to the phase of the repetition the user is in, the resistance to be applied is also based on the user's progress within the phase of the repetition. In some embodiments, phase progress engine 224 is configured to determine a user's progress within a given phase of an exercise move.

In some embodiments, progress within a phase is determined as where the user is in their range of motion. As one example, where the user is in their range of motion is determined by computing a percentage range of motion. In some embodiments, a user's range of motion is computed as the difference between maxima and minima in the cable lengths when the user is performing a move (e.g., as computed by repetition phase detection, as described above). In some embodiments, the user's current place in their range of motion is determined as the difference between the current cable length (current amount of cable displacement) and the minimum cable length (lower boundary of the range of motion), divided by the overall range of motion.

As one example, if, while the user was performing a move, the observed maximum cable length (the furthest extent or displacement or amount that the cable was pulled out while performing the exercise) is 50 inches, and the observed minimum cable length when performing the move was 30 inches, then the range of motion is 50 inches-30 inches=20 inches. That is, the boundaries of the range of motion are defined by the observed minimum and maximum cable lengths.

As the user performs a movement, the user manipulates the cable within their range of motion (ROM). One example of computing a percentage range of motion is as follows. For example, suppose that based on the current sensor measurement, it is determined that the cable length is currently 45 inches. The user's current percentage range of motion, or progress through their range of motion, is calculated as (current cable length−minimum cable length of ROM)/(range of motion)*100%, or in this example, (45 inches-30 inches)/(50 inches-30 inches)*100%=75%.

In some embodiments, the user's range of motion is estimated with a high level of confidence based on observation of the user performing the movement. In some embodiments, for the first repetition in a set, the range of motion is determined using historical data from previous performances of the same type of move. As the user continues through the set, the range of motion is updated based on sensor measurements collected during the set being performed.

The user's range of motion may vary from repetition to repetition (because there is variation in how far they pull out the cable during the repetitions of the move, or how much they let the cable retract during different repetitions of the move). The observed maxima and minima may also be different for each phase of a repetition. The variation of the user's range of motion may also be due to the user stepping further away or closer to the exercise machine.

In some embodiments, each time a user finishes a phase or state of an exercise, the zero point (minimum or lower bound of the range of motion) is restarted or reset. The max or upper bound of the range of motion may also be updated after each phase. For example, if a user switches from concentric to eccentric phase, at that point it is determined that the user is at 100% of their range of motion, and that the cable is pulled out to its maximum extent.

If the user's range of motion is not updated to account for variation in the user's motion from repetition to repetition, and is fixed, then the user may never again reach 100% or 0% on every repetition (because, for example, they do not reach the same cable length maxes or mins in subsequent repetitions). In some embodiments, as the dynamic load is computed as a mapping between load force and percentage range of motion, this would result in incorrect loads being applied at what should have been the top and bottom of a user's range of motion for a repetition.

Thus, as described above, in some embodiments, to account for the variation in their range of motion from phase to phase, the user's range of motion is recomputed or updated after completion of each phase of a repetition of an exercise. The updated range of motion is then used as the range of motion for the next phase.

As described above, the range of motion is computed for each user in a customized manner, such that the dynamic loading is personalized to the user as well. That is, users with different ranges of motion (e.g., because one person has longer arms than another person) will have different load curves (also referred to herein as resistance curves) generated for them.

While in the above example, progress within a given state is computed as a percentage range of motion, progress within a state may also be measured or otherwise determined in other ways. For example, a state or phase of an exercise may be associated with a range of time or total amount of time that the user should remain in the state (e.g., the amount of time a user is expected to hold a handle in position during the isometric phase of a repetition). In this example, the progression within the state of the move is measured as a percentage of the total amount of time that the user has been within the state.

Resistance Curves

Dynamic loading engine 220 is configured to dynamically vary the load or resistance provided to the user. This includes determining an amount of force applied by the motor of the exercise machine to resist a user's motion. In some embodiments, the dynamic load (also referred to herein as “flex” load or weight or resistance) is determined as a dynamically variable amount of additional load that is applied on top of a fixed or constant base resistance. As will be described in further detail below, the amount of additional load is dependent on both the phase of a repetition that the user is in, as well as their progress within that phase or state.

In some embodiments, the amount of dynamic load to apply is determined according to a load curve or profile. A load or resistance curve specifies a mapping between force (load or resistance, specified, for example, in pounds or any other measure of force) to be applied and progress within a state of an exercise. For example, a load curve specifies the amount of effective weight to be provided as a load for a given percentage range of motion.

Different exercises may be associated with different types or load curves, where a shape of a load curve for a given move matches the shape of the user's strength through execution of the move. The following are four example types of load curves that are used to determine load based on a user's progress within a given state of an exercise. Other types of load curves may be used to determine dynamic loads, as appropriate. In this example, the different types of load curves are stored in movement data store 226. In some embodiments, the movement data store includes a movement library that includes information pertaining to each movement, such as corresponding resistance curves. In some embodiments, the movement data store is located on 206. The movement data store may be located on both exercise machine 202 and backend 206. The movement data store may also be distributed across the exercise machine and the backend. In some embodiments, the movement data store is updated independently of software of the exercise machine, without requiring a software update.

FIGS. 4A-4D illustrate examples of types or shapes of load curves.

Ascending Load Curve Profile

FIG. 4A illustrates an embodiment of an ascending load curve profile. As shown in this example, as the percentage range of motion increases (e.g., from 0% to 100%), the force generated by the motor (and therefore resistance and load provided to the user by the motor or motors of the exercise machine) also increases.

The ascending load curve profile of FIG. 4A matches a user's strength profile when performing an exercise movement such as a squat or a bench press. As shown in this example, the shape of the load curve is divided into multiple sections, with each section corresponding to a particular phase or state of a repetition. The arrows in the figure illustrate the direction of the change in percentage change of motion as a user progresses through a given phase of a movement repetition.

For example, portion 402 of the load curve profile illustrates the mapping between load and percentage range of motion for the concentric phase. Portion 404 of the load curve profile illustrates the mapping between force and percentage range of motion for the eccentric phase. In this example, the mapping between percentage range of motion and load force is a linear relationship. As shown in this example, the portion of the load curve corresponding to the eccentric phase is shifted upwards relative to the concentric phase. This reflects that users are typically stronger when they are lowering the digital/virtual weight stack (that is allowing the virtual weight stack to return towards ground), which corresponds to the eccentric phase of a repetition. As shown in this example, after the concentric phase ends, the dynamic loading engine adds an additional amount of weight as an offset for the beginning of the eccentric phase.

The following is an example of defining the load curve function for a given move for a given user. In some embodiments, the dynamic load functions are generated based on the shape of the load curve profile for the move (ascending linear relationship between percentage range of motion and load force in this example of an ascending profile), a base weight, and a maximum allowable amount of additional flex/dynamic load (that can be added on top of the base weight).

Base Weight: In some embodiments, the base load, weight, force, or resistance is the lowest or baseline amount of load that is provided (no additional flex load is added). In some embodiments, the base weight/force is determined based on a suggested load for the user (e.g., determined/provided by backend 206). The suggested load is a fixed, non-varying load that is provided if the dynamic load mode (also referred to herein as “flex” mode) is not turned on. As the suggested load does not match the user's strength curve, it is set at a point that is higher than the user's weakest point of strength. To accommodate for this, the base force is set to be slightly below the strength curve. If the total suggested weight, as an example, is 50, then the following example equation is solved to find the base weight and flex weight: total_suggested_weight=base_weight+(0.25*0.35*base weight), or base_weight=suggested_weight*0.92, base_weight=50*0.92=46. The flex weight is 0.25*base_weight=11. (Slight modifications are made near the maximum and minimum weights the exercise machine can provide.)

Maximum Allowable Amount of Additional Resistance:

In some embodiments, the total amount of allowable additional load is computed as a portion (e.g., 25%) of the base weight. While 25% of base weight is used in this example to determine the total or maximum allowable additional flex load, other ways of determining the total or maximum allowable additional flex load may be used.

Based on the shape of the load curve profile in the various phases, dynamic load functions are generated for each phase. In this example, the dynamic load function for the concentric phase has a linear relationship, where:


Load=⅔*max_allowable_additional_flex load*percentage_ROM+base_weight

Based on the above concentric phase dynamic load function, as the user progresses through the concentric phase, where the percentage range of motion increases from 0% to 100% as the user advances through the concentric phase (that is, from the start of the concentric phase to the end of the concentric phase), the load increases starting from the base weight to an ending load of base_weight+⅔*maximum_allowable_additional_flex_load.

In this example, for the reasons described above (because the user is stronger in the eccentric phase), the dynamic load function for the eccentric phase is shifted upwards relative to the concentric phase load curve. In this example, the eccentric phase curve is shifted up by the remaining ⅓*maximum_allowable_additional_flex_load. This results in the example dynamic load function for the eccentric phase to be:


Load=⅔*max_allowable_additional_flex_load*percentage_ROM+(⅓*max_allowable_additional_flex_load+base_load).

Based on the above eccentric phase dynamic load function, as the user progresses through the eccentric phase, where the percentage range of motion decreases from 100% to 0% as the user advances through the eccentric phase (that is, from the start of the eccentric phase to the end of the eccentric phase), the load decreases starting from the base_weight+total allowable additional flex weight to an ending load of base_weight+⅓*maximum allowable additional load.

While a ⅔ and ⅓ split of the total allowable weight was used herein to allow for shifting up of the eccentric phase, other offsets may be applied. While in this example, a total resistance provided was computed as a function of a base weight and a dynamically varying additional amount of weight, other functions may be computed (e.g., where the total load is computed directly, and is not broken down into parts such as a base weight and a dynamically varying additional weight).

Descending Load Curve Profile

FIG. 4B illustrates an embodiment of a descending load curve profile. As shown in this example, as the percentage range of motion increases in the concentric and eccentric phases (e.g., from 0% to 100%), the force generated by the motor (and therefore resistance and load provided to the user by the motor) decreases. Examples of exercises for which descending load curve profiles are provided include rows (e.g., bent-over rows, seated rows, etc.), pulldowns (e.g., lat pulldowns), etc.

Similar to as described above in the example of FIG. 4A, to match the user's overall higher level of strength in the eccentric phase as compared to the concentric phase, the load curve in the eccentric phase is offset (and higher) as compared to the concentric phase.

For example, the portion of the load curve in the eccentric phase is shifted higher relative to the concentric phase portion of the load curve by ⅓*total allowable amount of additional flex load/weight. As one example, at the end of an eccentric phase of a row (where the cable length/position is decreased to its lowest extent), the user will reach 100% of the allowed flex weight, as shown at 412. As soon as the user reaches the end of the eccentric phase, the added amount of additional weight will then reduce to ⅔ of the total allowable flex load for the start of the concentric phase. As the user progresses through the concentric phase, the additional amount of load added on top of the base resistance approaches zero (returning to the base resistance).

Mid-Peak Load Curve Profile

FIG. 4C illustrates an embodiment of a mid-peak load curve profile. As shown in this example, when the user is in a given phase (either concentric or eccentric), the load generated by the motor increases as they progress or advance from the start of a phase, peaking at 50% range of motion, and then decreases until the end of the phase. This load curve is provided for exercises where the user's strength increases and decreases in a corresponding or similar manner. Examples of exercises that correspond to mid-peak user strength/load curves are curls (e.g., bicep curls, hammer curls, etc.)

As one example, for a bicep curl, the user starts at the bottom of the range of motion (0%), with the concentric phase. As the user pulls upward, they are at maximum force when their arm is at approximately 90 degrees (˜50% range of motion). The load matches the user's increasing strength up to that point by linearly increasing the load. As the user goes beyond the 90 degree point during the concentric phase, their strength decreases until they reach the top of their range of motion, where they are weakest. Thus, as shown in the example of FIG. 3C, during the concentric phase, the load provided to the user decreases from the maximum load in that phase to zero additional dynamic weight added when the user is at the top of their range of motion (100% ROM).

Once the user has reached the top of their range of motion (and therefore the end of the concentric phase), the exercise machine prepares for the user entering into the eccentric phase. In this example, ⅓*total allowable flex weight is added as an offset, as shown in the portion of the load curve corresponding to the eccentric phase. As the user goes back down through their range of motion (which will progress from 100% ROM at the start of the eccentric phase to 0% ROM at the end of the eccentric phase), the load increases until the 50% range of motion, corresponding to the user's arm being at 90 degrees, and the user being at their strongest during this phase. As the user continues to lower their arm, the load reduces back to being base weight+⅓*total allowable flex weight at the end of the eccentric phase.

In some embodiments, the mid-peak curve is implemented as the combination of ascending and descending profiles, split across the 50% range of motion mark. Such compound resistance curves may also be generated for compound moves (e.g., combining different types of profiles together for different portions or phases of a compound movement, where a single repetition of the compound movement includes multiple moves). The transition for profiles may be determined by detecting a transition between the moves in the compound move.

Flat Load Curve Profile

FIG. 4D illustrates an embodiment of a flat load curve profile. In this example of a flat load curve, there is no change in the load throughout the progression through a phase (where in this example progression is determined based on percentage range of motion). A kneeling cable crunch is one example of a movement that uses a flat resistance curve.

In this example, no additional weight is added on top of the base weight in the concentric phase (portion 432). In the eccentric phase (dotted line, 434), 100% of the allowed additional load is applied.

In some embodiments, a flat curve is used as a default for movements for which other load curves do not apply.

In the above examples, if, as part of the user's motion, the cable length goes beyond the 100% range of motion point, or below the 0% range of motion cable point, the load remains the same as the 100% or 0% point (and the load is capped).

Further, if a set ends and the user puts the weights down or turns off digital weights, which would leave the bounds of the range of motion, the load is capped at 0, and the exercise machine does not apply more or less load as the user leaves the range of motion.

In some of the above examples, the relationship between range of motion and force generated is linear. Other relationships (e.g., quadratic, non-linear, etc.) may also be implemented.

Other types of load curves/profiles may also be implemented and used to dynamically determine what load to provide to a user of an exercise machine. For example, as described above, some movements involve compound moves, such as one that combines a squat and a row, or a squat and then a push. In some embodiments, a compound load curve is generated to accommodate compound moves. As one example, multiple load curves are combined together to generate a composite curve for the compound move.

In one embodiment, the curves described above have an ability to be further modified by applying factors to modify the range of motion axis or the force axis for each movement. A default additional percentage weight may also be set that the user may modify which changes how much the resistance curve is applied to that movement.

As shown in the above examples, there is a shift in load when going between concentric and eccentric phases. In some embodiments, the load/weight is not changed suddenly on a user. Rather, the change in load is smoothly loaded with ramping occurring, where the load does not change above a certain rate over time (that is, for example, the ramping is time-based).

Based on the load curve profile for the move being performed, the phase that the user is in, and the user's progress within that phase, the dynamic load engine determines an amount of force or resistance or load to provide to the user. Based on the calculated dynamic load, a signal is sent to the motor controller which adjusts torque of motor such that the resistance provided by the motor corresponds to that computed by the dynamic load engine, as described above.

As shown in the above examples, strength loading is dynamically adjusted based on progress within a given state of an exercise, such as strange of motion. In some embodiments, instead of, or in addition to adjusting strength loading based on progress within a given state of an exercise, such as range of motion, the strength loading is adjusted based on other measurements such as speed/velocity, acceleration, etc. In some embodiments, these variables, such as speed and acceleration, or compared to expected values. If the actual values for these variables are too high, too low, or not following a threshold correct pattern, then the weight can be adjusted for maximum efficacy and safety.

In the above examples of FIGS. 4A-4D, the load curves map resistance force to percentage range of motion, where percentage range of motion is used to measure or otherwise indicate the progress of the user through various phases or states of a repetition (based on cable position measurements, as described above). There are some moves where the user is not meant to do repetitions that involve pulling on the cable. For example, instead, the user is expected to hold an actuator (e.g., handle) and resist motion as the load pulls on the actuator (attempting to retract it back into the arm). In such exercises, there is little change in cable position. In some embodiments, for such exercises, dynamic loading is provided by varying the load over time (versus percentage range of motion or as a function of cable position). For example, the load is fluctuated over time in a sine wave pattern. In this case, the move may have an expected total amount of time that the user maintains the position of the actuator, and the progress through the exercise is measured as the percentage or proportion of the total amount of time that has elapsed so far.

As described above, the size of the force differential between the concentric and eccentric phases may be varied. The machine may alter this value so that the user's muscles are optimally stressed throughout the two phases. In one implementation, as shown in the example of FIG. 5 at point “A” (502), a pause between phases may be treated as an opportunity for isometric exercise and the machine may increase the loading until the user begins to yield (or by a prescribed fixed amount), and then, as the eccentric phase begins, reduce the loading to the appropriate value for that phase. An example of competitive isometric performance is seen in weightlifting, where a competitor is required to hoist the weight and then hold it in the final position for a brief period.

FIG. 5 illustrates an embodiment of an application of a load for isometric exercise at a point where movement pauses briefly prior to a reversal. Referring to the example ascending resistance curve profile of FIG. 4A as a starting point, a user may displace the machine loading mechanism until reaching the full range of motion whereupon the brief cessation of motion allows the exercise machine to increase the force or load immediately prior to the eccentric phase. In one embodiment, the machine may increase the force even if the user is in motion. If, as part of the exercise routine/movement, the user is required to hold that position so that an isometric exercise period is included, then the machine builds the load to a point that is greater than that which is to be used for the eccentric phase. To avoid shock loading, or jerking the user, this load augmentation may be applied smoothly (e.g., using the time-based ramping described above).

In one embodiment, the increase in loading is continued until the user begins to yield as shown at point “A” (502) in FIG. 5. Once the user yields, then the dynamic loading engine 220 of the exercise machine reduces the load to the scheduled value for the eccentric phase. In another embodiment, the load that is applied for the isometric phase is applied for a prescribed time, which, once elapsed, returns the machine to the scheduled load for the eccentric phase (e.g., the specified mapping between resistance and progress within a given state of an exercise). User cues to signal the end of the isometric phase in the latter implementation may be any of acoustic, visual, haptic, or tactile. This may include the machine detecting the end of an isometric phase by a user's motion. For example, the user yields, and so the trainer (exercise machine) reduces the load automatically.

Example of Dynamic Loading when Performing a Squat

The following is an example of providing dynamic loading when performing a squat exercise. The dynamic loading techniques described herein may be applied for any other exercise as appropriate.

In this example, suppose that a user is performing exercises included in a workout routine (which specifies a series of different exercises to be performed). The workout routine progresses according to a timeline, as described above. In this example, suppose that the next move to be performed according to the timeline is the squat exercise.

In some embodiments, dynamic loading is an option that can be turned on or off. In this example, suppose that the user has indicated that they want to have dynamic loading enabled. For example, the user has indicated that they would like this “flex” mode prescribed. In some embodiments, the user is provided an option (e.g., via a user interface input) to adjust the amount of additional load that can be applied. In some embodiments, the user may use a user interface/widget to select a percentage of base weight to apply to a resistance curve. This provides a simple interface usable by users, and users may build custom workouts that include this mode. For example, the user may create custom workouts and designate which moves for which flex loading should be prescribed, as well as the maximum allowable additional load that can be added. In some embodiments, the selection of the desired amount of load by the user is recorded for the remainder of the workout, where every other set of that move will also have the flex mode applied.

In other embodiments, for workouts such as those created by coaches, the coaches can have the flex mode or the dynamic loading mode prescribed for various moves. Coaches may prescribe the mode locally and/or remotely for sets in guided workouts.

In some embodiments, when a user reaches a set for a move in the workout that has flex mode prescribed, then the mode is automatically turned on. The amount of additional weight that may be added may be set by the coach as part of the programming.

In some embodiments, an appropriate resistance curve is automatically selected for the user based on the movement being performed.

In this example, various metadata associated with the squat exercise is obtained. For example, the exercise processing engine 208 of the exercise machine has a copy of all of the moves (e.g., in a movement library stored in movement data store 226). The list of all moves may be included in an all-movements table, an example of which is provided below in Table 2. The table is an example portion of a movement library that has the list of the various movements that may be performed, as well as corresponding information for each movement, such as the corresponding resistance curve. In some embodiments, the following optimal curves/matching strength curves are defined for each specific movement for look-up in the movement library.

TABLE 2 Movement Name SmartFlex Case Alternating Bench Press Ascending Barbell Bench Press Ascending Bench Press Ascending Single Arm Bench Press Ascending Inline Chest Press Ascending Iso Split Squat Chest Press Ascending Single Leg Standing Chest Press Ascending Standing Incline Press Ascending Tall Kneeling Single Arm Chest Ascending Press ½ Kneeling Chop Ascending Inline Chop Ascending Iso Split Squat Chop Ascending Rotational Chop Ascending Single Leg Chop Ascending Standing Chop Ascending Bird Dog w/ Row Flat Kneeling Cable Crunch Flat Pullover Crunch Flat Resisted Dead Bug Flat Barbell Lying Glute Bridge Flat Barbell Deadlift Ascending Barbell RDL Ascending Barbell Sumo Deadlift Ascending Neutral Grip Deadlift Ascending Pull Through Ascending Single Arm Deadlift Ascending Single Arm Single Leg RDL Ascending Single Leg RDL Ascending Suitcase Deadlift Ascending Barbell Bicep Curl Mid-Peak Bicep Curl Mid-Peak Decline Chest Fly Descending Front Raise Descending Hammer Curl Mid-Peak Incline Chest Fly Descending Lateral Raise Descending Lying Bicep Curl Mid-Peak Middle Chest Fly Descending Overhead Tricep Extension Ascending Reverse Fly Descending Seated Bicep Curl Mid-Peak Single Arm Decline Chest Fly Descending Single Arm Incline Chest Fly Descending Single Arm Tricep Extension Ascending Skull Crushers Ascending Tricep Extension Ascending Tricep Kickback Ascending Y-Pull Descending ½ Kneeling Lift Descending Inline Lift Descending Iso Split Squat Lift Descending Rotational Lift Descending Standing Lift Descending Goblet Curtsey Lunge Ascending Goblet Reverse Lunge Ascending Resisted Lateral Lunge Ascending Resisted Step Up Ascending Reverse Lunge to Single Arm Row Flat ½ Kneeling Alternating Overhead Ascending Press ½ Kneeling Overhead Press Ascending ½ Kneeling Single Arm Overhead Ascending Press Barbell Seated Overhead Press Ascending Seated Alternating Overhead Press Ascending Seated Overhead Press Ascending Seated Single Arm Overhead Press Ascending Standing Barbell Overhead Press Ascending Standing Overhead Press Ascending ½ Kneeling Pallof Press Ascending Iso Split Squat Pallof Press Ascending Seated Pallof Press Ascending Single Leg Pallof Press Ascending Standing Pallof Press Ascending Tall Kneeling Pallof Press Ascending Lateral Bridge w/ Row Descending Pillar Bridge w/ Row Descending Alternating Neutral Lat Pulldown Descending Barbell Chin-up Descending Barbell Seated Lat Pulldown Descending Neutral Lat Pulldown Descending Seated Lat Pulldown Descending Seated Single Arm Lat Pulldown Descending Tall Kneeling Single Arm Lat Descending Pulldown X-Pulldown Descending X-Pulldown w/ Tricep Extension Ascending ½ Kneeling Single Arm Row Descending Barbell Bent Over Row Descending Bent Over Row Descending Rotational Row Descending Seated Row Descending Single Arm Bent Over Row Descending Standing Alternating Push-Pull Flat Standing Face Pull Descending Standing Single Arm Row Descending Upright Row Descending Barbell Front Squat Ascending Bulgarian Split Squat Ascending Goblet Split Squat Ascending Goblet Squat Ascending Single Arm Squat w/ Row Ascending Split Squat Ascending Squat w/ Row Ascending

In this example, the information associated with a movement includes an indication of a load or resistance curve/profile/shape associated with the exercise. Here, the load curve profile, also shown in the example of Table 2 as the “smartflex case,” is indicated by an identifier for the given exercise. In this example, the identifier for a load curve is a string name. Other examples of load curve type identifiers include numbers, such as “1,” “2,” “3,” and “4,” with each value corresponding to a particular type of load curve. The load curve types indicated in the example of Table 2 correspond to the example load curve types of ascending, descending, mid-peak, and flat described in conjunction with FIGS. 4A-4D.

In this example, because the squat has an ascending profile, such as that shown in the example of FIG. 4A, an indicator for the ascending profile is listed in the table. In some embodiments, a lookup of the movement library is performed using an identifier of the movement, and the identifier for the ascending profile is obtained in response to the query.

In this example, the dynamic load curve profile parameter for the squat (e.g., identifier of the profile) is sent to the dynamic loading engine 220. The ascending shape load curve is then used by the dynamic load engine to determine what resistance to provide to the user given their progress within a given state of a repetition of the exercise.

In some embodiments, the dynamic loading mode (also referred to herein as a “flex” mode, or flexible load mode), because it depends on an accurate estimate of range of motion, is not applied until the range of motion is determined with high confidence. Examples of determining range of motion are described above.

In some embodiments, the dynamic loading is turned on at the start of the concentric phase of a repetition. This may be done for safety, as according to the load curve, the additional weight is highest in the start of the eccentric phase, and the user may not be prepared or expecting the additional weight, which may pull them down.

As described above, in some embodiments, the resistance that is provided to the user includes two elements: (1) a base weight, and (2) a dynamically variable additional weight that is added on top of the base weight. The dynamically variable additional weight is also referred to herein as a “flex weight.” In this example, the flex weight varies proportionally to the percentage range of motion (which indicates where the user is in their range of motion).

In some embodiments, as described above, the maximum amount of flex weight that is allowed to be added is determined. As one example, the maximum amount of flex weight to be added is a percentage of the base weight (e.g., 25% of the base weight—other percentages may be used, as appropriate).

As described above, in some embodiments, the base weight (base amount of load or resistance to apply) is determined based on a suggested weight/load.

In some embodiments, the suggested weight for the user is requested from the backend 206. The suggested weight may be determined based on historical information (e.g., in user data store 218). As one example, the suggested weight is a constant amount of load that, if the dynamic loading mode were not on, would be suggested to apply as a load to the user for a set.

In this example of the squat, suppose that the suggested weight is 50 pounds (lbs), and dynamic loading has been turned on. Based on the suggested weight/load of 50 lbs (without flex mode on), the base weight for flex mode is computed as described above.

Based on the computed base weight for the squat, the maximum amount of additional flex weight that is applicable, and the ascending profile, a load/resistance curve function for the user for the squat exercise move is generated that maps the amount of load or resistance to a percentage range of motion while in a given phase (example of progress within a given state/phase of the repetition).

In this example, at the start of a concentric phase, the flex weight is applied (that is, a resistance computed based on the function of the progress of the exercise within a given phase is applied). For example, cable sensor measurements are received periodically (e.g., 100 times a second). In some embodiments, the cable sensor measurements are received by sensor data aggregation engine 216. From the cable sensor measurements, the current percentage range of motion of the user is determined (e.g., by phase progress engine 224 of repetition phase detection engine 222, as described above).

As the percentage range of motion is updated, the amount of resistance provided is updated, according to the generated load curve. An example of an ascending load or resistance curve is described in conjunction with the example of FIG. 4A.

Referring to the example ascending load curve of FIG. 4A, in this example, at the start of the concentric phase, 0 additional flex weight is applied (that is, the base weight is applied, and no additional amount of weight is added on top of the base weight). As the user progresses through the concentric phase, the cable is displaced in a manner such that it is increasingly extended, and their percentage range of motion increases. In this example, the maximum amount of additional flex weight that is added on top of the base weight in the concentric phase (at 100% range of motion) is ⅔ of the total allowable flex weight. That is, in this example, in the concentric phase, as the percentage range of motion increases from 0% to 100% (where in the concentric phase, the user starts from 0% range of motion), the load applied increases linearly from base weight to base weight+⅔*total allowable amount of flex weight.

Continuing with the progression of the squat repetition, suppose that a cable maximum (extrema of the range of motion) is detected. A phase boundary is detected (e.g., as describe above). The user now enters a rest period and the concentric phase has ended.

The next phase is the eccentric phase. As described above, to account for variation in the user's motion, and the change in their range of motion from repetition to repetition, the range of motion is updated. In some embodiments, the updating is performed by updating the maxima and minima used to define the user's range of motion based on observation and sensor measurements of the user's motion, as described above.

In some embodiments, at the end of the concentric phase (or at the end of a repetition), the corresponding cable position is now redefined as 100% of the range of motion. In some embodiments, the range of motion from the previous phase is taken as the new correct range of motion. In other embodiments, the median of the extrema of the range of motion of previous reps is used to define the current new correct range of motion. That is, the previous ranges of motion of previous one or more repetitions are used to determine the range of motion for the upcoming repetition.

For example, even if a user only completed 90% of a predicted range of motion, and then stopped, they have reached a maximum, and the cable length at this maximum is now a new ROM maximum that corresponds to 100% range of motion for the new repetition. That is, the exercise machine has adjusted to where they have stopped, and updated their range of motion for upcoming repetitions. In some embodiments, this updating is applied through every phase.

In this example, at the end of the concentric phase, the last third of the total allowable amount of flex weight is added to the load. That is, similar to as described in conjunction with FIG. 4A, the portion of the resistance curve for the eccentric phase is the same as the portion of the load curve for the concentric phase, but shifted upwards by ⅓ of the total allowable amount of load. This is to account for users being stronger in the eccentric phase relative to the concentric phase. In this way, the user's strength is matched at every point, and the load varies not only according to the range of motion, but also to the phase of the repetition that the user is in.

In this example, the eccentric phase starts at 100% range of motion (starts with the cable displaced or pulled out to its furthest extent within the range of motion), and ends with the user at 0% range of motion (the cable is displaced in such a manner that it is retracted more and more as the user progresses through the eccentric phase). Thus, as shown in this example, as the percentage range of motion decreases from 100% to 0%, the load applied decreases linearly from base weight+total allowable amount of flex weight to base weight+⅓*total allowable amount of flex weight.

When it is detected that the eccentric phase has ended, the additional amount of flex weight that is added drops down to zero (to reset to base weight for the start of the concentric phase of the next squat repetition).

Thus, as shown in this example, a personalized load or resistance curve for the user for a given move is generated that is based on a variety of parameters, such as base weight, maximum or total allowable amount of additional flex weight to add on top of the base weight, the shape of the load curve applicable to the move, and fractional multipliers (e.g., the ⅓ and ⅔ factors used to determine the bounds of the additional resistance applied within a given phase).

In some embodiments, the amount of load provided to the user is displayed (e.g., via a screen associated with the exercise machine). As one example, a weight dial is rendered that shows the base weight. The additional flex weight that is added on top of the base weight is also displayed. In some embodiments, the dial changes as the user lifts to reflect the weight they are actually lifting at the movement. Other visualizations or indications of dynamic loading may be provided as appropriate (e.g., acoustically).

Dynamic Spotting Protocol

In some embodiments, the exercise machine provides a dynamic spotting service or protocol. Example embodiments of a dynamic spotting protocol are provided below.

Consider, for example, a scenario where a user is in the middle of a concentric phase and reaches a point where they cannot complete the range of motion because they are fatigued. This is a common scenario in weight lifting, and may be considered poor form because the user cannot complete the range of motion. However, if the system detects this scenario it “spots” the user, analogous to a human spotter for weight lifting, for example:

    • 1. A user begins by pulling the cable/actuator (1008/1010) through the range of motion;
    • 2. The user's range of motion is between pre-determined motion thresholds, for example 20% and 80%;
    • 3. The velocity of the cable drops to zero, or below some pre-determined velocity threshold close to zero;
    • 4. Even at a low velocity, measured and/or calculated tension applied by the user is found to be above a pre-determined tension threshold, such as 60% of the current m;
    • 5. The tension and low velocity persists for a pre-determined period of time, for example 1.5 seconds;
    • 6. The system responds by slowly reducing m, for example linearly over the course of 2 seconds from 100% of starting/current m to a pre-determined mass threshold, for example 90% of starting m. As soon as velocity rises above some pre-determined velocity threshold such as 5 cm per second, m stops slowly reducing, and a new function adjusts m through the remainder of the range of motion. Two examples of a new function is a post-spot function or a scaled version of the prior function that the user got stuck on.

The above procedure describes an embodiment corresponding to one spotting protocol, and other protocols exist. In one embodiment, during the concentric phase m is reduced such that velocity of the cable/actuator (1008/1010) does not fall below a pre-determined velocity threshold. If a user's velocity drops below that threshold, m is reduced by a corresponding amount in order to aid the user to maintain a minimum velocity. Such a system may also prevent the user from exceeding a maximum velocity by increasing m if the velocity rises above a target threshold. In a further embodiment, this is accomplished using linear formulas or a PID loop.

In one embodiment, the logic described above is implemented by a series of if statements in software. Alternatively, the logic described above is implemented by a rules engine. Alternatively, the logic described above is implemented using equations. Alternatively, the logic described above is implemented using look-up tables.

Such a spotting procedure may enable “forced repetitions” where a user is aided in completing their full range of motion by being spotted when they get stuck rather than being forced to prematurely end their repetition. This may have health/efficiency benefits for the user.

FIGS. 6 and 7 are illustrations of embodiments of user accommodation in repetitions. One example of providing accommodation is spotting the user. For a case where a user is making it past 80% percent range of motion in the concentric phase, but is not completing the full 100%, this may be an indication of bad form and a symptom of fatigue. Adjusting the function after each repetition such that the mass m between 80% and 100% is reduced to accommodate the user is implemented as shown in FIG. 6, and a close-up is shown in FIG. 7 indicating four different repetitions.

In this example, after each repetition the user made it past 80% but not to the full 100%, so the system responded by adjusting the mass function after each of the 4 example repetitions. In one embodiment, the logic described above is implemented by a series of if statements in software. Alternatively, the logic described above is implemented by a rules engine. Alternatively, the logic described above is implemented using equations. Alternatively, the logic described above is implemented using look-up tables.

As shown in FIGS. 6 and 7 the system may in communicating with the user make reference to a repetition of peak-mass 100 lbs, because that is the greatest amount of mass in the function which occurs at 50% range of motion. If, for example, peak-mass were 150 lbs instead of 100 lbs, the function looks similar, but everything is scaled by a factor of 1.5×.

If a user gets stuck between 0% and 20% of range of motion in the concentric phase, it may indicate that the mass m is far too high for this given repetition. In such a case, the system may automatically adjust m as follows:

    • 1. A user begins by pulling the cable/actuator (1008/1010) through a range of motion;
    • 2. The user's range of motion is between pre-determined motion thresholds, for example 0% and 20%;
    • 3. The velocity of the cable drops to zero, or below some pre-determined velocity threshold close to zero;
    • 4. Even at a low velocity, measured and/or calculated tension applied by the user is found to be above a pre-determined tension threshold, such as 60% of the current m;
    • 5. The tension and low velocity persists for a pre-determined period of time, for example 1.5 seconds;
    • 6. The system responds by slowly reducing m, for example linearly over the course of 2 seconds from 100% of starting/current m to a pre-determined mass threshold, for example 60% of starting m. As soon as velocity rises above some pre-determined velocity threshold such as 5 cm per second, m stops slowly reducing, and a new function adjusts m through the remainder of the range of motion. Two example of a new function is a post-stuck function or a scaled version of the prior function that the user got stuck on.

In some embodiments, the dynamic loading described herein takes into account spotting, where the amount of loading that is provided is adjusted based on the presence of spotting.

In some embodiments, when it is determined that spotting or assistance should be provided, then the additional dynamic (flex) weight that is applied is reduced to zero.

As one example, suppose that the user is in the concentric phase of the squat and needs spotting. For example, if the user is spotted while at 50% of their range of motion, the additional dynamic weight is reduced first. If further spotting is required beyond the base weight, then the resistance is adjusted to be below the base weight. As another example, suppose that the user is only spotted a small amount, such as a 10th of a pound (where after being spotted, the resistance is still above base weight), and the user then continues their repetition. In this example, the user is not provided additional flex weight for the remainder of their concentric phase.

At the end of the concentric phase, the load is brought back up from the spotted weight. As one example, the resistance is brought back up to 1.5*the weight the user finished the repetition with. Depending on the amount that the user was spotted and the load they ended the repetition with, this may bring the starting weight back up to the full load. That is, in this case, the load will have been flat during spotting, and then will ramp safely and quickly up to where the load would have been had the user not been spotted.

As another example, suppose the user was spotted beyond the additional dynamic weight (and was spotted to a point where the user ended their repetition below the base weight). At the end of the repetition, the exercise machine adds 50% (other proportions may be applied, as appropriate) of the remaining weight/load—this is the maximum weight that the exercise machine will allow going forward. The maximum allowable weight may be below base weight or above base weight.

If the new allowable maximum load is still below base weight, then the eccentric phase will be flat, similar to flex mode being off, and the load at the start of the next concentric phase will also be flat until the end of the next concentric phase. If the new allowable maximum load is above base weight, but below the maximum allowed flex weight, then the amount of additional weight that is allowed to be added to the base weight is capped at the new, lower maximum. That is, the load can increase to the new lower additional maximum at the same slope as before, but will then be capped, regardless of the user's percentage range of motion.

That is, in the above example, when taking into account spotting, if spotting is determined to be needed, then the flex mode is turned off for the remainder of the current repetition. The load at the end of the phase of the repetition is determined, and it is determined whether this final load is below the base weight, between the base weight and the total allowable maximum flex weight, or above the total allowable maximum flex weight+base weight.

Based on which of the three ranges 1.5*the final load is, different adjustments are made to the dynamic resistance curves. For example:

    • If 1.5× the final load is still below base weight, then the load is base weight.
    • If 1.5× the final load is between base weight and base weight+total maximum allowable additional flex weight, then the flex mode is allowed, but a new maximum is set as 1.5× the final load.
    • If 1.5× the final load is at or above base weight+the total maximum allowable additional flex weight, then dynamic loading is resumed according to the original resistance curve function.

In some embodiments, the exercise machine provides a burnout mode, which is a subset of the spotter. However, in contrast to spotter mode, in burnout mode, the load is not increased or brought back up again after the end of a repetition (for the next repetition). That is, in burnout mode, similar to spotter mode, the load is reduced. However, whereas spotter brings the load back up at the start of the next repetition, burnout mode does not. Rather, the load is left the same, and is only reduced.

In some embodiments, if spotting occurs, the base weight or suggested weight for future sets is lowered (but the shape of the load curve for dynamic loading remains the same).

Example Metrics

Various metrics are computed to capture the performance of the user's exercise. In some embodiments, the metrics take into account the dynamic loading described herein. For example, the metrics are computed in a manner that takes into account that the load that is resisting the user's motion is varying. The following are example metrics that take into account varying applied resistance.

Volume:

In some embodiments, without a dynamic load, the volume (of weight) is computed as the number of repetitions times the weight. However, with dynamic loading, the effective weight of the load is varying through the repetition. In this case, integration is performed to determine the total volume of weight that the user resisted when performing the exercise. For example, the load weight is integrated over the repetition, and the average over distance, instead of time, is used. In some embodiments, an integral need not be used. For example, given a load curve, a simplifying assumption is made that the user performs their full range of motion (going between 0% to 100%) (even if they do not actually go through the entire range of motion, or if they go beyond the upper or lower bounds of the range of motion in terms of cable position/displacement).

One Rep Max:

In some embodiments, an effective equivalent for one rep max is computed as base weight+a portion of max allowable additional flex weight (e.g., 0.35*maximum allowable amount of additional flex weight).

Further simplifying assumptions may be used to compute volume and one rep max in the presence of spotting. For example, the maximum spotted weight observed throughout the repetition is taken. This maximum spotted weight is assumed to have existed for the entire repetition (even though this may not be the case in reality).

Power/Work:

In some embodiments, the user's power is computed as instantaneous speed times force. Even though the force may be varying in flex mode, it is the instantaneous force that is used to compute power. With respect to work, in some embodiments, the work is calculated as the time integral of power.

FIG. 8 is a flow diagram illustrating an embodiment of a process for dynamic loading. In some embodiments, process 800 is executed by dynamic loading engine 220 of FIG. 2. The process begins at 802 when progress within a given state of an exercise is determined. For example, the given state of the exercise is determined by performing repetition phase detection, as described above. In some embodiments, the progress within the determined phase is determined as a percentage range of motion, which may be determined based on a cable displacement in a cable exercise machine such as the digital strength trainer described above. At 804, force generated by a motor is controlled as a function of the progress within the given state of the exercise. For example, as described above, a resistance curve for the type of exercise being performed by the user is received. Examples of resistance curves including ascending, descending, mid-peak, and flat, as described above. The resistance curve corresponding to the type of exercise may be obtained by performing a lookup of a movement library, an example of which is described in conjunction with Table 2. For example, the movement being or to be performed is looked up in the movement library. The corresponding type of resistance curve to be applied is obtained. In some embodiments, the resistance curve is a mapping between the resistance to be applied and the progress within the given phase of the exercise. For example, as described above, the progress within the given phase of the exercise is determined as the percentage range of progress within a given phase of the exercise. In some embodiments, the percentage range of motion is determined based on cable length measurements (e.g., the amount that a cable is displaced during performance of the exercise, which is monitored throughout the repetition). For example, the range of motion is defined as a difference between an observed maximum and minimum extent/displacement of a cable when the movement is being performed. The percentage range of motion is determined as the current proportion of the range of motion that has been covered by the user. For example, as the user, as a part of performing the exercise, pulls or lets back in the cable coupled between an actuator and a motor of the exercise machine, sensors of the exercise machine are used to determine cable displacement or length. The sensor measurements are used to determine the progress of the exercise within the given state of the exercise. Examples of sensors include optical, electromagnetic, and camera sensors. The motor of the exercise machine provides resistive force to the user by transmitting the force to the actuator. For example, the force is transmitted to the actuator via a transmission. In some embodiments, the transmission includes systems of cables, pulleys, levers, differentials, etc., as described above. In some embodiments, a user engages with the actuator (e.g., pushes, pulls on, etc.), where examples of actuators include handles, bars, ropes, pedals, etc. The force may be transmitted to the actuator via the cable. In some embodiments, the cable is directly connected to the motor. The resistance curve indicates, for a given phase of the exercise (e.g., concentric or eccentric), and the progress through the given phase (e.g., current percentage range of motion), what resistance (e.g., load force or weight) to be applied. Based on the resistance specified by the resistance curve, the force generated by the motor of the exercise machine is controlled (e.g., by sending a signal to a motor controller that adjusts the torque of the motor according to the resistance computed as a function of the progress within the given state of the exercise and the resistance curve profile corresponding to the movement).

Although the foregoing embodiments have been described in some detail for purposes of clarity of understanding, the invention is not limited to the details provided. There are many alternative ways of implementing the invention. The disclosed embodiments are illustrative and not restrictive.

Claims

1. An exercise machine, comprising:

a motor configured to generate a force;
a cable coupled between the motor and an actuator;
a sensor configured to sense progress of an exercise within a given state of the exercise; and
a motor controller configured to control the force generated by the motor as a function of the progress of the exercise within the given state.

2. The exercise machine of claim 1, wherein the given state of the exercise is determined based on a previously observed exercise repetition of a given user.

3. The exercise machine of claim 1, wherein the progress within the given state of the exercise is determined based at least in part on a position of the actuator.

4. The exercise machine of claim 3, wherein the position of the actuator is based at least in part on a measurement of a length of the cable.

5. The exercise machine of claim 1, wherein the force generated by the motor is determined according to a resistance curve.

6. The exercise machine of claim 5, wherein the resistance curve specifies, for the given state of the exercise, and the progress within the given state of the exercise, a corresponding amount of force to provide.

7. The exercise machine of claim 5, wherein the resistance curve comprises at least one of an ascending resistance curve, a descending resistance curve, a mid-peak resistance curve, or a flat resistance curve.

8. The exercise machine of claim 5, wherein the resistance curve is received at least in part by querying a movement library.

9. The exercise machine of claim 1, wherein the given state of the exercise comprises one of a concentric phase of a repetition or an eccentric phase of the repetition.

10. The exercise machine of claim 1, wherein the progress within the given state of the exercise is determined at least in part by determining a percentage range of motion.

11. A method, comprising:

determining, based at least in part on a set of sensor measurements, progress within a given state of an exercise; and
controlling, as a function of the progress within the given state of the exercise, a force generated by a motor of an exercise machine, wherein the exercise machine comprises a cable coupled between the motor and an actuator.

12. The method of claim 11, wherein the given state of the exercise is determined based on a previously observed exercise repetition of a given user.

13. The method of claim 11, wherein the progress within the given state of the exercise is determined based at least in part on a position of the actuator.

14. The method of claim 13, wherein the position of the actuator is based at least in part on a measurement of a length of the cable.

15. The method of claim 11, wherein the force generated by the motor is determined according to a resistance curve.

16. The method of claim 15, wherein the resistance curve specifies, for the given state of the exercise, and the progress within the given state of the exercise, a corresponding amount of force to provide.

17. The method of claim 15, wherein the resistance curve comprises at least one of an ascending resistance curve, a descending resistance curve, a mid-peak resistance curve, or a flat resistance curve.

18. The method of claim 15, wherein the resistance curve is received at least in part by querying a movement library.

19. The method of claim 11, wherein the given state of the exercise comprises one of a concentric phase of a repetition or an eccentric phase of the repetition.

20. The method of claim 11, wherein the progress within the given state of the exercise is determined at least in part by determining a percentage range of motion.

Patent History
Publication number: 20210394023
Type: Application
Filed: May 18, 2021
Publication Date: Dec 23, 2021
Inventors: Brandt Belson (San Francisco, CA), Kelly Savage (Los Angeles, CA), Colin Russell Parker (San Francisco, CA)
Application Number: 17/323,277
Classifications
International Classification: A63B 24/00 (20060101); A63B 21/005 (20060101); A63B 21/00 (20060101);