Patent application title:

EXERCISE EQUIPMENT WITH SKI SIMULATOR

Publication number:

US20260158353A1

Publication date:
Application number:

18/974,446

Filed date:

2024-12-09

Smart Summary: An exercise machine uses a motor and cable to create resistance for workouts. It has an attachment that users interact with, which is connected to the motor. A screen shows a virtual skiing environment where a character moves based on how hard the user pushes. The machine tracks the user's movements and adjusts the character's speed according to the slope of the virtual terrain. This setup makes exercising more engaging by combining physical activity with a fun skiing simulation. 🚀 TL;DR

Abstract:

An exercise apparatus includes a motor; a cable coupled to the motor; an exercise attachment coupled to the cable, wherein the motor is operable to exert force on the exercise attachment via the cable; a display screen; and a controller. The controller is programmed to determine, based on feedback from the motor indicating detected movement of the exercise attachment, an amount of propulsion provided by a user. The controller is programmed to simulate, based on a slope of a virtual environment and the amount of propulsion provided by the user, a movement of a character in a skiing setting. The controller is programmed to generate a visualization of the virtual environment including the movement of the character, and cause the display screen to display the visualization.

Inventors:

Assignee:

Applicant:

Interested in similar patents?

Get notified when new applications in this technology area are published.

Classification:

A63B69/18 »  CPC main

Training appliances or apparatus for special sports for skiing

A63B24/0087 »  CPC further

Electric or electronic controls for exercising apparatus of preceding groups; Controlling or monitoring of exercises, sportive games, training or athletic performances Electric or electronic controls for exercising apparatus of groups - , e.g. controlling load

A63B71/0622 »  CPC further

Games or sports accessories not covered in groups -; Indicating or scoring devices for games or players, or for other sports activities; Displays, user interfaces and indicating devices, specially adapted for sport equipment, e.g. display mounted on treadmills Visual, audio or audio-visual systems for entertaining, instructing or motivating the user

A63B2024/009 »  CPC further

Electric or electronic controls for exercising apparatus of preceding groups; Controlling or monitoring of exercises, sportive games, training or athletic performances; Electric or electronic controls for exercising apparatus of groups - , e.g. controlling load the load of the exercise apparatus being controlled in synchronism with visualising systems, e.g. hill slope

A63B2024/0096 »  CPC further

Electric or electronic controls for exercising apparatus of preceding groups; Controlling or monitoring of exercises, sportive games, training or athletic performances; Electric or electronic controls for exercising apparatus of groups - , e.g. controlling load using performance related parameters for controlling electronic or video games or avatars

A63B2071/0625 »  CPC further

Games or sports accessories not covered in groups -; Indicating or scoring devices for games or players, or for other sports activities; Displays, user interfaces and indicating devices, specially adapted for sport equipment, e.g. display mounted on treadmills; Visual, audio or audio-visual systems for entertaining, instructing or motivating the user Emitting sound, noise or music

A63B2071/0644 »  CPC further

Games or sports accessories not covered in groups -; Indicating or scoring devices for games or players, or for other sports activities; Displays, user interfaces and indicating devices, specially adapted for sport equipment, e.g. display mounted on treadmills; Visual, audio or audio-visual systems for entertaining, instructing or motivating the user; Displaying moving images of recorded environment, e.g. virtual environment with display speed of moving landscape controlled by the user's performance

A63B24/00 IPC

Electric or electronic controls for exercising apparatus of preceding groups; Controlling or monitoring of exercises, sportive games, training or athletic performances

A63B71/06 IPC

Games or sports accessories not covered in groups - Indicating or scoring devices for games or players, or for other sports activities

Description

BACKGROUND

The present disclosure relates generally to exercise equipment, for example strength training equipment, rowing machines, treadmills, exercise bikes, or the like. More particularly, the present disclosure relates to exercise equipment that uses cables.

SUMMARY

One implementation of the present disclosure is an exercise apparatus. The exercise apparatus includes a motor; a cable coupled to the motor; an exercise attachment coupled to the cable, wherein the motor is operable to exert force on the exercise attachment via the cable; a display screen; and a controller. The controller is programmed to determine, based on feedback from the motor indicating detected movement of the exercise attachment, an amount of propulsion provided by a user. The controller is programmed to simulate, based on a slope of a virtual environment and the amount of propulsion provided by the user, a movement of a character in a skiing setting. The controller is programmed to generate a visualization of the virtual environment including the movement of the character, and cause the display screen to display the visualization.

In some embodiments, the exercise apparatus includes a force plate disposed in a base of the exercise apparatus. The force plate is configured to be stood upon by the user. The controller is programmed to obtain feedback from the force plate indicating a total load on the force plate and a center of pressure on the force plate. The controller is programmed to determine, based on the center of pressure on the force plate, a direction of travel for the movement of the character. The controller is programmed to generate the visualization of the virtual environment including both the movement of the character and the direction of travel for the movement of the character.

In some embodiments, the controller is programmed to control the motor to exert a force on the cable. The force includes a baseline tension and a damping force determined by the controller based on a damping constant and a speed of the cable.

In some embodiments, the controller is programmed to control a speaker to provide aural feedback to the user. The aural feedback includes at least one of sound effects or music.

In some embodiments, the controller is programmed to control the motor to provide haptic feedback to the user via the cable and the exercise attachment.

In some embodiments, the cable is a first cable, the exercise attachment is a first exercise attachment, and the motor is a first motor. The exercise apparatus can further include a second cable, a second exercise attachment, and a second motor. The controller is configured to determine the amount of propulsion based on feedback from both the first motor and the second motor via the first cable and the second cable.

In some embodiments, the exercise apparatus includes a force plate disposed in a base of the exercise apparatus. The force plate is configured to be stood upon by the user. The controller is programmed to determine, based on feedback from the force plate, an amount of load exerted on the force plate. The controller is also programmed to detect an amount of time that the user jumps from the force plate based on the amount of load decreasing as the force plate is unloaded while the user jumps. The controller is also programmed to determine a jump for the character based on the amount of time that the user jumps from the force plate. The controller is also programmed to cause the display to display the character performing the jump.

In some embodiments, the virtual environment includes an obstacle. The controller is programmed to simulate an interaction between the character and the obstacle in response to the user steering the character into the obstacle, wherein the character is limited from jumping over the obstacle.

In some embodiments, the virtual environment includes an obstacle. The controller is programmed to simulate the character jumping over the obstacle in response to the user steering the character into the obstacle and jumping on a force plate disposed in a base of the exercise apparatus. The force plate is configured to be stood upon by the user and is configured to measure a total load exerted on the force plate.

In some embodiments, the virtual environment includes at least one of a small animal, a pursuing animal, or a predatory animal. The controller is programmed to simulate the small animal moving across a path of the character. The controller is further programmed to steer the character around the small animal or jump over the small animal in response to one or more user movements. The controller is also programmed to simulate the pursuing animal or weather phenomenon chasing the character as the user moves the exercise attachment to provide the amount of propulsion. The controller is also programmed to prompt the user to elevate the exercise attachment and maintain the exercise attachment at an elevated position in response to the predatory animal being proximate the character. The controller is also programmed to simulate the predatory animal leaving the character in response to the user maintaining the exercise attachment at the elevated position for a predetermined amount of time.

In some embodiments, the virtual environment includes any of a wilderness course, a backcountry course, or a terrain park course. The wilderness course can be provided to simulate skiing in an environment including trees, rocks, sticks, and animals. The backcountry course can be provided to simulate at least one of skiing in an environment with an avalanche, performing a herringbone climb to ascend a slope, performing a climb to ascend an ice wall, or skiing down a downhill tree course. The terrain park course can be provided to simulate at least one of skiing in a ski jump course, a giant slalom course, or snowboarding on a snowboarding course.

Another implementation of the present disclosure relates to a method of simulating a skiing exercise on a skiing simulator. The method includes generating a virtual environment. The method also includes determining a steering effect based on a center of gravity of a user on a force plate of the skiing simulator. The method also includes determining a propulsive effect based on a movement of a first cable and a second cable operably coupled with a first motor and a second motor. The method also includes simulating movement of a character within the virtual environment based on the steering effect and the propulsive effect. The method also includes operating a display screen of the skiing simulator to visually indicate the movement of the character within the virtual environment.

In some embodiments, the method includes determining a jumping effect based on a total load exerted by the user on a force plate. The method can also include simulating elevation of the character from a virtual ground surface based on the jumping effect. The method can also include operating the display screen of the skiing simulator to visually indicate the elevation of the character within the virtual environment.

In some embodiments, the method includes operating the first motor and the second motor to exert a tension on the first cable and the second cable.

In some embodiments, the method includes determining an interaction between the character and at least one feature of the virtual environment based on the steering effect and the propulsive effect. The method can also include operating the display screen of the skiing simulator to visually indicate the interaction between the character and the at least one feature of the virtual environment.

In some aspects, the techniques described herein relate to a method, wherein the propulsive effect is determined based on both the movement of the first cable and the second cable, and an orientation of the character relative to a direction of slope of a ground surface of the virtual environment.

Another implementation of the present disclosure relates to a controller. The controller is programmed to determine, based on feedback from a motor indicating detected movement of an exercise attachment operably coupled with the motor via a cable, an amount of propulsion provided by a user. The controller is programmed to simulate, based on a slope of a virtual environment and the amount of propulsion provided by the user, a movement of a character in a skiing setting; generate a visualization of a virtual environment including the movement of the character. The controller is programmed to cause a display screen to display the visualization.

In some embodiments, the controller is further programmed to obtain feedback from a force plate indicating a total load on the force plate and a center of pressure on the force plate as the user stands on the force plate. The controller is also programmed to determine, based on the center of pressure on the force plate, a direction of travel for the movement of the character. The controller is also programmed to generate the visualization of the virtual environment including both the movement of the character and the direction of travel for the movement of the character.

In some embodiments, the controller is further programmed to determine, based on feedback from a force plate, an amount of load exerted on the force plate. The controller is further programmed to detect an amount of time that the user jumps from the force plate based on the amount of load decreasing as the force plate is unloaded while the user jumps. The controller is further programmed to determine a jump for the character based on the amount of time that the user jumps from the force plate. The controller is further programmed to cause the display to display the character performing the jump.

In some embodiments, the virtual environment includes an obstacle. The controller is programmed to simulate the character jumping over the obstacle in response to the user steering the character into the obstacle and jumping on a force plate disposed in a base of the exercise apparatus.

This summary is illustrative only and is not intended to be in any way limiting.

BRIEF DESCRIPTION OF THE FIGURES

The disclosure will become more fully understood from the following detailed description, taken in conjunction with the accompanying figures, wherein like reference numerals refer to like elements, in which:

FIG. 1 is a perspective view of an exercise apparatus (e.g., skiing simulator), according to some embodiments.

FIG. 2 is a block diagram of electronic components of the ski simulator, according to some embodiments.

FIG. 3 is a block diagram of a control system of the ski simulator, according to some embodiments.

FIG. 4 is a diagram illustrating a direction of travel and a direction of a slope for a simulation of the ski simulator, according to some embodiments.

FIG. 5 is a flow diagram of a process for controlling motors and a display screen of the ski simulator, according to some embodiments.

FIG. 6 is a flow diagram of a process for controlling the ski simulator to simulate skiing through a virtual environment based on inputs provided by the user, according to some embodiments.

DETAILED DESCRIPTION

Referring generally to the figures, an exercise apparatus (e.g., skiing simulator) with motorized force production and methods of operation relating thereto are shown, according to various embodiments. As detailed below, the skiing simulator described herein uses one or more electric motors to provide a variable tension to a cable connected to bars which a user can hold to perform a skiing exercise. The motors are controllable to dynamically vary the tension in the cable, for example to provide dynamic workouts not possible with conventional rowing machines. Additionally, the one or more motors can be controlled differently for different types of skiing strokes thereby providing a variety of types of skiing exercises. The teachings herein can also be adapted for other types of simulated exercise activities via an exercise apparatus, for example via other configurations of the skiing simulator shown.

These and other advantages of the systems and methods disclosed herein are described in detail below.

Referring now to FIG. 1, an exercise apparatus 100 is shown, according to some embodiments. The exercise apparatus 100 is referred to in some embodiments as a skiing simulator 100, and can also be used to provided various other strength training and/or cardiovascular training exercises in various embodiments (including simulated games, workouts, etc. other than skiing). The exercise apparatus 100 is shown as including a base platform 102, a first stanchion 104 extending vertically from the base platform 102 proximate a first end of the base platform 102, a second stanchion 106 extending vertically from the base platform 102 proximate the first end of the base platform 102, and a display console 108 coupled to the base platform 102 and positioned between the first stanchion 104 and the second stanchion 106. The exercise apparatus 100 also includes a first motor 112 positioned on the base platform 102 at the first stanchion 104 and a second motor 114 positioned on the base platform 102 at the second stanchion 106. The exercise apparatus 100 includes a first bar 116 (e.g., an exercise attachment, a rod, a shaft, a handle, a grip, etc.), a second bar 126 (e.g., an exercise attachment, a rod, a shaft, a handle, a grip, etc.), a first cable 118, and a second cable 120. The first cable 118 extends from the first motor 112 to the bar 116. The second cable 120 extends from the second motor 114 to the bar 126. The exercise apparatus 100 also includes a first pulley 122 coupled to the first stanchion 104 and arranged to redirect the first cable 118 between the first motor 112 and the first bar 116 and a second pulley 124 coupled to the second stanchion 106 and arranged to redirect the second cable 120 between the second motor 114 and the second bar 126.

As shown in FIG. 1, the base platform 102 is substantially planar is configured to stably rest on a floor or other ground surface to provide a stable foundation for the skiing simulator 100. The base platform 102 can define an exercise surface on which a user can perform one or more exercises. In some embodiments, the base platform 102 is configured to be at least partially foldable into an out-of-use configuration in which the base platform 102 is folded up and away from the floor or ground under the base platform 102 (thereby reducing the space occupied by the skiing simulator 100 when not in use).

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

The first pulley 122 is coupled to the first stanchion 104 and is configured to be selectively repositioned along the first stanchion 104. For example, the first pulley 122 may include a projection that rides along a groove or slot of the first stanchion 104 (or vice-versa) and can be selectively held in place at various heights using a pin configured to engage apertures of the first stanchion 104. The first pulley 122 can include a handle to facilitate repositioning of the pulley 122. The second pulley 124 is coupled to the second stanchion 106 and is configured to be selectively repositioned along the second stanchion 106. For example, the second pulley 124 may include a projection that rides along a groove or slot of the second stanchion 106 (or vice-versa) and can be selective held in place at various heights using a pin configured to engage apertures of the second stanchion 106. The second pulley 124 can include a handle to facilitate repositioning of the pulley 122. Accordingly, the first pulley 122 and the second pulley 124 can be repositioned (e.g., manually by a user) to various heights along the first stanchion 104 and the second stanchion 106, i.e., at various heights above the base platform 102. In some embodiments, actuators (e.g., linear actuators) are included in the first stanchion 104 and the second stanchion 106 to automatically move the first pulley 122 and the second pulley 124.

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

The first motor 112 is configured to controllably generate a force that acts both acts to retract the first cable 118 towards the first motor 112 and to resists the first cable 118 from being pulled out (unspooling, releasing) from the first motor 112. Thus, as detailed below, the first motor 112 can provide a controllable tension in the first cable 118 during both a power phase and a recovery phase of a skiing stroke performed using the bar 116, or during both a power phase and recovery phase of a ski polling action performed using the bar 116. The first motor 112 can also be configured to detect a transition from the power phase to the recovery phase (and from the recovery phase to the power phase), and, in some scenarios, change the tension in the first cable 118 in response to the transition. In such examples, the first motor 112 is thereby configured to provide a first tension in the first cable 118 during a power phase of a skiing stroke and a second tension in the first cable 118 during a recovery phase of the skiing stroke. In some embodiments, the first motor 112 includes a permanent magnet direct current motor.

The second motor 114 is shown as being positioned on the base platform 102 at a bottom end of the second stanchion 106. The second motor 114 is operationally coupled to the second cable 120 such that the second motor 114 can generate tension in the second cable 120. Other than acting on the second cable 120 rather than the first cable 118, the second motor 114 is configured substantially the same as the first motor 112 in the examples shown. The first motor 112 and the second motor 114 can be controlled to exert tension on the first cable 118 and the second cable 120 from 27 Newtons to 60 Newtons as baseline tension. During a pulling or propulsive phase of a skiing stroke, the tension exerted on the first cable 118 and the second cable 120 by the first motor 112 and the second motor 114 can be greater than 60 Newtons due to damping forces which are proportional to the speed of the first cable 118 or the second cable 120.

The first bar 116 is coupled to the first cable 118. The second bar 126 is coupled to the second cable 120. As shown in FIG. 1, the first cable 118 is coupled to the first bar 116 proximate a first end of the bar 116 and the second cable 120 is coupled to the second bar 126 proximate a second end of the bar 116. The first bar 116 and the second bar 126 are rigid, and may include surface texturing or a surface material configured to facilitate grip of the first bar 116 and the second bar 126 by a user. As shown in FIG. 1, the first bar 116 and the second bar 126 are substantially straight rods or shafts with a circular cross section. In other embodiments, the first bar 116 and the second bar 126 are another shape (e.g., curved, winged, flat, etc.). In some embodiments, the first bar 116 and the second bar 126 are shaped as a ski pole or as grips of a ski pole (e.g., including a hand and/or wrist strap, cork grip, etc. as often included with ski poles).

The first bar 116 is coupled to the first cable 118 and the second bar 126 is coupled to the second cable 120 such that the tension in the first cable 118 and the second cable 120 is transferred to the first bar 116 and the second bar 126, respectively, to create a force on the first bar 116 and the second bar 126. In some embodiments, the first cable 118 and the second cable 120 are selectively coupled to the first bar 116 and the second bar 126, for example using carabineers or other releasable connection mechanism. In such embodiments, the first cable 118 or the second cable 120 can be detached from the first bar 116 or the second bar 126, for example to transition to a different skiing mode.

In some embodiments, the first bar 116 and the second bar 126 include one or more inertial measurement units (inertial sensors, accelerometers, gyroscopes, magnetometers, etc.) configured to sense movement and orientation of the first bar 116 or the second bar 126. The one or more inertial measurement units can be configured to sense translation and/or rotation of the first bar 116 or the second bar 126 and generate data indicative of a current pose of the first bar 116 and the second bar 126 (e.g., based on detected movement and a known starting position, for example). The inertial measurement units can be communicable with a controller (e.g., wirelessly) for the first motor 112 and the second motor 114 as shown in FIG. 2 and described in detail with reference thereto.

The display console 108 is configured to display information relating to operation of the skiing simulator 100 to a user. As shown in FIG. 1, the display console 108 includes a screen 140 (e.g., LED screen) positioned to be within the line-of-sight of a user standing on the platform 102. In some embodiments, the screen 140 is a touchscreen configured to accept user input. In other embodiments, one or more additional buttons, keys, toggles, etc. are included on the display console 108 to receive user input. In some embodiments, the display console 108 includes one or more speakers configured to emit sounds relating to operation of the skiing simulator 100. In some embodiments, the display console 108 includes a camera. In some embodiments, the paddling simulator alternatively or additionally includes a virtual reality or augmented reality headset configured to be worn by a user and to display information relating to operation of the skiing simulator 100 to the user. In some embodiments, the display console 108 houses a controller for the skiing simulator 100, for example a controller as shown in FIG. 2 and described with reference thereto below.

As shown in FIG. 1, the skiing simulator 100 includes a force plate 142 (e.g., a pressure sensor, a plate operatively coupled with multiple force sensors, force transducers, etc.). The force plate 142 is disposed on the base platform 102 and is configured to be stood upon by the user. The force plate 142 can be configured to measure an amount of force or pressure exerted by the user in various locations. The force plate 142 can be configured to measure a center of gravity of the user and used to determine whether the user is leaning forwards, leaning backwards, leaning to the left, leaning to the right, etc., or any combination thereof. The force plate 142 can also be configured to detect when the user jumps on the platform 102.

The operation of the skiing simulator 100 can be adjusted based on sensor feedback from the force plate 142. For example, the simulated actions that are displayed on the display screen 140 can be adjusted based on whether the user is leaning forwards, rearwards, to the left or right, etc. In some embodiments, the tension on the first cable 118 and the second cable 120 is adjusted based on the sensor feedback from the force plate 142. The skiing simulator 100 can also include a speaker 144. The speaker 144 can be operated to provide sound effects (e.g., gameplay sounds), and music to the user.

Referring now to FIG. 2, a block diagram of electronic components of the skiing simulator 100 is shown, according to some embodiments. As shown in FIG. 2, the skiing simulator 100 includes a controller 200 communicably coupled to the first motor 112, the second motor 114, the display screen 140, one or more bar position sensors (bar tracking sensors) 146, and the force plate 142. The controller 200, the first motor 112, the second motor 114, the display screen 140, the one or more bar position sensors 146, and the force plate 142 may be conductively connected (e.g., wired connections therebetween) or wirelessly connected (e.g., Bluetooth, WiFi, etc.). As shown in FIG. 2, the skiing simulator 100 can be configured to communicate with a game network 226 via an internet connection (e.g., via WiFi, Ethernet, etc.).

The one or more bar position sensors 146 are configured to generate data indicative of a pose (e.g., position and orientation) of the first bar 116 and the second bar 126. In some embodiments, the one or more bar position sensors 146 include one or more inertial measurement units configured to generate data indicative of acceleration and movement of the first bar 116 and the second bar 126. In such embodiments, the bar position sensors 146 can be positioned inside the first bar 116 and the second bar 126 and wirelessly communicable with the controller 200 (e.g., via WiFi).

In other embodiments, the one or more bar position sensors 146 include optical tracking detectors, for example a camera (the one or more bar position sensors 146 may be the same as, additional to, different than, etc. the camera in various embodiments). In some such embodiments, a camera collects visual images which are processed (e.g., using an image recognition program) to recognize the first bar 116 and the second bar 126 and determine a pose of the first bar 116 and the second bar 126. In other embodiments, fiducial markers, for example reflective markers, are positioned on the first bar 116 and the second bar 126 (e.g., at ends of the first bar 116 and the second bar 126) and an optical tracking detector (e.g., a stereoscopic camera pair) is arranged to collect data indicative of the pose of the first bar 116 and the second bar 126 by optically tracking the position of the markers (e.g., by collecting infrared light emitted by the optical tracking detector and reflected by the reflective markers. Other types of tracking are possible in various embodiments.

The controller 200 is configured to receive data from the first motor 112, the second motor 114, and the force plate 142. The controller 200 can also obtain data from the bar tracking sensors 146. The controller 200 is configured to obtain positions of both the first motor 112 and the second motor 114, a velocity of the first motor 112 and the second motor 114 (e.g., due to motion of the first bar 116 and the second bar 126). The controller 200 is also configured to obtain a measure of force exerted on the first motor 112 and the second motor 114 by the user. The controller 200 is configured to determine, based on the sensor data obtained from the force plate 142, both a total load exerted on the force plate 142 and a center of pressure (e.g., in X and Y coordinates) on the force plate 142.

The controller 200 is configured to control operation of the first motor 112 and the second motor 114 to adjust a tension and a damping or resistance exerted on the first cable 118 and the second cable 120. The controller 200 is also configured to control operation of the display screen 140 to provide visual representations of the simulation of the skiing action performed by the user (e.g., due to movement of the first bar 116 and the second bar 126).

The controller 200 is configured to receive data from any of the one or more bar position sensors 146, the first motor 112, the second motor 114, and/or the force plate 142 and control the first motor 112, the second motor 114, and the display screen 140. The controller 200 may include one or more processors and one or more non-transitory computer-readable media storing program instructions executable to perform the operations attributed thereto herein. The controller 200 can be a single device (e.g., fully contained in a single position on the skiing simulator 100) or may include multiple distributed computing components (e.g., spatially distributed in various positions on the skiing simulator 100).

The controller 200 is configured to determine tensions to generate in the first cable 118 and the second cable 120 (or motor torques corresponding thereto) at various phases of skiing strokes to enable various workouts. The controller 200 is also configured to control the first motor 112 and the second motor 114 to achieve the target tensions. The controller 200 is also configured to generate and adjust a graphical user interface for display via the display screen 140. Various processes executable by the controller 200 in various scenarios and embodiments are described below with reference to FIGS. 3-6.

To control the first motor 112 to provide a target tension in the first cable 118, in some embodiments the controller 200 implements a control loop in which the first motor 112 provides a measurement of a torque generated by the first motor 112 and the controller 200 adjusts a control input for the first motor 112 to drive the measured torque toward a setpoint associated with the target tension. The controller 200 may provide a proportional-integral or proportional-integral-derivative feedback controller, for example. The target tension in the first cable 118 can thus be generated in a highly accurate manner. Such an approach also allows the controller 200 to adapt nearly continuously to changes in the force applied to the bar 116 by a user, for example such that the user does not experience perceptible lag times as the tension in the first cable 118 is updated. The controller 200 can apply a separate, similar control loop for the second motor 114, such that the controller 200 independently controls the first motor 112 and the second motor 114 (and thus independently controls the tensions in the first cable 118 and the second cable 120) in a coordinate manner. The controller 200 may also achieve target forces for the first motor 112 and the second motor 114 by applying voltages, currents, and/or powers to the first motor 112 and the second motor 114 expected to (e.g., based on factory-set design conditions and/or calibration) to achieve such target forces.

The controller 200 can also control the display screen 140, for example by generating one or more visualizations for display via a graphical user interface. In some embodiments, the controller 200 generates a virtual environment, for example including a virtual mountain or ski trail (e.g., a virtual snowy slope or mountain with a trail, trees, jumps, animals, etc.), or more generally, a skiing setting. In such embodiments, the controller 200 can generate a visualization of movement of a virtual skier and/or virtual ski poles (or other user character, avatar, vehicle, etc.) in the virtual environment based on data from the first motor 112, the second motor 114, the force plate 142, and/or the bar tracking sensor(s) 146. The virtual environment may include one or more obstacles, jumps, and varying terrain or slopes, and can enable gamification of a skiing workout (or other workout) for a user of the skiing simulator 100. The first motor 112 and the second motor 114 can also be controlled by the controller 200 as a function of a virtual ski pole's pose in the virtual environment.

Referring again to FIG. 1, the user can perform various skiing operations including a concentric phase and an eccentric phase. During the concentric phase, the user may pull the first bar 116 and the second bar 126 in a downwards direction towards (and in some cases, beyond) the user's body, thereby causing the first cable 118 and the second cable 120 to extend (e.g., increase in length from the first pulley 122 and the second pulley 124; moving the first bar 116 and the second bar 126 in a ski poling movement). The user provides a force during the concentric phase to counter-act tension exerted on the first cable 118 and the second cable 120 by the first motor 112 and the second motor 114. Once the user completes the concentric phase, the user can allow the first cable 118 and the second cable 120 to retract (e.g., allow the tension in the first cable 118 and the second cable 120 to retract the cables towards the first pulley 122 and the second pulley 124) over an eccentric phase. The first motor 112 and the second motor 114 may provide a lower tension in the eccentric phase as compared to the concentric phase, in some embodiments.

As shown in FIG. 3, the controller 200 is configured to obtain, from the force plate 142, the total load on the force plate 142, and a center of pressure of the user on the force plate 142. The controller 200 is also configured to obtain one or more user inputs from the display screen 140. The controller 200 is also configured to obtain a position, velocity, and force of the first motor 112 and the second motor 114. The controller 200 is configured to provide display signals to the display screen 140, and controls to the first motor 112 and the second motor 114 to adjust a tension and a damping provided to the first cable 118 and the second cable 120 via the first motor 112 and the second motor 114.

Referring still to FIG. 3, the controller 200 includes processing circuitry 202, a processor 204, and memory 206. The processing circuitry 202 can be communicably connected with a communications interface of controller 200 such that processing circuitry 202 and the various components thereof can send and receive data via the communications interface. The processor 204 can be implemented as a general purpose processor, an application specific integrated circuit (ASIC), one or more field programmable gate arrays (FPGAs), a group of processing components, or other suitable electronic processing components.

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

The memory 206 includes a propulsion manager 208, a simulator 210 (e.g., a game engine), a map database 212, a display manager 214, a steering manager 216, a jump manager 218, a gamification manager 220, a tutorial manager 222, and a feedback manager 224. The propulsion manager 208 is configured to determine, based on a slope of a virtual environment and the input position, velocity, and force from the first motor 112 and the second motor 114, an amount of propulsion for the user's virtual character. The map database 212 is configured to provide various maps, layouts, levels, etc., including the virtual environment. The virtual environment can include a slope (e.g., positive or negative) at various virtual locations within the virtual environment (e.g., at different locations on a virtual ski hill). The steering manager 216 is configured to use the total load and the center of pressure provided by the force plate 142 to determine a direction of steering for the user. For example, the user may lean to the left or right in order to steer to the left or right in the virtual environment. The jump manager 218 is configured to identify when the user jumps on the force plate 142 based on the total load and/or the center of pressure provided by the force plate 142.

The simulator 210 is configured to obtain the amount of propulsion from the propulsion manager 208, the direction of steering from the steering manager 216, whether or not a jump is performed from the jump manager 218, etc., and determine a corresponding simulation based on the virtual environment. For example, the simulator 210 can determine a velocity, acceleration, and direction of the user's character responsive to the amount of propulsion and the corresponding slope. The simulator 210 can also determine a movement of the user's character based on one or more models (e.g., physics-based models, kinetic models, etc.) in response to the amount and direction of propulsion. The simulator 210 can determine movements within the virtual environment and provide the movements to the display manager 214 for rendering and display on the display screen 140.

The feedback manager 224 is configured to determine aural and/or haptic feedback for the user to provide an interactive environment with the user and the virtual environment. For example, the feedback manager 224 can determine, responsive to the user's character bumping into an object or obstacle, that haptic feedback should be provided. The feedback manager 224 can operate the first motor 112 and the second motor 114 to provide haptic feedback to the user. In some embodiments, the feedback manager 224 is also configured to determine aural feedback and operate a speaker (e.g., of the display screen 140) to provide sound effects and/or music.

The gamification manager 220 is configured to implement solo, asynchronous game play, or synchronous game play. For example, the gamification manager 220 may connect the skiing simulator 100 (e.g., the controller 200) with a network so that the user can compete against other users on various skiing simulators 100, either in real-time or asynchronously. The gamification manager 220 can include a profile, username, and other login or identification information for the user. The gamification manager 220 is configured to provide points (e.g., coins) throughout the virtual environment, and determine a score for the user based on the obtained points (e.g., by collecting coins, completing challenges, amount of time to complete a course, levels of difficulty achieved, etc.).

The tutorial manager 222 is configured to coordinate one or more tutorials for various courses or routes of the map database 212. The tutorial can be sub-divided into individual moves to be implemented by the user. The tutorial manager 222 can cause operation of the display screen 140 to provide graphical representations guiding the user to perform various moves to complete the course. The graphical representations can include words and pictures to prompt the user to perform the moves using the first bar 116 and the second bar 126. The propulsion manager 208 and/or the steering manager 216 can obtain the feedback from the first motor 112 and the second motor 114 to determine if the user has correctly performed the guided movements. The tutorial manager 222 can operate the display screen 140 to provide feedback indicating whether the user has performed the movement correctly or incorrectly.

The feedback manager 224 is configured to control operation of the first motor 112 and the second motor 114. The feedback manager 224 can control the first motor 112 and the second motor 114 such that the user feels the force:

F = T + Damping * v c ⁢ a ⁢ b ⁢ l ⁢ e

where F is the force felt by the user on the first cable 118 or the second cable 120, T is the tension exerted by the first motor 112 or the second motor 114 on the first cable 118 or the second cable 120, Damping is an amount (e.g., a damping constant) of damping exerted by the first motor 112 or the second motor 114, and vcable is the velocity or speed at which the user pulls the first cable 118 or the second cable 120. If the cable (e.g., the first cable 118 or the second cable 120) is in a retraction phase, the velocity of the cable is less than zero and the V cable is set to zero (e.g., the value of the parameter v cable is prevented from being negative). The Damping can be applied by the first motor 112 and the second motor 114 during the concentric phase of the exercise or motion performed by the user. The damping has a scale of 0 to 100 and can be determined and set by the feedback manager 224 (e.g., based on a level of difficulty or a slope of a virtual area in which the user is currently playing). In some embodiments, the tension T in the first cable 118 or the second cable 120 is at least 6 pounds (e.g., a baseline tension).

The propulsion manager 208 is configured to obtain the position, velocity, and force applied at the first motor 112 and the second motor 114 and determine an amount of propulsive force exerted by the user (e.g., for the simulator 210). The propulsion manager 208 is configured to determine a total propulsive force:

F propulsive = F propulsive , L + F propulsive , R

where Fpropulsive,L is the propulsive force exerted by the user at the second cable 120 (e.g., the left cable), and Fpropulsive,R is the propulsive force exerted by the user at the first cable 118 (e.g., the right cable).

The propulsion manager 208 is configured to determine the propulsive force exerted by the user on the first cable 118 and the second cable 120 using:

F propulsive , L = F L * v L * Δ ⁢ t * C propulsive * C cop

where F is the force applied by the user on the second cable 120, vL is the velocity of the second cable 120 induced by the user, Δt is a time step, Cpropulsive is a scaling factor, Ccop is a center of pressure indicating a location (e.g., leaning forward or rearward) in a Y-direction on the force plate 142 at which the pressure is exerted. Scaling factor Cpropulsive can be an empirically determined scaling factor. The velocity vL is determined based on the sensor feedback from the second motor 114. The force applied by the user on the second cable 120 FL can also be determined based on the sensor feedback from the second motor 114. The propulsion manager 208 is also configured to determine the propulsive force Fpropulsive,R similarly to Fpropulsive,L using the force applied by the user on the first cable 118 FR, and the velocity of the first cable 118, VR. It should be understood that the approach for determining the propulsive force described herein based on movement of the first cable 118 or the second cable 120 is illustrative only, and that the propulsive force can be determined based on detected movement of the first cable 118 or the second cable 120 using a variety of approaches. More generally, the controller 200 can determine the propulsive force for the user's character based on the detected movement, position, speed, acceleration, etc., of the first cable 118 or the second cable 120.

In some embodiments, the propulsion manager 208 can use (e.g., in a developer mode), a propulsion multiplier in order to result in more propulsion for a same effort exerted on the first cable 118 or the second cable 120. The propulsion can be determined by multiplying a speed measured by the motor (e.g., the motor 112 or the motor 114) with a tension on the motor (e.g., the motor 112 or the motor 114), and a propulsion multiplier. The propulsion multiplier can have a value from 0 to 100. Increasing the propulsion factor can increase an amount of propulsion for the same amount of effort exerted by the user.

The propulsion manager 208 or the steering manager 216 is configured to determine the variable Ccop based on both a Y-position of the center of pressure provided by the force plate 142, and a total load exerted on the force plate 142. The variable Ccop can be determined as having a value of 1 if (1) the Y-position of the center of pressure, Ccop,y, is greater or equal to a minimum threshold and less than or equal to a maximum threshold, and (2) the total load exerted on the force plate 142 is greater than a load threshold. The minimum threshold for the Y-position of the center of pressure can be 0.2 where the Y-position is in percent distance from the rear edge (e.g., the Y-position is 0 at the rear edge of the force plate 142, and 1 at the opposing or front edge of the force plate 142). The maximum threshold for the Y-position of the center of pressure can be 0.8. The load threshold can be 130 Newtons (e.g., indicating that the user is fully supported by the force plate 142). If the Y-position of the center of pressure is not within the minimum and maximum threshold, or if the total load exerted on the force plate 142 is less than the load threshold, the variable Ccop can have a value of 0 such that the user can not generate propulsive force to propel the user's character.

The variable Ccop advantageously provides a base load of the user for jumping, and allows the jump manager 218 to determine if the user is fully standing upon the force plate 142. The variable Ccop also requires the user to stand in the middle (e.g., front to back of the force plate 142) in order to generate propulsive force to thereby prevent the user from only placing their heels or toes upon the force plate 142 and then lifting their toes or heels to jump. Further, the variable Ccop is used so that if the user jumps or steps off the force plate 142, they can not generate propulsive force for their user's character.

The propulsion manager 208 is configured to determine, from the map database 212, a slope of a hill or area on the map at which the user's character is currently positioned. As shown in FIG. 4, a diagram 300 illustrates a user's direction 304 that is different than a direction of the slope 302. An angle α is defined between the user's direction 304 and the direction of the slope 302 given a user's current orientation at a current position 306. Referring to FIGS. 3 and 4, the propulsion manager 208 is configured to determine a force exerted by the slope, Fslope. The force exerted by the slope can be determined by the propulsion manager 208 by:

F slope = θ * cos ⁡ ( α ) * C slope

where θ is an angle of the slope (e.g., in an upwards direction, measured in radians), a is the angle between the user's direction 304 and the direction of the slope 302, and Cslope is a scaling factor that is determined empirically based on testing and/or based a current level of difficulty on which the user is playing. For example, for a beginner's level, the scaling factor Cslope can be 0 for locations on the map provided by the map database 212 such that there is no force reduction due to going up a slope. The force exerted by the slope Fslope acts only in the direction of the user. In some embodiments, if the velocity of the skier (e.g., the speed or velocity of the user's character in the virtual environment is less than zero, the force exerted by the slope is set to zero if the determination of the Fslope=0*cos (a)*Cslope is less than 0.

The propulsion manager 208 or the simulator 210 is also configured to determine a damping force in order to simulate skiing in a snowy environment. The drag, Fdrag, can be determined as a function of the square of the speed or velocity of the user's character. For example, the drag Fdrag can be determined by:

F d ⁢ r ⁢ a ⁢ g = - b d ⁢ r ⁢ a ⁢ g * ( v s ⁢ k ⁢ i ⁢ e ⁢ r ) 2 * sign ⁢ ( v s ⁢ k ⁢ i ⁢ e ⁢ r )

where bdrag is a coefficient or scaling factor that is determined empirically, vskier is the speed or velocity of the user's character, and sign (vskier) is +1 or −1, corresponding to the user moving forwards or backwards (e.g., if velocity is positive or negative).

The simulator 210 is configured to determine a speed, acceleration, and distance that the user's character (e.g., the skier) travels in a timestep Δt. The simulator 210 can determine an acceleration of the skier, a speed of the skier at a next time step, and a distance that the skier travels over each timestep:

v ˙ skier = F propulsive + F slope + F drag v s ⁢ k ⁢ i ⁢ e ⁢ r ( k + 1 ) = v ˙ skier * Δ ⁢ t + v s ⁢ k ⁢ i ⁢ e ⁢ r ( k ) d s ⁢ k ⁢ i ⁢ e ⁢ r = v s ⁢ k ⁢ i ⁢ e ⁢ r * Δ ⁢ t

where vskier (k) is the speed or velocity of the skier (e.g., the user's character) at a current time, {dot over (v)}skier is an acceleration of the skier at a current timestep (e.g., a rate of change of acceleration), vskier (k+1) is the speed or velocity of the skier (e.g., the user's character) at a future timestep, dskier is a distance traveled over the timestep Δt, and Δt is the time duration of a timestep. The simulator 210 determines the speed, acceleration, and distance traveled across the timestep, and determines a new position for the skier. The simulator 210 therefore simulates movement of the user's character through the virtual environment.

In some embodiments, the propulsion manager 208 is configured to limit a maximum possible propulsive effect exerted from a single propulsive movement (e.g., movement of the user's arms). The propulsion manager 208 can clamp a maximum speed or rate of change of position of the user's character for each time step such that the user's character is limited from being propelled beyond the maximum speed.

The steering manager 216 is configured to determine a direction of travel of the user's character based on feedback from the force plate 142. In particular, the steering manager 216 can determine a heading for the user's character. The steering for the user's character can be determined based on a left-right (e.g., an X-direction) position of the center of pressure on the force plate 142. The greater the position of the center of pressure deviates in the X-direction from a centerline, the more the steering manager 216 determines a steering adjustment for the user's character (e.g., in a left or right direction). In some embodiments, the steering manager 216 limits steering of the user's character from more than 70 degrees from a line of travel on the course.

The steering manager 216 can determine heading of the user's character by:

Heading w . = ( COP x - 0 . 5 ) * C turning * f ⁡ ( v s ⁢ k ⁢ i ⁢ e ⁢ r ) Heading w = Heading w . * Δ ⁢ t

where Heading{dot over (w)} is a time rate of change of the heading, Headingw is the heading of the user's character, COPx is a position of the center of pressure on the force plate 142 in an X-direction (e.g., relative to the centerline of the force plate 142), Cturning is a coefficient that may be determined based on empirical testing or settings, Δt is a timestep, and f(Vskier) is a function of a speed of the skier. In some embodiments, the steering manager 216 is configured to clamp the heading Headingw to minimum and maximum values.

The rate at which the steering manager 216 causes change in the heading can be adjusted by adjustment (e.g., by the user in a developer mode) of a rotation reduction parameter. The rotation reduction parameter can be multiplied by the speed of the skier to determine a reduced magnitude value. The reduced magnitude value can be used to scale the position of the center of pressure on the force plate 142 in the X-direction, COPx. In some embodiments, the rotation reduction parameter can be used to simulate increasing rotation speed with increasing velocity speed.

The steering manager 216 can also clamp the position of the center of pressure on the force plate 142 in the X-direction, COPx. Clamping the center of pressure in the X-direction, COPx, can prevent users from standing with a wide stance. For example, COPx can be clamped, at a minimum, to 0.25 and at a maximum, to 0.75. It should be understood that the minimum and maximum clamping values described herein can be adjusted and are provided for illustrative purposes only.

In some embodiments, the clamping is implemented by the steering manager 216 using a deadband. For example, the steering manager 216 can implement a rotation reduction parameter that allows rotation of the character for steering even if the character is moving at a speed of 0 (e.g., the character is stationary).

In some embodiments, the steering manager 216 is configured to control a speed of the user's character in an X-direction in the virtual environment based on a turning strength parameter. The steering manager 216 can determine a speed of the character in the X-direction using:

v s ⁢ k ⁢ i ⁢ e ⁢ r x , k = v s ⁢ k ⁢ i ⁢ e ⁢ r x , k - 1 * Turn Strength

where Turnstrength is the turning strength parameter, Vskierx,k-1 is the speed of the skier's character at a previous time step or an unadjusted speed of the skier's character at a current time step, and vskierx,k is the speed of the skier's character at the current time step after adjusted with the turning strength parameter. Increasing the value of the turning strength parameter can result in a greater reduction of the X-component of the speed vskier, therefore resulting in a sharper, more responsive turn. A lower value of the turning strength parameter can reduce an impact on the sideways (e.g., X-direction) velocity of the user's character, thereby resulting in a smoother or less responsive turn. In some embodiments, the turning strength parameter Turnstrength can have a value from 0 to 1.

Referring still to FIG. 3, the jump manager 218 is configured to detect when the user jumps on the force plate 142. The virtual environments (e.g., the maps, routes, etc.) provided by the map database 212 can include obstacles that the user must jump over. The obstacles can be positioned in the user's path so that the user must jump in order to proceed along the route. When the user jumps on the force plate 142, the total load exerted on the force plate 142 may be relieved temporarily which can be detected by the jump manager 218. A degree to which the user's character jumps (e.g., a height of the jump in the virtual environment) can be determined based on the amount or percentage of the user's total load (e.g., the user's total weight) that is relieved from the force plate 142 when the user jumps. In this way, the user does not necessarily have to jump completely off the force plate 142 in order to cause the user's character (e.g., the skier) to jump over an obstacle. A percentage of the user's base weight that the user unloads from the force plate 142 when jumping corresponds to a height that the user's character jumps from the ground. The amount of time that the user de-loads the percentage of the base weight from the force plate 142 corresponds to an amount of time that the player's character continues to “rise” from the ground in the virtual environment.

In some embodiments, the display screen 140 is configured to provide visual indicators in the virtual environment to prompt the user to jump. The display manager 214 can obtain the map or route from the map database 212, and can operate the display screen 140 to provide the visual indicators as the user's character approaches locations where jumping is required (e.g., obstacles, ski jumps, etc.). The user may be required to jump in order to avoid the obstacles and continue on the course. In some embodiments, if the user does not jump and the user's character collides with an obstacle, the user's character may lose health points (e.g., as determined by the gamification manager 220) and/or a rate of speed of the user may slow down.

The jump manager 218 is configured to determine, in real-time, a percent unloaded to the force plate 142, and a percent loaded to the force plate 142. The percent unloaded to the force plate 142 can be determined by:

Unload p = ( Total ⁢ Load a ⁢ v ⁢ g - Total ⁢ Load c ⁢ u ⁢ r ⁢ rent ) Total ⁢ Load a ⁢ v ⁢ g Load p = Total ⁢ Load c ⁢ u ⁢ r ⁢ rent Total ⁢ Load a ⁢ v ⁢ g

where Total Loadavg is an average of the total load exerted on the force plate 142 over a previous time period (e.g., a time window), and Total Loadcurrent is a current total load measured by the force plate 142. The display screen 140 can be operated to display the average of the total load exerted on the force plate 142. In some embodiments, the jump manager 218 implements a low-pass filter in order to obtain an average weight of the user (e.g., Total Loadavg). The low-pass filter can haven an alpha value that is adjustable.

The jump manager 218 is configured to determine a jump height for the user's character based on the percent unloaded on the force plate 142. If the percent unloaded, Unloadp, is greater than a threshold (e.g., Unloadp>Unloadthreshold), the jump manager 218 can determine the jump height as:

Jump h ⁢ e ⁢ ight , k = Jump h ⁢ e ⁢ ight , k - 1 + C 1

where Jumpheight,k is a jump height at a current timestep k, Jumpheight,k-1 is a jump height at a previous timestep k−1, and C1 is a constant (e.g., determined through empirical testing) that controls rise rate of the user's character while jumping. The jump height can begin at 0, and be incremented by the constant C1 for as long as the force plate 142 is sufficiently de-loaded.

Otherwise, if the percent unloaded, Unloadp is less than or equal to the threshold Unloadthreshold, the jump height can be determined as:

Jump h ⁢ e ⁢ i ⁢ g ⁢ h ⁢ t , k = Jump h ⁢ e ⁢ ight , k - 1 - C 2

where Jumpheight,k is a jump height at the current timestep k, Jumpheight,k-1 is the jump height at the previous timestep k−1, and C2 is a constant (e.g., determined through empirical testing) that controls a fall rate of the jump performed by the user's character.

In some embodiments, the jump height is prevented from being a negative number. For example, if the jump height is less than zero, Jumpheight,k<0, the jump manager 218 sets the jump height equal to zero, Jumpheight,k=0. In some embodiments, the jump height is prevented from rising above a certain level. For example, if the jump height, Jumpheight,k exceeds a threshold jump height, Jumpheight,max, the jump may be ended (e.g., begin the controlled descent of the jump using Jumpheight,k=Jumpheight,k-1−C2.

In some embodiments, the threshold jump height Jumpheight, max is tuned so that the jump performed by a user's character only lasts for a specific time period (e.g., 1.5 seconds). In some embodiments, for example, the threshold jump height Jumpheight,max is tuned based on the ascension and descension (e.g., rise and fall) times of the jump as determined by Jumpheight,k=Jumpheight,k-1+C1 and Jumpheight,k=Jumpheight,k-1−C2 such that the amount of time of the jump (e.g., over both the rise and fall) does not exceed the specific time period (e.g., 1.5 seconds, 1 second, 2 seconds, etc.).

In some embodiments, the jump manager 218 is configured to prompt the user to perform a long jump. Various levels, tracks, courses, maps, etc., as stored in the map database 212 can include areas where the user must perform a long-jump. The user's score can be determined (e.g., by the gamification manager 220) based on a flight time of the user's character.

In some embodiments, the jump manager 218 is configured to control a value for a velocity of the jump performed by the user's character. The jump multiplier can be an adjustable value from 0 to 3, with increased values of the jump multiplier resulting in a higher jumping speed of the user's character.

Referring still to FIG. 3, the feedback manager 224 is configured to control the first motor 112 and the second motor 114 in order to provide haptic feedback to the user. The feedback manager 224 can provide haptic vibrations via the first motor 112 and the second motor 114 and the first cable 118 and the second cable 120. The feedback manager 224 can control the first motor 112 and the second motor 114 to provide haptic vibrations by controlling the tension on the first cable 118 and the second cable 120 (e.g., by adding tension to the first cable 118 and the second cable 120). The feedback manager 224 can control magnitude of a pulse (e.g., a pulse of tension on the first cable 118 and the second cable 120), a time length of each pulse, a number of pulses in a sequence, and an amount of “off” time between sequences (e.g., similar to morse code) in order to convey various information to the user. For example, if the user's character collides with an obstacle (e.g., due to the user not jumping), if the user's character collides with a boundary of the map, goes off a trail of the map, loses health points, is approaching a jump, etc., the feedback manager 224 can provide various haptic feedback in order to inform the user regarding any of the colliding with the obstacle, colliding with a boundary of the map, going off the trail of the map, losing health points, approaching the jump, etc.

Referring still to FIG. 3, the gamification manager 220 is configured to facilitate gamification. For example, the gamification manager 220 can facilitate single player mode, multi-player asynchronous mode, multi-player synchronous mode, gamified points for the user, ranking, health scores of the user during the course of a map or level, etc. The health status can be implemented by the gamification manager 220 and can include beginning the user's health score at a maximum value (e.g., 100, 1000, etc.). The gamification manager 220 can receive feedback from the simulator 210 (e.g., the game engine) to determine adjustments to the user's health score, or can be implemented as a part of the game engine.

The gamification manager 220 can determine damage reduction for the user's health as the user's character hits obstacles. As the user's character collides with obstacles, the gamification manager 220 can reduce the user's health score (e.g., by a predetermined amount, by an amount proportional to the user's speed when contacting the obstacle, etc.). The gamification manager 220 can coordinate with the feedback manager 224, the display manager 214, and the simulator 210 (e.g., the game engine) to at least one of (i) provide haptic feedback when the user's character collides with the obstacle, (ii) overlay a transparent color (e.g., red) on the display screen 140 to indicate the collision, or (iii) reduce the speed of the user's character.

The gamification manager 220 can also populate health coins throughout the map, level, course, etc., or more generally, the virtual environment. When the user collects a health coin (e.g., by steering into the health coin), the gamification manager 220 can increase the user's health score. The user's health score can be capped at the maximum value. The health coins can be positioned such that the user must steer to collect the coins.

The gamification manager 220 can also populate boost coins throughout the virtual environment. The user can steer their character to travel into the coins to collect them. Once the user collects a threshold amount of coins (e.g., four), the user's character can be given a speed boost (e.g., for a temporary period of time). When the user is on a speed boost, the user's character may pass over or through obstacles on the course without sustaining health damage. Additionally, the steering manager 216 can automatically control the steering or direction of travel of the user's character to maintain the user on the course. In this way, the speed boost conveys benefits to the user's character. The speed boost can last for a predetermined amount of time, and the display manager 214 can operate the display screen 140 to notify the user regarding the remaining amount of time of the speed boost.

The gamification manager 220 can also allow the user to customize their character. For example, the user can select between different ski colors, different outfit colors, accessories, etc. The user may select various skins for their character to provide a customizable experience.

The gamification manager 220 can implement online or offline play for the user. When the user plays offline, the user may play courses but not have access to online features such as leader boards, saving data, retrieving data, etc. The user can still play courses from the map database 212 locally and can obtain scores, but the score is not uploaded to the game network 226.

When the controller 200 has internet connection and can connect to the game network 226, the user can play in a multi-player mode, as implemented by the gamification manager 220. The multi-player mode can be implemented in the asynchronous mode or the synchronous mode. In the asynchronous mode, the player can compete against a previous run performed by either themselves or another player (e.g., on a different exercise apparatus 100 that is connected to the game network 226). When the user performs their run in the asynchronous mode, the other user's character can be animated as a semi-transparent character to indicate their previous run. For example, time-series data of the poses, positions, and orientation of the other skier (e.g., the user's previous run, or another user's previous run) can be recorded and stored in a database of the game network 226 and assigned to the user's current run. The time-series data can then be used to animate the motion of the other skier (e.g., the other semi-transparent character) such that the user can compete against the other skier.

In the synchronous mode, multiple players that are connected to the game network 226 can compete against each other in real-time (e.g., on the same course at the same time). The synchronous mode can have two forms of interaction between the players: a non-interactive mode and an interactive mode. In the non-interactive mode, the players that are playing on the same course are prevented from interacting with each other. For example, if multiple players are at the same location at the same time in the virtual environment, there is no interaction between the players (e.g., no collision between their characters).

In the interactive mode, the players can interact with each other (e.g., using a physics model). The users' characters can collide with each other and cause each other to decrease or increase in speed depending on the direction of collision. For example, one user can ski their character into another player's character and push them off the course, push them into an obstacle, make them fall, etc. Advantageously, the interactive mode of multi-player asynchronous play can enable team play with team strategies. For example, a team of players may develop a strategy where some of the players attempt to run the course as fast as possible, while the other players on the team attempt to “attack” or cause a pileup to prevent the other team from reaching the finish line. In the interactive mode, team play can be enabled and the team that has a player that reaches the finish line first may be the winner.

Referring still to FIG. 3, the display manager 214 can control the display screen 140 to provide live feedback. The live feedback can be displayed in a pane or overlaid on the display screen 140. The live feedback can include at least one of a current speed of the user's character, a position on the track or in the virtual environment (e.g., on a map of the virtual environment provided by the map database 212), positions of other players in the virtual environment, a current health status, a number of boost coins collected, or an elapsed amount of time since beginning the course.

The feedback manager 224 can also control aural feedback provided to the user via the speaker 144. The feedback manager 224 can control the speaker 144 to provide sound effects and a soundtrack during game play or menu interactions. The user can provide inputs via the display screen 140 (e.g., a touch screen) to customize the sound feedback. For example, the user can adjust a volume of the sound output by the speaker 144. The user can also shut off or mute the speaker 144. The feedback manager 224 can store speaker preferences and maintain the speaker preferences (e.g., volume level) between restarts of the controller 200. In some embodiments, the feedback manager 224 is configured to retrieve soundtracks (e.g., menu music, music or soundtracks for each course, etc.) and operate the speaker 144 to play the music during the gameplay.

Referring still to FIG. 3, the map database 212 can include a variety of courses or maps including a wilderness course (e.g., a first course), a backcountry course (e.g., a second course), and a terrain park course (e.g., a third course), among others. The wilderness course can provide the user with an experience of beautiful snowy forests, alpine lakes, and gentle slopes (e.g., up and down). In the wilderness course, the user may use alternating arm motion or both arm motion in order to generate propulsion.

The wilderness course can include multiple segments that can be performed in one long game play, or can be individually performed. The wilderness course can be performed by the user on various levels of difficulty including beginner, intermediate, and advanced. The level of difficulty can be selected by the user via the display screen 140 and can cause a corresponding adjustment to the virtual environment provided by the map database 212, the simulations or game engine performed by the simulator 210, operation of the propulsion manager 208, etc. In particular, the various levels of difficulty can cause a corresponding adjustment to a propulsion that is exerted on the user's character for a corresponding motion or force provided via the first cable 118 and the second cable 120, a speed of animals (e.g., wildlife obstacles) in the virtual environment, a length of pursuit time by an animal, an effect that the slopes have on propulsion, an available amount of space around obstacles, a height of obstacles, etc. As compared to both the intermediate and beginner mode, in the difficult mode, the propulsion generated by the user can be reduced, the speed of the animals can be increased, the length of pursuit time by the animals can be increased, the effects of the slopes on propulsion can be increased, the space around obstacles to steer around can be reduced, and the height of obstacles can be increased to require higher jumps. Likewise, when comparing the intermediate mode to the beginner mode, the propulsion generated by the user can be decreased, the speed of the animals is increased, the length of pursuit time of the animals is increased, the effect of the slopes is increased, the space around obstacles to steer is decreased, and the height of obstacles is increased.

The wilderness course can include scenery such as snow covered trees, open snowy plains, mountains in the backgrounds, frozen lakes, etc. The wilderness course can include various obstacles such as sticks, logs, and rocks. The user may be required to steer around the obstacles or jump over the obstacles, depending on the size of the obstacles. The course can be designed such that for up-slopes, there is room for the user to steer and prepare for a jump such that the user can build sufficient speed to jump. Similarly, for down-slopes, the wilderness course can be configured such that the only path for the user to progress along the course is to jump over the obstacle (e.g., a stick). If the user steers into a stick or other obstacle without jumping, the display manager 214 can operate the display screen 140 to show an animation of the user's character tumbling on the ground with simulated snow interactions, before the user's character regains their footing. In some embodiments, stick obstacles on the course must be jumped over without options to steer around the stick.

The rock obstacles may require the user to steer around without allowing the user to jump over the rocks. The rocks can be positioned on the virtual environment such that there is a path to steer around the rocks. Hitting the rock obstacle may cause the display manager 214 to operate the display screen 140 to show an animation of the user tumbling similar to colliding with the stick and resulting in health reduction of the user's character.

The wilderness course can also include various animals in the virtual environment. The animals that are provided in the virtual environment can include bears (e.g., predatory animals), moose (e.g., chasing animals), and small animals (e.g., foxes, squirrels, rabbits, etc.). When the user approaches a bear (or another predatory animal), the user can attempt to pass on the side of the bear without incident. However, if there is insufficient room or the user skis too close to the bear, the user may be required to “scare” the bear away. The user may scare away the bear by raising their arms including the first bar 116 and the second bar 126 as high as possible (e.g., to an elevated position) to make their character “taller.” The user can move the first cable 118 and the second cable 120 to fully retracted. If the user raises their arms within a predetermined amount of time (e.g., within a predetermined time period and for a sufficient amount of time), the bear is scared away and leaves. However, if the user does not raise their hands within the predetermined amount of time, the display manager 214 can operate the display screen 140 to show a non-graphic bear attack, and the gamification manager 220 may reduce the user's health score before the user is allowed to proceed.

When the user approaches a moose (or another chasing or pursuit animal), the user may be chased by the moose. The moose can be controlled by the simulator 210 to not “notice” the user until the user's character is passing by the moose. As the user is passing by the moose, the moose may begin chasing the skier (e.g., by a random or probabilistic calculation as to whether the moose initiates pursuit). The display manager 214 can operate the display screen 140 to provide a visual indication (e.g., a rear facing view in a window pane of the moose chasing, alert lights or text, etc.). The feedback manager 224 can also provide aural notification to the user that the user's character is being pursued by the moose.

In order to outrun the moose, the user should increase their speed (e.g., by extending and retracting the first cable 118 and the second cable 120). Once the user achieves and maintains a required speed or distance from the moose (for a predetermined amount of time), the moose may cease pursuit and the user can continue the course. The difficulty level can determine how long the moose continues pursuit (e.g., 5 seconds on beginner level, 10 seconds on intermediate, and 15 seconds for advanced). The difficulty level can also determine how fast or how much distance the user must maintain from the moose to escape the moose pursuit. If the moose catches the user (e.g., the user does not outrun the moose), the display manager 214 can operate the display screen 140 to provide an animation of the moose bumping the user's character off balance into the snow, and the gamification manager 220 may reduce the user's health score.

In addition to the predatory animals and the pursuing animals, the course can also include small animals such as foxes, squirrels, rabbits, etc. The small animals can cross, crawl, or hop across the path without paying attention to the user. The user may need to steer their character to avoid hitting the small animals, or can jump over the small animals to avoid hitting them. If the user's character hits the small animal, the gamification manager 220 can reduce the user's health score.

The backcountry course can be similar to the wilderness course but may have steeper slopes, mountains, etc. The backcountry course can also have different obstacles than the wilderness course. The backcountry course can include multiple check points along the course that are used for respawning (e.g., if the user's character loses all health points, the user's character respawns at a previously achieved checkpoint).

Similar to the wilderness course, the backcountry course can be played on various levels of difficulty including beginner, intermediate, and advanced. In the beginner difficulty, a resistance that the user experiences when climbing a wall is set to a lowest value, a height of the ice wall is set to a lowest value, a sliding rate when traveling up a herringbone climb is set to a lowest value, and a speed of an avalanche is set to a lowest value. In the intermediate difficulty, the resistance that the user experiences when climbing the wall is set to a medium value, the height of the ice wall is set to a medium value, the sliding rate when traveling up the herringbone climb is set to a medium value, and the avalanche is set to the medium value. In the advanced difficulty, the resistance when climbing the ice wall is set to a highest value, the height of the ice wall is set to the highest value, the sliding rate when going up the herringbone climb is set to the highest value, and the speed of the avalanche is set to the highest value.

The backcountry course can include one or more ice walls along the course. When the user reaches an ice wall, the user must climb the ice wall to proceed. In order to do so, the user's character can be provided with an ice axe in each hand. The controller 200 can adjust the resistance on the first cable 118 and the second cable 120 to increase significantly (e.g., based on the difficulty selected). The user can then alternate motion with the arms and each motion will “pull” the player's character up the ice wall. The display manager 214 is configured to operate the display screen 140 in order to provide an animation of the user's character climbing the ice wall with an ice axe in each hand, corresponding to the actual motion of the user's arms.

The backcountry course can include one or more steep inclines or hills that require the user to perform a herringbone climb to ascend. The display manager 214 or the feedback manager 224 can operate the display screen 140 or the speaker 144 in order to prompt the user to begin a herringbone climbing motion to ascend the incline. To perform the herringbone climb, the user's character adjust their footing such that the character's skis form a V (e.g., with the character's heels pointing inwards towards each other). In order to propel their character up the hill, the user must move their arms in an alternating motion (e.g., pulling the first cable 118 and the second cable 120), while shifting their weight on the force plate 142 in alternating direction, in opposition to sides at which a current arm motion is being performed (e.g., leaning to the left while pulling on the first cable 118 on the right). If the user does not perform the required arm and body/weight shifting motions, the user's character will begin to slide backwards. A rate at which the user's character slides backwards depends on the difficulty level selected. In the beginner difficulty level, the user may back slide at a lower rate, while at the intermediate and advanced difficulty levels, the user's character back slides at a higher rate. In some embodiments, the user may collect and select to use the boost coins when performing the herringbone climb.

The backcountry course can also include a downhill tree course. In this section of the backcountry course, the user does not need to propel themselves by pulling on the first cable 118 and the second cable 120. Instead, the user must steer (e.g., by leaning left and right on the force plate 142) in order to avoid trees. The user may operate the first cable 118 and the second cable 120 to propel their character faster, if desired, but the downhill slope of the downhill tree course renders user propelling of their character unnecessary. A speed at which the user's character travels down the downhill tree course may be determined based on the difficulty level, with the speed increasing with respect to increased difficulty level. If the user collides into one of the trees, the gamification manager 220 may reduce the user's health score.

The backcountry course can also include avalanche obstacles (e.g., a weather phenomenon) in areas of the virtual environment that are downhill and wide open. For example, the user may be experiencing a downhill glide when the sound of the avalanche is provided via the speaker 144. The user can also be notified of the incoming avalanche by the feedback manager 224 providing haptic feedback via the first cable 118 and the second cable 120, or by providing alerts on the display screen 140. For example, the display manager 214 can operate the display screen 140 to provide a banner on the screen with crawling text providing “Avalanche Warning” (e.g., similar to a news crawl alert) once the user's character transports into a tagged avalanche area of the backcountry course. In some embodiments, an environment behind the user's character from which the avalanche is approaching can include snow mist or a snow cloud. In order to avoid being hit by the avalanche and losing health score, the user can attempt to ski faster (e.g., away from the avalanche) by providing faster or harder propulsion via the first cable 118 and the second cable 120. The avalanche may last a predetermined amount of time (e.g., 10 seconds, or varying depending on the difficulty level) and can approach at a varying rate depending on the difficulty level. Once the user has outrun the avalanche for the predetermined amount of time, the avalanche may dissipate. If the avalanche contacts or overtakes the user, the gamification manager 220 can decrease the user's health score and the user's character may respawn at a previous checkpoint. Alternatively, the user can avoid the avalanche by steering to a side of the course and letting the avalanche pass.

The backcountry course can also include other obstacles such as the sticks, rocks, bears, moose, and small animals as described in greater detail above. The other obstacles can be provided in combination with the avalanche or during times when the user's character is not performing a herringbone climb, an ice wall climb, or outrunning an avalanche.

The terrain park course (e.g., the third course) can include several individually selectable courses. The terrain park course can include a ski jump course, a giant slalom course, and a snowboarding course. The user can select, via the display screen 140, which of the courses (e.g., the ski jump course, the giant slalom course, or the snowboarding course) to play.

In the ski jump, the user begins at the top of a long and sharply downhill ramp. The user can pull on the first cable 118 and the second cable 120 to initiate the user's character down the ramp. In some embodiments, the user can provide additional propulsion while traveling down the ramp and approaching a jump. At the bottom of the ramp (e.g., at the jump), the user must jump on the force plate 142 in order to cause their character to fly into the air for the jump. The height that the user jumps off the force plate 142 (e.g., the amount of time that the force plate 142 is unloaded) and the timing of when the user jumps relative to a time at which the user's character leaves the ramp are used to determine a jump distance of the user's character. The user's character may have a flight time of up to several seconds.

The jump manager 218 can facilitate obtaining feedback from the force plate 142 to perform the ski jump. The jump manager 218 can also obtain data indicating whether the user lands on the force plate 142 evenly or unevenly, and a degree to which the user lands unevenly. For example, if the user lands on the force plate 142 unevenly, the user's character may lose balance when landing and fall. If the user's character falls when landing the ski jump, the jump is not counted, and the user may be prompted to try the ski jump again.

The difficulty level selected by the user can dictate a maximum speed of the user's character down the ramp, which therefore affects the difficulty of performing the ski jump. For example, with increasing difficulty level, the maximum speed of the user's character is increased, which therefore makes it more difficult for the user to time their jump on the force plate 142 with an ideal time. If the user jumps too late (e.g., past the ideal time), or not at all, the user's character falls into the snow and the jump does not count. On the other hand, if the user jumps on the force plate 142 too early, the jump distance of the user's character is decreased and therefore the user obtains a lower score. The user's score for the ski jump is determined based on a distance of the user's character. The graphics provided on the display screen 140 can provide an immersive experience for the user of traveling rapidly to the ramp.

The giant slalom course can provide the user with the experience of performing a slalom course in which the user must steer between gates. When the giant slalom course begins, the user's character can begin at the gate. When the gate opens (e.g., as controlled by the display manager 214 and the simulator 210), the user is prompted to build speed by moving their arms, either both at the same time or alternating. The user can be provided with 10 seconds or another time period in order to gain speed by moving their arms and causing the first cable 118 and the second cable 120 to extend and retract.

Once the time period has elapsed for the user to gain speed, the user begins approaching gates that the user must navigate their character to steer between. In order to steer, the user can shift their weight on the force plate 142 (e.g., left to right) and can pull the first cable 118 or the second cable 120 to steer in either direction. The steering manager 216 can determine the angle of steering based on both the position or extension and retraction of the first cable 118 and the second cable 120 as well as the center of pressure on the force plate 142. In some embodiments, the user can achieve a fastest or quickest steering to left or right by coordinating their arm motion with leaning. For example, the user can steer their character to the right by pulling on the first cable 118, allowing the second cable 120 to retract, and leaning to the right on the force plate 142. Likewise, the user can steer their character to the left by pulling on the second cable 120, allowing the first cable 118 to retract, and leaning to the left on the force plate 142. During this portion (e.g., the steering portion where the user attempts to travel between the gates), the tension exerted on the cable can be increased. A sensitivity of the steering (e.g., by leaning on the force plate 142 and pulling/retracting the first cable 118 and the second cable 120) can be increased with respect to increased difficulty level. Similarly, a steepness of the hill that the user is traveling down while approaching the gate can be increased with respect to increased difficulty.

The giant slalom can include multiple gates disposed along the course that the user must steer their character between. The gamification manager 220 is configured to determine a total amount of time to complete the giant slalom course and incur a penalty to the user's score for each gate missed.

In the snowboarding course, the user can be prompted (e.g., by the display manager 214 and the display screen 140) to turn such that their feet point in a left/right wise direction (e.g., in the X-direction of the force plate 142). The user can select either a “regular” or “goofy” orientation for their character via the display screen 140 to determine which of the character's foot is downhill or which way the character faces. During the snowboarding course, the user can steer by leaning forwards and backwards (e.g., to the left and right of the force plate 142) from heel to toe. The snowboarding course simulates a snowboarding experience where the one of the user's shoulders points downhill and the other shoulder trails and the user must lean forwards and backwards to steer. The snowboarding course can have downhills including any of the obstacles described in greater detail above (e.g., animals, rocks, sticks, trees, etc.) that the user must steer around. The snowboarding course can also include a handrail that the user can “ollie” onto. The user can initiate the “ollie” by shifting their weight to their uphill foot (e.g., the rear foot) to bring a tip of the character's board up, and then leveling their weight between the uphill and downhill foot once on the handrail.

It should be understood that the courses described herein are not intended to be limiting. Various other courses can be provided including courses that have multiple check points, obstacles, uphill and downhill slopes, etc. For example, the map database 212 can also include a sprinting course in which the user must perform bursts of arm motion to gain speed and complete a course. The courses described herein can also include various checkpoints and the gamification manager 220 can determine corresponding score or time between checkpoints. For example, when the user reaches a next checkpoint, the gamification manager 220 can the display manager 214 to operate the display screen 140 to notify an amount of elapsed time that the user took to travel through the virtual environment from the previous checkpoint to the next checkpoint.

Referring still to FIG. 3, the tutorial manager 222 can be configured to guide the user through various tutorials for each of the courses. For example, the tutorial manager 222 can coordinate a tutorial for each of the wilderness course, the backcountry course, the terrain park course, etc. The tutorials can teach the user how to perform the various movements for each of the courses by operation of the display screen 140 and prompting the user to perform actions. The tutorials can be sub-divided into individual moves required for each of the courses. Each movement required for the courses can be described to the user via imagery on the display screen 140 and prompting the user to perform the movement on the skiing simulator 100 (e.g., by moving their arms while grasping the first bar 116 and the second bar 126 and leaning or jumping on the force plate 142). The tutorial manager 222 can coordinate providing feedback to the user via the display screen 140 or the speaker 144 to notify the user if the user has performed the movement correctly, should re-try, adjustments that the user should make to their movements, etc.

The tutorials for the wilderness course can include a first tutorial for basic propulsion, a second tutorial for basic turning, a third tutorial for jumping over obstacles, a fourth tutorial for outrunning certain predatory animals (e.g., bears, moose, etc.), and a fifth tutorial for scaring various predator animals (e.g., bears). The tutorials for the backcountry course can include a first tutorial for basic propulsion, a second tutorial for climbing an ice wall, a third tutorial for the herringbone climb, a fourth tutorial for outrunning avalanches, and a fifth tutorial for avoiding or navigating between trees. The tutorials for the terrain park course can include a first tutorial for a ski jump, a second tutorial for the giant slalom, a third tutorial for turning on a snowboard, and a fourth tutorial for ollieing on the snowboard. The tutorials described herein can include presenting required imagery for any of the movements that the user needs to perform and prompting the user to perform the movements. The tutorials can be skippable by the user (e.g., by selecting a button on the display screen 140). In some embodiments, the tutorials can be presented to the user the first time the user plays a course, every time the user plays a course, or by request by the user.

Referring to FIG. 5, a flow diagram of a process 400 for controlling tension in the first cable 118 and the second cable 120, and operating the display screen 140 of the skiing simulator 100 includes steps 402-410. The process 400 can be performed by the controller 200 based on feedback provided to the controller 200 by the user (e.g., that the user may provide by moving their arms and pulling the first cable 118 and the second cable 120).

The process 400 includes generating, by an electric motor, a first tension in a first cable during a concentric phase of a skiing stroke (step 402) and a second tension in the first cable during an eccentric phase of the skiing stroke (step 404), according to some embodiments. In some embodiments, the first tension that is provided by the motor (e.g., the first motor 112) over the concentric phase of the ski stroke is greater than the second tension exerted on the first cable during the eccentric phase of the skiing stroke. The electric motor can be controlled by the controller 200 (e.g., the propulsion manager 208 or the feedback manager 224) to provide the tension to the user via the first cable 118. In some embodiments, steps 402 and 404 include performing similar operations to both a first motor (e.g., the first motor 112) and a second motor (e.g., the second motor 114) to provide the first tension and the second tension during concentric and eccentric phases of the skiing stroke. The first tension and the second tension can be adjusted based on a difficulty level selected by the user. For example, the first tension and the second tension can be increased with respect to increased difficulty level selected by the user to provide a more rigorous workout experience. The steps 402 and 404 can also include controlling the electric motor to provide dampening to the first cable.

The process 400 includes determining, based on feedback from the electric motor (or sensors thereof), a propulsive force (step 406), according to some embodiments. The feedback from the electric motor can include at least one of a position, velocity, or a force exerted on the motor by the user during the concentric or eccentric phase of the skiing stroke. The feedback can be obtained from both the first and the second electric motor (e.g., if two cables and electric motors are provided). The step 406 can be performed by the propulsion manager 208. The step 406 can include combining the propulsive force input by both of the user's arms (e.g., via the first cable 118 and the second cable 120) into a single overall propulsive force.

The process 400 includes simulating, based on the propulsive force and a characteristic of a virtual environment, a movement of a character within the virtual environment (step 408), according to some embodiments. In some embodiments, the characteristic of the virtual environment includes a degree of slope on which the character is currently positioned, whether the slope is uphill or downhill, a slide or coefficient of friction for the ground surface of the slope in the virtual environment, a direction that the character is facing relative to the slope, etc. The step 408 can be performed by the simulator 210 (e.g., a game engine) using a physics model. The virtual environment can be provided by the map database 212 and can include the various characteristics described herein. In some embodiments, the characteristic includes an obstacle that causes a decrease in propulsion (e.g., a collision).

The process 400 includes operating a display screen to provide an animation of the character moving through the virtual environment and tracking a pose of the user onto the character as the user performs the skiing stroke (step 410), according to some embodiments. In some embodiments, step 410 is performed by the display manager 214 and the display screen 140. The display manager 214 and the display screen 140 can operate in real-time to animate the character's arms and ski poles to track to the real-world motions of the users arms. It should be understood that the process 400 can advantageously be performed for any of the various courses described in greater detail above with reference to FIG. 3. The process 400 can also be applied for other motions than skiing strokes such as for the ice wall climb described in greater detail above.

Referring to FIG. 6, a flow diagram of a process 500 for simulating a skiing exercise on the skiing simulator 100 includes steps 502-516. The process 500 can be performed by the skiing simulator 100 (e.g., the controller 200). The process 500 advantageously facilitates simulated skiing propulsion, steering, and jumping. The process 500 leverages feedback from the first motor 112 and the second motor 114 for propulsive efforts exerted by the user, and feedback from the force plate 142 (e.g., a total load and a center of pressure or center of gravity of the user) for steering and jumping actions. The process 500 advantageously facilitates an exercise of simulated skiing (or snowboarding) actions in an immersive manner.

The process 500 includes generating a virtual environment including a path, a character, and at least one of one or more obstacles, uphill slopes, downhill slopes, ramps or jumps, or animals (step 502), according to some embodiments. In some embodiments, step 502 is performed by the map database 212 or the simulator 210. The virtual environment can be a course or level (e.g., a virtual map) including various terrain. The virtual environment can be any of the wilderness course, the backcountry course, or the terrain park course. The virtual environment can include any of the portions of the courses. For example, the virtual environment can include any of the giant slalom, the ski jump course, and the snowboarding course. The virtual environment can include various characteristics that can be used to simulate interactions between the user's character and the virtual environment (e.g., an avalanche, an animal, a rock or stick or other obstacle, etc.).

The process 500 includes determining a steering effect based on a user's center of gravity on a force plate or movement of a cable (step 504), according to some embodiments. In some embodiments, step 504 is performed by the steering manager 216. For example, the steering manager 216 can obtain, from the force plate 142, a location of a user's center of pressure as the user stands on the force plate 142. The location of the user's center of pressure on the force plate 142 can be measured from a left to right of the force plate 142 (e.g., an X-direction). In some embodiments, the steering manager 216 is configured to determine a direction of steering based on the center of gravity on the force plate. For example, when the user leans to the left or right, the center of gravity can shift to the left or right and the steering manager 216 determines adjustments to a direction of travel of the user's character (e.g., the steering effect). The steering manager 216 can also be configured to determine adjustments to the direction of travel of the user's character (e.g., the steering effect) based on movement of a cable (e.g., a right cable and a left cable). The steering manager 216 can determine the adjustments to the direction of travel based on at least one of the user's center of gravity on the force plate or the movement of the cable (or both). In some embodiments, the steering manager 216 is configured to determine adjustments to the direction of travel of the user's character based on a degree of extension of the cable (e.g., the first cable or the second cable). For example, if the user pulls on the first cable (e.g., the right cable), and lets the second cable (e.g., the left cable) retract towards the corresponding motor, the steering manager 216 can determine an adjustment to the direction of travel to steer the user's character to the right. Whether the steering effect is based on the movement of the cable (or both the first cable and the second cable) can be determined based on what course the user is currently playing on.

The process 500 includes determining a propulsive effect based on a user's movement of a first cable and a second cable (step 506), according to some embodiments. In some embodiments, the step 506 is performed by the propulsion manager 208. For example, the propulsion manager 208 can obtain, from sensors on the first motor 112 or the second motor 114, a position, velocity, and force exerted by the user on the first motor 112 and the second motor 114 via the first cable 118 and the second cable 120. In some embodiments, the propulsion manager 208 is configured to determine the propulsive effect using force exerted on both a first cable and a second cable. For example, the propulsive effect can be a total propulsive force resulting from movement of the first cable and the second cable. The propulsion manager 208 can determine a first propulsive force and a second propulsive force corresponding to each of the first cable 118 and the second cable 120. In some embodiments, the first propulsive force and the second propulsive force are determined based on a force exerted by the user on the corresponding cable (e.g., the right cable or the left cable), a velocity of the corresponding cable, a time step, a scaling factor, and a center of pressure of the user on the force plate 142 in a Y-direction (e.g., forwards and rearwards).

The process 500 includes determining a jumping effect based on a total load exerted by the user on a force plate (step 508), according to some embodiments. In some embodiments, the jumping effect is determined by the jump manager 218. For example, the jump manager 218 can monitor the total load exerted on the force plate 142 and, in response to the force plate 142 being unloaded, determine the jumping effect based on the period of time that the force plate 142 is unloaded.

The process 500 includes virtually moving the character along the path based on the steering effect and the propulsive effect (step 510), according to some embodiments. In some embodiments, step 510 is performed by the simulator 210. The step 510 can also be performed based on the virtual environment (e.g., the slope and direction of slope relative to an orientation and direction of travel of the character). For example, the simulator 210 can determine a slope effect (e.g., Fslope) that a difference in orientation between the orientation of the user's character and a direction of slope of the virtual environment results in. The slope effect can be used to determine the movement of the character along the path. The step 510 can also include determining a drag force (e.g., Fdrag) based on a speed of the user's character. The drag force can be determined based on a coefficient or scaling factor that is determined empirically or adjusted for various courses or levels of difficulty of the virtual environment. The drag force can also be determined based on the speed of the user's character squared and a sign of the speed of the user's character.

The simulator 210 can determine the distance traveled by the user's character as described in greater detail above with reference to FIG. 3. For example, the acceleration, speed, or movement of the user's character can be based on the total propulsive force (e.g., Fpropulsive), the effect from the slope (e.g., Fslope), and the drag force (e.g., Fdrag). The speed of the user's character at a future or next timestep can be determined based on the speed of the user's character at a previous timestep, the acceleration of the user's character, and the length of the timestep. The distance traveled by the user's character across a timestep can be determined based on the speed of the user's character (e.g., at a current or previous timestep) and the length of the timestep.

The step 510 can include determining the heading and a time rate of change of heading of the user's character based on the center of pressure of the user on the force plate 142 in the X-direction, a coefficient, and a speed of the user's character. The heading can be determined, more specifically, based on the time rate of change of the heading and the length of the timestep. The step 510 can include moving the character in the heading direction the distance determined and operating the display screen 140 to show the user's character moving the distance in the heading direction.

The process 500 includes virtually elevating the character from a virtual ground surface based on the jumping effect (step 512), according to some embodiments. In some embodiments, step 512 includes operating the display screen 140, responsive to the user jumping from the force plate 142, to visually show the user's character rising from the ground surface in the virtual environment. The step 512 can be performed based on the amount of time that the force plate 142 is unloaded or a degree to which the force plate 142 is unloaded.

The process 500 includes determining an interaction between the character and at least one of the obstacles, uphills, downhills, ramps, or animals based on the steering effect and the propulsive effect (step 514), according to some embodiments. The interaction can include the affect of a slope upon the movement of the character (e.g., drag, back-sliding, gravity, etc.). The interaction can include a collision with the obstacle or animal, a jumping over the obstacle or animal (depending on the type of obstacle or animal), whether the character stops and must “scare” the animal away (e.g., a bear), whether the character is chased by an animal, etc. The interaction with the character and the virtual environment or features of the virtual environment can include adjusting a health score of the character (e.g., performed by the gamification manager 220).

The process 500 includes providing feedback to the user in response to the interaction (step 516), according to some embodiments. In some embodiments, the feedback provided to the user includes visual feedback (e.g., via the display screen 140), aural feedback (e.g., via the speaker 144), or haptic feedback. For example, if the character collides with an obstacle or animal, the controller 200 can operate the first motor 112 and the second motor 114 to provide vibrations or pulses of tension to the user via the first cable 118 and the second cable 120. The visual feedback can include real-time imagery provided to the user via the display screen 140, showing the user's character moving through the environment, performing various actions, tricks, jumps, movements, interactions with the environment, etc. The aural feedback can include sound effects, music, etc., to facilitate an immersive experience for the user.

The term “coupled” and variations thereof, as used herein, means the joining of two members directly or indirectly to one another. Such joining may be stationary (e.g., permanent or fixed) or moveable (e.g., removable or releasable). Such joining may be achieved with the two members coupled directly to each other, with the two members coupled to each other using a separate intervening member and any additional intermediate members coupled with one another, or with the two members coupled to each other using an intervening member that is integrally formed as a single unitary body with one of the two members. If “coupled” or variations thereof are modified by an additional term (e.g., directly coupled), the generic definition of “coupled” provided above is modified by the plain language meaning of the additional term (e.g., “directly coupled” means the joining of two members without any separate intervening member), resulting in a narrower definition than the generic definition of “coupled” provided above. Such coupling may be mechanical, electrical, or fluidic.

References herein to the positions of elements (e.g., “top,” “bottom,” “above,” “below”) are merely used to describe the orientation of various elements in the FIGURES. It should be noted that the orientation of various elements may differ according to other exemplary embodiments, and that such variations are intended to be encompassed by the present disclosure.

The hardware and data processing components used to implement the various processes, operations, illustrative logics, logical blocks, modules and circuits described in connection with the embodiments disclosed herein may be implemented or performed with a general purpose single- or multi-chip processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor may be a microprocessor, or, any conventional processor, controller, microcontroller, or state machine. A processor also may be implemented as a combination of computing devices, such as a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. In some embodiments, particular processes and methods may be performed by circuitry that is specific to a given function. The memory (e.g., memory, memory unit, storage device) may include one or more devices (e.g., RAM, ROM, Flash memory, hard disk storage) for storing data and/or computer code for completing or facilitating the various processes, layers and modules described in the present disclosure. The memory may be or include volatile memory or non-volatile memory, and may include database components, object code components, script components, or any other type of information structure for supporting the various activities and information structures described in the present disclosure. According to an exemplary embodiment, the memory is communicably connected to the processor via a processing circuit and includes computer code for executing (e.g., by the processing circuit or the processor) the one or more processes described herein.

The present disclosure contemplates methods, systems and program products on any machine-readable media for accomplishing various operations. The embodiments of the present disclosure may be implemented using existing computer processors, or by a special purpose computer processor for an appropriate system, incorporated for this or another purpose, or by a hardwired system. Embodiments within the scope of the present disclosure include program products comprising machine-readable media for carrying or having machine-executable instructions or data structures stored thereon. Such machine-readable media can be any available media that can be accessed by a general purpose or special purpose computer or other machine with a processor. By way of example, such machine-readable media can comprise RAM, ROM, EPROM, EEPROM, or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code in the form of machine-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer or other machine with a processor. Combinations of the above are also included within the scope of machine-readable media. Machine-executable instructions include, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing machines to perform a certain function or group of functions.

Although the figures and description may illustrate a specific order of method steps, the order of such steps may differ from what is depicted and described, unless specified differently above. Also, two or more steps may be performed concurrently or with partial concurrence, unless specified differently above. Such variation may depend, for example, on the software and hardware systems chosen and on designer choice. All such variations are within the scope of the disclosure. Likewise, software implementations of the described methods could be accomplished with standard programming techniques with rule-based logic and other logic to accomplish the various connection steps, processing steps, comparison steps, and decision steps.

Claims

What is claimed is:

1. An exercise apparatus, comprising:

a motor;

a cable coupled to the motor;

an exercise attachment coupled to the cable, wherein the motor is operable to exert force on the exercise attachment via the cable;

a display screen; and

a controller programmed to:

determine, based on feedback from the motor indicating detected movement of the exercise attachment, an amount of propulsion provided by a user;

simulate, based on a slope of a virtual environment and the amount of propulsion provided by the user, a movement of a character in a skiing setting;

generate a visualization of the virtual environment including the movement of the character; and

cause the display screen to display the visualization.

2. The exercise apparatus of claim 1, further comprising a force plate disposed in a base of the exercise apparatus, the force plate configured to be stood upon by the user, wherein the controller is programmed to:

obtain feedback from the force plate indicating a total load on the force plate and a center of pressure on the force plate;

determine, based on the center of pressure on the force plate, a direction of travel for the movement of the character; and

generate the visualization of the virtual environment including both the movement of the character and the direction of travel for the movement of the character.

3. The exercise apparatus of claim 1, wherein the controller is programmed to control the motor to exert a force on the cable, the force including a baseline tension and a damping force determined by the controller based on a damping constant and a speed of the cable.

4. The exercise apparatus of claim 1, wherein the controller is programmed to control a speaker to provide aural feedback to the user, the aural feedback comprising at least one of sound effects or music.

5. The exercise apparatus of claim 1, wherein the controller is programmed to control the motor to provide haptic feedback to the user via the cable and the exercise attachment.

6. The exercise apparatus of claim 1, wherein the cable is a first cable, the exercise attachment is a first exercise attachment, and the motor is a first motor, wherein the exercise apparatus further comprises a second cable, a second exercise attachment, and a second motor, wherein the controller is configured to determine the amount of propulsion based on feedback from both the first motor and the second motor via the first cable and the second cable.

7. The exercise apparatus of claim 1, further comprising a force plate disposed in a base of the exercise apparatus, the force plate configured to be stood upon by the user, wherein the controller is programmed to:

determine, based on feedback from the force plate, an amount of load exerted on the force plate;

detect an amount of time that the user jumps from the force plate based on the amount of load decreasing as the force plate is unloaded while the user jumps;

determine a jump for the character based on the amount of time that the user jumps from the force plate; and

cause the display to display the character performing the jump.

8. The exercise apparatus of claim 1, wherein the virtual environment comprises an obstacle, the controller programmed to simulate an interaction between the character and the obstacle in response to the user steering the character into the obstacle, wherein the character is limited from jumping over the obstacle.

9. The exercise apparatus of claim 1, wherein the virtual environment comprises an obstacle, the controller programmed to simulate the character jumping over the obstacle in response to the user steering the character into the obstacle and jumping on a force plate disposed in a base of the exercise apparatus, the force plate configured to be stood upon by the user and configured to measure a total load exerted on the force plate.

10. The exercise apparatus of claim 1, wherein the virtual environment comprises at least one of:

a small animal, the controller programmed to simulate the small animal moving across a path of the character, wherein the controller is further programmed to steer the character around the small animal or jump over the small animal in response to one or more user movements;

a pursuing animal or weather phenomenon, the controller programmed to simulate the pursuing animal or weather phenomenon chasing the character as the user moves the exercise attachment to provide the amount of propulsion; or

a predatory animal, the controller programmed to prompt the user to elevate the exercise attachment and maintain the exercise attachment at an elevated position in response to the predatory animal being proximate the character, the controller programmed to simulate the predatory animal leaving the character in response to the user maintaining the exercise attachment at the elevated position for a predetermined amount of time.

11. The exercise apparatus of claim 1, wherein the virtual environment comprises any of:

a wilderness course to simulate skiing in an environment comprising trees, rocks, sticks, and animals;

a backcountry course to simulate at least one of skiing in an environment with an avalanche, performing a herringbone climb to ascend a slope, performing a climb to ascend an ice wall, or skiing down a downhill tree course; or

a terrain park course to simulate at least one of skiing in a ski jump course, a giant slalom course, or snowboarding on a snowboarding course.

12. A method of simulating a skiing exercise on a skiing simulator, the method comprising:

generating a virtual environment;

determining a propulsive effect based on a movement of a first cable and a second cable operably coupled with a first motor and a second motor;

simulating movement of a character within the virtual environment based on the propulsive effect; and

operating a display screen of the skiing simulator to visually indicate the movement of the character within the virtual environment.

13. The method of claim 12, further comprising:

determining a jumping effect based on a total load exerted by the user on a force plate;

simulating elevation of the character from a virtual ground surface based on the jumping effect; and

operating the display screen of the skiing simulator to visually indicate the elevation of the character within the virtual environment.

14. The method of claim 12, further comprising:

operating the first motor and the second motor to exert a tension on the first cable and the second cable.

15. The method of claim 12, further comprising:

determining an interaction between the character and at least one feature of the virtual environment based on the steering effect and the propulsive effect; and

operating the display screen of the skiing simulator to visually indicate the interaction between the character and the at least one feature of the virtual environment.

16. The method of claim 12, further comprising:

determining a steering effect based on a center of gravity of a user on a force plate of the skiing simulator; and

simulating movement of a character within the virtual environment based on the steering effect and the propulsive effect;

wherein the propulsive effect is determined based on both the movement of the first cable and the second cable, and an orientation of the character relative to a direction of slope of a ground surface of the virtual environment.

17. An exercise apparatus, comprising:

a controller programmed to:

determine, based on feedback from a motor indicating detected movement of an exercise attachment operably coupled with the motor via a cable, an amount of propulsion provided by a user;

simulate, based on a slope of a virtual environment and the amount of propulsion provided by the user, a movement of a character in a skiing setting;

generate a visualization of a virtual environment including the movement of the character; and

cause a display screen to display the visualization.

18. The exercise apparatus of claim 17, wherein the controller is further programmed to:

obtain feedback from a force plate indicating a total load on the force plate and a center of pressure on the force plate as the user stands on the force plate;

determine, based on the center of pressure on the force plate, a direction of travel for the movement of the character; and

generate the visualization of the virtual environment including both the movement of the character and the direction of travel for the movement of the character.

19. The exercise apparatus of claim 17, wherein the controller is further programmed to:

determine, based on feedback from a force plate, an amount of load exerted on the force plate;

detect an amount of time that the user jumps from the force plate based on the amount of load decreasing as the force plate is unloaded while the user jumps;

determine a jump for the character based on the amount of time that the user jumps from the force plate; and

cause the display to display the character performing the jump.

20. The exercise apparatus of claim 17, wherein the virtual environment comprises an obstacle, the controller programmed to simulate the character jumping over the obstacle in response to the user steering the character into the obstacle and jumping on a force plate disposed in a base of the exercise apparatus.

Resources

Images & Drawings included:

Processing data... This is fresh patent application, images and drawings will be added soon.

Sources:

Recent applications in this class:

Recent applications for this Assignee: