Aspects of the present disclosure involve a bicycle trainer providing various features including portability, levelability, height adjustment, power measurement, and controllability through a software interface executed by a smart device or tablet, among other features and advantages.
Focused training for an important race, busy schedules, bad weather and other factors inspire bicycle riders to train indoors. Numerous indoor training options exist including exercise bicycles and trainers. An exercise bicycle looks similar to a bicycle but without wheels, and includes a seat, handlebars, pedals, crank arms, a drive sprocket and chain. An indoor trainer, in contrast, is a mechanism that allows the rider to mount an actual bicycle to the trainer, with or without the rear wheel, and then ride the bicycle indoors. The trainer provides the resistance and supports the bicycle but otherwise is a simpler mechanism than a complete exercise bicycle. Such trainers allow the user to train using their own bicycle, and are typically smaller than full exercise bicycles.
While useful, conventional trainers nonetheless suffer from several drawbacks. For example, it is often difficult to level conventional trainers from side to side, or front to back. Riding a slightly tilted bicycle is uncomfortable and can cause unintended damage to the bicycle. Similarly, many riders prefer that their bicycle be level fore and aft so that it feels like the rider is training on a flat surface as opposed to an incline or decline. Most conventional trainers, however, cannot be vertically adjusted so the person places boards, books, or the like under the trainer to elevate the entire trainer, or under the front wheels to elevate the front of the bicycle. Conventional trainers are also typically designed for one size wheel and one size axle. For example, many trainers are designed for a bicycle with a conventional 26 inch wheel, relatively newer but increasingly popular 29 inch mountain bike wheels, and even more recent 700c wheel sizes. However, conventional trainers are meant for only one size bicycle tire and thus a rider would need to have a separate trainer or use boards or the like to elevate the entire trainer if, for example, the user wanted to use a 26 inch trainer with a 29 inch mountain bike.
Many trainers are portable based on the simple fact that they are relatively small. Such trainers are nonetheless heavy, can be awkward to load into car trunks, and can still occupy substantial space when not in use. Portability, however, is important as some users may want to store their trainer when not in use and some users may take their trainer to races and the like in order to warm-up before a race and cool-down afterward.
Finally, fitness training using a power meter, particularly for bicyclists, is increasingly popular. Power meters measure and display the rider's power output (typically displayed in Watts) used for pedaling. Power meters of many different sorts have been adapted for use on bicycles, exercise bicycles and other fitness equipment. Many of these designs, however, are overly complicated, prone to error, and/or prone to failure, and also tend to be relatively expensive.
While bicycle fitness training using a power meter continues to grow in popularity, many bicycle fitness trainers cannot provide a consistent workout, are closed platforms so that they cannot operate with peripheral devices, and cannot be controlled wirelessly. In addition, many bicycle fitness trainers use rollers that the rear wheel engages and rolls on. There is often a high degree of friction, and a relatively large amount of torque for the rider to overcome. The friction tends to impart wear and tear on the tire, hub, bearings, and other components. Additionally, since there is almost always some amount of torque for the rider to overcome, the rider cannot coast and the fitness trainer will slow down the rear wheel relatively quickly compared to normal riding. Using conventional trainers, the riding experience does not feel like a real outdoor ride because there is very little inertia and too much torque. As an example, even if a rider is moving slowly, the rider often feels as if they are riding in sand on the beach. Additionally, conventional bicycle fitness trainers suffer because the riding is affected by air pressure within bicycle tires which is highly variable and based on temperature. The tire pressure level affects the resistance between the tire and the rollers.
In the meantime, smartphone and tablet usage and popularity has soared in recent years. Users of smartphones and tablets have access to a portable device that is capable of communicating with other devices, capable of executing applications, and capable of sending and receiving information with other devices. Smartphones are owned by more than half of American adults and may be carried in a pocket or purse. In addition, smartphones may be more powerful and easier to use than many desktop computers. Thus, smartphone users have ubiquitous access to a relatively powerful, and intuitive computing device which may be held in the palm of a hand.
When purchased, smartphones may come with a number of applications installed. In addition, hundreds of thousands of applications are also available for download and installation. The applications are produced by large companies as well as individual developers. These downloadable applications are available for free or a small price and extend the abilities of the smartphone. For example, a smartphone can be used to make a traditional phone call using a telephone app, send a text or media message using a messaging app, play music by executing a music application, obtain weather information by executing a weather application, obtain news by executing a news application, play a game by executing a game application, provide turn-by-turn navigation assistance by executing a GPS application, and plot out a run on a map by executing a fitness application. New applications are released on a daily basis for download. Accordingly, smartphones may be used in entirely different and new ways by downloading and executing the ever-growing library of available applications. In addition, smartphones are even more useful because many of these downloadable applications are also capable of communicating and interfacing with other hardware devices such as portable speakers, heart rate monitors, glucose meters, wireless scales, and fitness devices.
With these thoughts in mind among others, aspects disclosed herein were conceived.
Briefly described, and according to one embodiment, aspects of the present disclosure generally relate to systems and methods for controlling and operating a bicycle trainer using a computing device. According to one embodiment, the computing device communicates variables to the bicycle trainer using an application programming interface (API). The variables are used by the bicycle trainer to control an electromagnetic brake assembly and simulate a bicycle ride based on the riding mode. In addition, the bicycle trainer communicates variables to the computing device using the API to display realtime bicycle ride information on the computing device.
In one aspect, an exercise device comprises a memory having computer-executable instructions and at least one processor to execute the computer-executable instructions to wirelessly connect the exercise device, receive a training mode, receive at least one variable for determining a power set point, determine the power set point responsive to the training mode and the at least one variable and control a magnetic brake assembly in the exercise device responsive to the power set point
These and other aspects, features, and benefits of the present disclosure will become apparent from the following detailed written description of the preferred embodiments and aspects taken in conjunction with the following drawings, although variations and modifications thereto may be effected without departing from the spirit and scope of the novel concepts of the disclosure.
Example embodiments are illustrated in referenced figures of the drawings. It is intended that the embodiments and figures disclosed herein are to be considered illustrative rather than limiting.
Aspects of the present disclosure involve a bicycle trainer that provides several advantages over conventional designs. The trainer includes a vertically adjustable rear axle and cassette (rear bicycle gears) where the user mounts her bicycle to the trainer. Generally speaking, the user removes her rear wheel from the drop outs at the rear of the bicycle (not shown) and then connects the rear axle and cassette of the trainer to the drop outs in the same manner that the rear wheel would be coupled to the bicycle. Additionally, the trainer is configured with a reversible spacer that allows for mounting bicycles, such as mountain bicycles and road bicycles, with different width rear wheels and attendant frame or hub spacing.
The cassette is coupled to a pulley that drives a belt connected to a flywheel or other resistance mechanism such that when the user is exercising, her pedaling motion drives the flywheel. The flywheel includes an electromagnetic brake that is controllable. Further, torque imparted on the flywheel by a rider pedaling a bicycle mounted on the trainer, is measured at a bracket interconnecting a portion of the flywheel with a stationary portion of the frame. Based on power measurements, RPM, heart rate and other factors, the magnetic brake may be controlled. Control of the trainer, and display of numerous possible features (power, RPM, terrain, video, user profile, heart-rate, etc.) may be provided through a dedicated device or through a smart phone, tablet or the like, running a software application (“app”) configured to communicate with the trainer.
According to an example embodiment, a device, such as the smartphone or tablet running the app, connects with the bicycle trainer using an application programming interface (API) also known as a framework. The framework is bundled within the app and loaded into memory as needed by the smartphone or tablet. The framework may include shared resources such as a dynamic shared library, interface files, image files, header files, and reference documentation all within a single package. The API is made publically available for download to software developers to use to develop apps for use with the bicycle trainer. As an example, software developers may add the framework to a third party app which provides a user interface for interacting with the bicycle trainer, and upload the app to a repository of apps to be downloaded by smartphone users. The app may be executed by a user's smartphone and communicate with the bicycle trainer using a wireless interface. The app may be used to select and control a mode of operation for the bicycle trainer and provide visual feedback regarding bicycle rides on a display of the smartphone. The apps may also be used as an interface to select power based fitness training, interact or simulate recorded actual rides, simulate hill climbing and descending, and input desired ride variables such as grade, wind, rider weight and bike weight, etc. Accordingly, the framework will allow the bicycle trainer to interface with a variety of different first-party and third-party apps such as bicycle training apps, bicycle ride tracking apps, map apps, multiplayer synchronous game-type apps, asynchronous game apps, course leaderboard apps, course simulation apps, GPS-type apps, etc. Stated differently, the API turns the trainer into an open platform that third parties may use to develop apps to control and obtain information from the trainer.
Now referring to the trainer itself and
Distal the first and second pivotal connections with the bracket 14, first and second pads 22, 24 are coupled at the outer end of each of the respective first and second legs 18, 20. Additionally, an elongate pad 23 is coupled to a bottom side of the bracket 14. Each pad 22, 24 and leg 18, 20 functions in the same manner so the first pad 22 at the outer end of the first leg 18 is discussed in detail. Referring to
A main frame member 28 extends vertically and rearwardly from the mounting bracket 14. The plane in which the main frame member 28 pivots is oriented at about a right angle relative to the plane in which the legs pivot. Accordingly, in one possible implementation, a bubble level 30 (shown in
Referring to
Referring to
A height adjustment bracket 50, as seen up-close in
Other mechanisms are also possible to secure the bracket 50 to the center leg 12, as well as to elevate the center leg 12. For example, a telescoping vertical member pivotally coupled with the main frame member 28 might be used to adjust the height of the main member 28 and fix the height at a certain location by fixing the amount of telescoping. The height adjustment bracket 50 might include one or a pair of pop pins 37 to secure the u-bracket relative to the apertures in the center leg.
Turning now to mounting a bicycle to the trainer 10, and referring to
Referring still to
As introduced above, the main frame member 28 supports the flywheel assembly 68. Unlike conventional flywheel assemblies, the present assembly 68 is particularly configured to allow for power measurement. Generally speaking, the trainer 10 determines the amount of power being expended by the rider while pedaling by measuring the torque on a member of the flywheel assembly 68. Torque may be measured through a strain gauge 70 mounted on the member, and the torque on the member may be translated into a wattage measurement reflective of the amount of power expended by the rider.
More particularly and referencing
A belt tensioner assembly 78 is mounted on the main frame 28 and is used to mount and remove the belt 76 to and from the pulleys 16, 74, and also to adjust the tension of the belt 76 for proper function. The belt tensioner bracket 80 is generally L-shaped and supports a tensioner wheel 82 on the end of a longer side of the bracket. The belt 76 is positioned around the tensioner wheel 82, and by adjusting the tensioner wheel 82 fore and aft, the tension on the belt 76 can be increased or decreased. Adjacent the tensioner wheel 82, the bracket 80 defines an elongate aperture 84 through which is positioned a locking bolt 86 mounted to the main frame 28. When the bracket 80 and tensioner wheel 82 are positioned in the appropriate fore/aft position, the bolt 86 is tightened thereby locking the bracket 80 and wheel 82 in place. Finally, on a short portion of the bracket 80, an adjustment screw 88 is connected with a front face of the main frame 28 and through a threaded adjustment aperture in the short portion of the bracket 80. While the bolt 86 is loosened, the adjustment screw 88 may be used to move the bracket 80 fore or aft.
The flywheel member 48 is fabricated partially or wholly with a ferrous material or other magnetic material. The fixed internal components of the flywheel assembly 68 may include a plurality of electromagnetic members 105 mounted on a core 92, and provide a magnetic flywheel brake. In some arrangements, the magnetic brake may be computer controlled thereby dynamically adjusting the braking force to simulate any possible riding profile. In the illustrated example, the core 92 defines six T-shaped portions 94 extending radially from an annular main body. A conductor 98, such as copper wiring, is wound around a neck of the T-shaped portions 94 between the upper portion of the T and the annual or core 92. The wire may be continuous so that a consistent current flows around each T-shaped portion 94, core 92; and a consistent and electromagnet force is generated uniformly around the core 92. Collectively, the T-shaped portions 94 and wound wiring can generate a magnetic field that magnetically couples with the flywheel member 48. The trainer includes a processor 100 and associated electronics that allow for the control of a current through the wires thereby inducing a controllable magnetic field from the T-shaped portions 94. Since the flywheel member 48 is magnetic, by varying the strength of the magnetic fields, the amount of braking force resisting rotation of the flywheel 48 may also be varied.
Turning now more specifically to the mechanisms by which power is measured, the various rotationally fixed portions of the flywheel assembly 68 are connected directly, or indirectly, to a mounting plate 102 adjacent the main member 28. The mounting plate 102 is rotatably mounted to a tubular member supported by the main frame member 28. The flywheel axle 72 extends through the center of the tubular member; therefore, the flywheel member 48 is coaxial with the mounting plate 102. While the mounting plate 102 is rotationally mounted, it is rotationally fixed by a torque bracket 106 connected between the main frame member 28 and the mounting plate 102. Generally speaking, a strain gauge assembly 70 is mounted on the torque bracket 106. Because the torque bracket 106 couples the main frame member 28 to the mounting plate 102, when rotational forces are transferred between the flywheel member 48 and the rotationally fixed components (e.g., magnets) 105, those forces exert a torque on the torque bracket 106 which is detected by the strain gauge assembly 70. Without the torque bracket 106, the entire flywheel assembly 68 would rotate about the flywheel axle 72 rather than only the external flywheel member 48 that is fixed to the flywheel axle 72. Thus, the pedaling force exerted by the rider translates through the flywheel assembly 68 and is measured at the torque bracket 106 that resists the rotational torque exerted on the flywheel 48.
More specifically and referring primarily to
In one particular implementation, a display 110 is wirelessly coupled with a processor 100 that receives the strain gauge 70 measurement and calculates power. The display 110 may wirelessly receive power data and display a power value. The display 110, being wireless, may be mounted anywhere desirable, such as on a handlebar. The display 110 may also be incorporated in a wrist watch or cycling computer. The power data may also be transmitted to other devices, such as a smart phone, tablet, laptop, and other computing device for real-time display and/or storage. The display 110 and device that receives the strain gauge measurement and calculates power are discussed further in detail herein and is shown in
In the example implementation shown herein, a power measurement device (e.g., processor 100) is mounted on an inner wall of the brake assembly portion of the flywheel 48. Alternatively, the power measurement device along with other electronics may be mounted within a cap 114 at the top of the mainframe member 28. The power measurement device may include a housing within which various power measurement, and other electronics are provided, including a Wheatstone bridge circuit 118 that is connected with the strain gauge assembly 120 on the torque bracket 106, and produces an output voltage proportional to the torque applied to the bracket 106. The output is sent to a processor 100, such as through wires or wirelessly, that is mounted within the end cap 114 or as part of the power measurement device, or otherwise. In various possible other implementations, the housing and/or the strain gauge assembly 120 may also be secured to other portions of the torque arm 106. The strain gauge assembly 120 may involve one or more, such as four, discrete strain gauges 70. When compression tension forces are applied to the gauges 70 the resistance changes. When connected in a Wheatstone circuit 118 or other circuit, a voltage value or other value proportional to the torque on the bracket 106 is produced.
Within the recessed portion of the torque arm 106, one or more strain gauges 70 may be provided. Generally speaking, the torque member 106 will be stretched to varying degrees under correspondingly varying forces. The strain gauges 70 elongate accordingly and the elongation is measured and converted into a power measurement. In one particular implementation, the strain gauges 70 are glued to a smooth flat portion of the torque member 106, such as the machined area 122. While a machined or otherwise provided recess 122 is shown, the power measurement apparatus may be applied to a bracket with little or no preprocessing of the bracket. The machined portion 122 helps protect the strain gauge from inadvertent contact and amplifies the strain measurement. The machined recess 122 is provided with a smooth flat bottom upon which the strain gauges 70 are secured. To assist with consistency between torque members 106 and thereby assist in manufacturing, a template may be used to apply the strain gauge 70 to the surface within the machined recess 122. Alternatively, the strain gauge 70 may be pre-mounted on a substrate in a desired configuration, and the substrate mounted to the surface. The side walls of the machined recess 122 also provide a convenient way to locate the housing.
A main frame member 28 extends upwardly and rearwardly from the pivot mount bracket 14. Adjacent to the main frame member 28, a center leg 12 extends rearwardly from the main frame member 28. A pulley 16, rotatably mounted to the main frame 28 and to which an axle 44 and cassette 46 are coupled, is positioned above and in generally the same plane as the center leg 12. Therefore, when the bicycle is mounted on the axle 44 and its chain is placed around the cassette 46, the bicycle is positioned generally along the center of the trainer 10 which falls between the main frame 28 and center leg 12.
To adjust the height of the main member 28 and thereby adjust the height of the rear of any bicycle connected with the trainer 10, a height adjustment bracket 50 is pivotally mounted with the main member 28 and adjustably connected with the center leg 12. More particularly, the adjustment bracket 50 may be pinned at various locations along the length of the center leg 12, the further forward the bracket is pinned, the higher the main member 28 and the further rearward the bracket 50 is pinned, the lower the main member 28.
The trainer 10 may include a handle member 124 coupled with a front wall of the main member. A user may use the handle 124 to transport or otherwise lift and move the trainer 10. In the example shown, the handle 124 is bolted to the main member 28 at either end of the handle. Other handle forms are possible, such as a T-shaped member, an L-shaped member bolted at only one end to the main frame, a pair of smaller handles on either side of the main member as opposed to on the front facing wall of the main member as shown, a pair of bulbous protrusions extending from the sides of the main member and/or the front face of the main member 28, among others.
A generally triangular cover 126 is positioned over the belt 76, belt tensioner 78, flywheel axle 72, flywheel pulley 74, and other adjacent components, in an area between the pulley 16 and the flywheel pulley 74 at the flywheel axle 72. The cover 126 may be composed of a left side and right side that are bolted together. In one example, the left side (shown in
Referring now specifically to
The torque bracket 106 defines an aperture at one end, through which a pin 108 extends into the main member 28. A bushing 109 may also be press fit into the aperture with the pin 108 extending through the bushing 109. Two bolts secure the torque bracket 106 to the mounting plate 102. The bracket 106 necks down between the ends. The deflection of the torque bracket 106 is thus focused at the neck 111. Thus, the strain gauges 70 may be positioned on a flat surface of the necked area, as best shown in
Referring to
Referring now also to
“Power” is the most common measurement of a rider's strength. With measured torque multiplied by the Rad/Sec value (RPM), power is calculated. In one example, the torque measurement and RPM measurements are communicated to a processor 100, and power is calculated. Power values may then be wirelessly transmitted to a second processor 138, coupled with a display 110 providing a user interface 140, using the ANT+® protocol developed by Dynastream Innovations, Inc. The transmitter may be a discrete component coupled with the processor 100 within the housing 116 at the top of the main member 28. The ANT+® protocol in its current iteration is unidirectional. Thus, power measurement and other data may be transmitted using the wireless ANT+® protocol.
Other protocols and wireless transmission mechanisms may also be employed. In one specific example, the processor 100 is configured to communicate over a BLUETOOTH® connection. For example, a smart phone, tablet or other device that communicates over a BLUETOOTH® connection may receive data, such as power data and RPM data, from the processor 100, and may also transmit control data to the processor 100. For example, a smart phone running a bicycle training app may provide several settings. In one example, a rider, interacting through the user interface 140, may select a power level for a particular training ride. This is known as “standard mode” which is discussed further below. The power level is associated with a power curve associated with RPM measurements of the trainer. As the rider uses the trainer 10, RPM and power measurements are transmitted to the computing device, and the app compares those values to the power level and transmits a brake control signal based on the comparison. So, for example, if the rider is generating more power than called for by the setting, the app will send a display signal to change cadence (RPM) and/or send a signal used by the processor 100 to reduce the braking force applied to the flywheel 48, with either change or both, causing the power output of the rider to be reduced. The app will continue to sample data and provide control signals for the rider to maintain the set level.
In another example, the trainer 10 can be programmed to maintain a set power value. This is known as “ergometer mode” which is discussed further below. Thus, when a rider exceeds the set power value, a control signal from the first processor 100 to the second processor 138 increases magnetic braking. Conversely, when the rider is falling below the set power value, the first processor 100 directs the second processor 138 to decrease braking power. These and other examples uses may be realized by apps or other applications developed for the device. Thus, as noted above and further detailed below, the main (first processor and memory) may provide an application programming interface (API) to which connected devices, such as smart phones and tablets running apps, may pass data, commands, and other information to the device in order to control power, among other attributes of the trainer 10. Since conventional trainers do not have integrated torque and power measurement capability in conjunction with mechanisms to automatically control a magnetic brake, the device opens up countless opportunities to customize control of the trainer 10, provide power based fitness training, interact or simulate recorded actual rides, simulate hill climbing and descending, coordinate the trainer 10 with graphical information such as speed changes, elevations changes, wind changes, rider weight and bike weight, etc.
The bicycle trainer 1902 includes a strain gauge 70, a microprocessor 100 and an electromagnet braking system 1914. As discussed herein, the strain gauges measure the torque applied by the person pedaling the bicycle and that torque measurement may be converted to a power measurement. The electromagnetic braking system is controlled by the microprocessor or other components and imparts a braking resistance on the flywheel, which in turn is felt by the person using the trainer and can be used alone, in a feedback loop or otherwise in conjunction with the measured power generated by the person using the trainer. The electromagnet braking system 1914 may be at least one twelve volt electromagnet which may be variably controlled between zero and twelve volts to produce a lesser to larger electromagnetic braking force. The electromagnets generate braking forces based on the equations disclosed herein.
The microprocessor 100 communicates with the computing device 1904 using wireless protocols including ANT+® and BLUETOOTH® as noted above. The bicycle trainer may thus include an ANT+® radio 1906 and/or a BLUETOOTH® radio 1908 in communication with the microprocessor 100. The ANT+® radio and the BLUETOOTH® radio report a variety of real-time and historical information to the computing device 1904, such as speed (revolution per minute (RPM) of the flywheel), current power as measured by the strain gauges, etc. Similarly, the microprocessor 100 may receive information from the computing device 1904 using a wireless protocol. While the embodiment discussed herein uses a wireless protocol to communicate with the external computing device, it is also possible to use a wired connection or other forms of wireless protocols. The trainer 1902 further includes a memory 1910 in the form of a hard disk which may be flash-based, a memory stick, and the like, as well as RAM, ROM and other forms of memory. This memory 1910 may store trainer firmware which is updatable and a physics engine defined by equations for simulating a bicycle ride. Variables for the equations may be temporarily stored in the memory 1910. This physics engine and variables are discussed further below. In addition, the computing device includes memory 1912 in the form of a hard disk which may be flash-based, a memory stick, and the like, as well as RAM, ROM and other forms of memory. This memory 1912 may store an application to control and operate the trainer 1902 in addition to other data.
ANT+® allows a single computing device to communicate with a plurality of bicycle trainers. Accordingly, ANT+® may be used in a gym environment. As an example, a gym may have ten bicycle trainers and a gym member may use a different bicycle trainer for a current workout from a previous workout because the bicycle trainer used during the previous workout may be occupied. In other words, the gym member is not limited to using the same bicycle trainer for each workout. In addition, at the gym a bicycle class organizer could setup a plurality of bicycle trainers for the class so that they provide a similar workout for the entire class, and the use of the ANT+® protocol would allow simultaneous communication and control of many trainers by the instructor. While there are benefits of using ANT+®, ANT+® also has drawbacks. As one example, with ANT+® it is possible that more than one user could pair with the same bicycle trainer. This could result in a problem and in certain instances use of BLUETOOTH® may be more desirable.
In contrast to ANT+®, BLUETOOTH® is a one-to-one wireless protocol. This serves as a limit, but it can also be beneficial. This means that each BLUETOOTH® device such as the bicycle trainer 1902 advertises that it is pairable with another device such as the computing device 1904 only until it is paired. A BLUETOOTH® device such as the bicycle trainer 1902 will send radio signals requesting a response from any device with an address in a particular range. In other words, once a bicycle trainer 1902 is paired with a computing device 1904, it will be paired with that computing device and cannot be paired with another computing device until the bicycle trainer 1902 is unpaired. BLUETOOTH® may be a suitable protocol for a home gym experience because a computing device 1904 such as a smartphone will be paired with a specific bicycle trainer.
According to an example embodiment, the computing device 1904 may execute an app providing a user interface (110/140) for the bicycle trainer 1902. The computing device 1904 and the bicycle trainer 1902 will establish and use a wireless communication protocol such as ANT+® or BLUETOOTH®. The user interface within the app will allow a user to set values for static variables as well as dynamic variables, which individually, collectively and/or in combination, are used to control electromagnetic braking for the bicycle trainer 1902. Hence, through various possible values, the training experience may be customized and controlled to provide a variety of different experiences for the user. Moreover, app developers, through the API, can create apps to provide such unique experiences. The control of such variables may be done in conjunction with rider feedback, such as the amount of power the rider is using, the cadence of the rider, and other factors. Some values may be preset, and some values may be adjusted by the app or trainer, depending on the type of application executing, the exercise mode, and the like. While discussed herein with reference to an app running on a smart phone to provide control and display functions for the trainer, it is possible for the trainer to include a processor, display and other components to provide command, control and display functions, alone or in combination with one or more external devices 1904. It is also possible to use wired connections to smart phones, tablets, personal computers or other devices for command, control and display functions. Returning to the example of
The static and dynamic variables are used to control electromagnetic resistance in the bicycle trainer 1902 based on the following equation. This equation defines a physics engine for simulating a bicycle ride.
Force(total)=(Force(rolling resistance)+Force(slope)+Force(acceleration)+Force(wind resistance))/drivetrain efficiency
In other words, the force that resists (or assists) the motion of the bicycle is the sum of the force to overcome rolling friction (rolling resistance), the force to overcome aerodynamic drag friction, the force needed to accelerate, and the force related to slope or grade.
The static variables that may be set in an app on the computing device 1904 may include a weight of a rider, a coefficient of rolling resistance, a coefficient of wind resistance, a frontal area, and an air density. The coefficient of rolling resistance is based upon frictional forces related to bicycle tire tread, wheel diameter, air pressure of bicycle tires, and surface type. A typical coefficient of rolling resistance for typical bicycle tires and surfaces may range between 0.0015 and 0.015. The coefficient of wind resistance is based on the friction of air as the air passes over the rider and bicycle. A typical coefficient of wind resistance for a bicycle and its rider may range between 0.5 and 1.0. Frontal area is based on a bicycle type (mountain, road, etc.) and a girth and height of the rider. Air density is based on altitude, as well as temperature and humidity. These static variables may be set individually by a user or may be preset in an app, and such preset values may be associated with different riding modes, different simulated experiences, different bicycles, a customized setting for a specific user, and the like. Some or all of the values may also be established directly by the trainer.
In one specific example, some of the static variables are set when a user first opens an app and may also be initialized when a workout is initiated and/or when a riding mode is selected and remain constant until a new riding mode is selected or they are individually updated. These static variables may be stored in memory within an app and based on user entered information such as a particular bicycle type, a wheel size, and a rider profile which includes the rider's height and weight. As an example, a mountain bicycle will weigh more, and produce more drag than a road bicycle. A mountain bicycle may also have larger tires with a thicker tread than a road bicycle, and as a result, provide a higher coefficient of rolling resistance. In addition, a larger rider will weigh more, and produce more aerodynamic drag than a smaller rider. Using the information entered by the user, the app accesses a coefficient of rolling resistance, a coefficient of wind resistance, and a frontal area. As an example, using the app, a user can select a bicycle type, and pre-determined coefficients for the bicycle type are automatically used (e.g., rolling resistance and wind resistance). In other words, the app can store and use pre-determined coefficients in memory associated with the app or the user can use the app to enter the coefficients.
Some of the static variables may be modified during a ride. As an example, the coefficient of rolling resistance may be modified and come into play when the mode is set to be simulation mode, and may change in real-time if a simulated riding surface were to change from smooth pavement to a dirt road. For example, a rider may choose a simulation of a ride which includes a portion on a road in a city and then transitions to another portion on a bicycle trail which includes a stretch of dirt road. As the simulation progresses, the coefficient of rolling resistance may begin at a lower value during the road portion of the ride and as the rider moves onto the stretch of dirt road, the coefficient of rolling resistance will increase. Accordingly, the microprocessor will received the static variable change and will cause an increase in electromagnetic braking thereby causing the rider to pedal harder (in the same gear) and/or faster (in a smaller gear) to continue at a same velocity.
According to an example embodiment, dynamic variables may include speed, power, grade, and wind speed. Speed and power are based on the rider's pedaling input measured by the bicycle trainer 1902 as cadence and power, and are updated as the bicycle trainer is being used by the rider. Speed and power may be used locally at the microprocessor and may also be communicated to the computing device 1904. Grade and wind speed may be set using the computing device 1904 based on rider input such as a riding mode and desired ride settings, and updated by the app automatically. In addition, grade and wind speed also may be manually input by the rider. In one specific implementation, the computing device 1904 will communicate an initial value for grade and wind speed and all changes to the grade and wind speed to the bicycle trainer 1902 using the API 1905.
As a result, using the physics engine, the bicycle trainer 1902 will continually determine a power set point, which translates to an amount of electromagnetic braking, based on the static variables, dynamic variables, and instantaneous speed of the rider. At a same time, the bicycle trainer 1905 will measure and calculate an instantaneous power output of the rider, which power may also be used to calculate the power set point. According to an example embodiment, the bicycle trainer 1902, and specifically the microprocessor, will continually adjust a PWM signal delivered to the electromagnetic braking system at a rate of 64 Hz. The PWM signal adjustment controlling the electromagnetic braking is based on instantaneous power and speed provided by the rider and the power set point which is determined based on the static variables, grade, and wind speed communicated from the computing device 1904. The bicycle trainer 1902 will measure instantaneous flywheel speed based on how fast the rider is pedaling and calculate the power the rider is using to pedal based on torque applied at the flywheel 48 and compare the measurements with the power set point based on the static and dynamic variables to determine if more or less electromagnetic braking is required. This continual adjustment of the electromagnetic braking is accomplished using firmware stored within the bicycle trainer memory 1910. The bicycle trainer firmware uses a Proportional, Integral, and Derivative (PID) flywheel brake controller 1907 as shown in
In short, the dynamic variables which are set using the computing device 1904 are updated on an as needed basis and may frequently change during a workout. As an example, the grade of a bicycle path and a wind speed may be constantly changing throughout a workout as a user rides on a windy, hilly, simulated course. Thus, the bicycle trainer 1902 will continually update a power set point based on the variables received from the computing device 1904 and the instantaneous speed of the rider based on the rider's pedaling of the bicycle trainer 1902. The bicycle trainer 1902 is able to control the feel of a ride through electromagnetic resistance to simulate a windy hill climb by increasing the electromagnetic resistance (and then reducing the electromagnetic resistance when descending the hill or experiencing a strong tail wind).
As an example, a rider can be traveling at a set speed up a simulated hill that suddenly gets steeper. The bicycle trainer 1902 will calculate a theoretical power output of the rider using the physics engine, dynamic variables, static variables, and instantaneous speed. This is the instantaneous power set point. If the instantaneous power does not match the instantaneous power set point, the bicycle trainer 1902 will adjust the resistance until a match is achieved. The adjustment of the resistance may be executed over a two-three second time span, or any other pre-determined appropriate time span. If the rider is unable to maintain a power output, the rider's speed will drop, and the instantaneous power set point will also drop. If the rider's power output is higher than the power set point, the rider's speed will rise and the instantaneous power set point will also rise. Thus, the bicycle trainer 1902 provides the rider with an experience that they would have on an actual bicycle ride.
According to an example embodiment, the API 1905 provides a bridge or interface between the app executing on the computing device 1904 and the bicycle trainer 1902. The API is distributed as the framework, which provides a convenient means of packaging headers and binaries into a single logical unit. As the framework is static, libraries may be linked into an application build. The framework need not be installed on the computing device 1904, but rather is linked and compiled into a final application binary.
As a general notion, the API 1905 is the mechanism through which various possible static and dynamic variables described above may be transmitted from the computing device 1904 to the trainer 1902 in order to control the electromagnetic resistance of the flywheel 48. The bicycle trainer 1902 may calculate cadence (RPM) and a current velocity based on rider pedal input received by the bicycle trainer 1902 and maintain or alter the electromagnetic resistance based on the power set point. Using the cadence, speed of the rider, and current electromagnetic resistance of the flywheel 48, the bicycle trainer 1902 is able to communicate a current rider power in watts to the computing device 1904 using the API 1905. The cadence, speed of the rider, and current rider power in watts may be displayed within user interface of the app 140 in addition to a variety of other information as described below.
According to an example embodiment, the API or framework 1905 may be downloaded from a publicly available website. After downloading the API 1905 from the website, an application developer can import the framework 1905 into an application by using an integrated development environment (IDE) such as XCODE®. XCODE® includes a plurality of software development tools which have been developed by APPLE® for developing software for the MAC® and iOS® devices. The API 1905 is not limited to use with MAC® and iOS® devices. As an example, the API 1905 may provide an interface between the bicycle trainer 1902 and iOS® devices, ANDROID® devices, WINDOWS® devices, and other similar computing devices. Furthermore, the IDE is not limited to XCODE® and can include other IDEs such as ECLIPSE®, etc.
According to an example embodiment, a primary class of the API 1905 is WFHardwareConnector. As an example, this class enables a developer using a Mac to write an app to configure the bicycle trainer 1902 via the computing device 1904 and retrieve data from available ANT+® and BLUETOOTH® sensors within the bicycle trainer 1902 using the framework or API 1905. The API 1905 may include mirrored functionality and identical command sets for both BLUETOOTH® and ANT+®. The functionality included in the framework 2002 may be used to communicate static and dynamic variables to the bicycle trainer 1902 in order to update a power set point in the bicycle trainer 1902 based on rider input and settings within the app executing on the computing device 1904. In addition, the functionality included in the framework may be used to communicate real-time rider data including power and speed from the bicycle trainer 1902 to the app to be displayed on the computing device 1904.
Example source code for displaying real-time rider data from the bicycle trainer 1902 on the computing device 1904 is provided below. Included below is an example header file as well as an example implementation file.
The source code provided above is a “view” part of an example app which is based on the model-view-controller software architecture pattern. In other words, the example code is used to generate a view, or dynamic output representation of data to be displayed as a user interface 140 on the computing device 1904 using data obtained from the bicycle trainer 1902. The updateData method in the source code provided above is called more than once a second while the app is being executed on the computing device 1904 and is used to obtain updated real-time data from the bicycle trainer 1902 using the bikePowerConnection object.
First, the updateData method includes code to instantiate and populate data fields of the bikePowerConnection with power data from the bicycle trainer 1902 which is based on the power that the rider is using to pedal.
Next, the updateData method includes code which is used to read the data fields of from the bikePowerConnection object. An instantaneous power of the rider is read using bpData.instantPower, an instantaneous cadence of the rider is read using bpData.instantCadence, and a current speed of the rider is read using instantWheelRPM*hardwareConnector.settings.bikeWheelCircumference. As noted above, the strain gauge member 70 (torque member) is mounted on the member between the trainer frame and electromagnetic brake and measures the force (torque) applied to that member when the rider is pedaling. This force due to the motion constraint represents the torque and is used to calculate the power the rider is using to pedal. Also as noted above, revolution per minute (RPM) of the rear wheel is measured at the pulley 16, such as through an optical sensor 136 and an alternative black and white pattern on the pulley 16. Instantaneous speed is based on the revolution per minute (RPM) of the flywheel 48. In short, the trainer 1902 measures the instantaneous speed (how fast the rider is pedaling) based on the RPM of the flywheel 48, the instantaneous cadence (the number of revolutions of the crank per minute), and calculates the power the rider is using to pedal based on torque applied at the flywheel 48 and the instantaneous speed.
The updateData method also includes code to format and display the data obtained from the bicycle trainer 1902 via the API 2002 on the display 110 of the computing device 1904 using UILabels. Based on the understanding of the framework 2002 and its usage, the bicycle trainer system 1900 is further described below.
According to an example embodiment, each of these riding modes is based on a feedback loop executed by the PID controller 1907 in the flywheel assembly 68 whereby the bicycle trainer 1902 measures the power output until the riding mode ends and compares the power output of the rider with the power set point. Power (in watts) is calculated according to the physics engine described above whereby the power set point=Force (total)*velocity. The riding modes discussed below are based on this equation and the Force (total) may be modified every 64 Hz by the electromagnetic braking system 1914. Thus, the bicycle trainer 1902 determines the current wheel speed and current RPMs and continually adjusts the Force (total) based on a number of factors and variables determined by the current riding mode.
A user of the bicycle trainer 1902 may desire to have an interval workout. Generally speaking, an interval workout involves a rider pedaling the trainer 1902 at some elevated cadence, speed, and/or power for a period of time, resting, and then repeating the sequence. As an example, if a rider's power threshold is about 250 watts, the rider may desire to perform threshold training at 120% of their threshold for five minute intervals, and then rest for two minutes and then repeat. By way of the computing device 1904, the bicycle trainer 1902 can provide the appropriate electromagnetic resistance so that the rider has to maintain 300 watts of power (at some speed or cadence) for five minutes. Additionally, the trainer can measure the rider's power and display that value during each interval. In one example, the rider may enter their functional power threshold value into the app or a user profile that may be accessed by one or more apps, and simply set the percentage of that number for the interval session. This workout can be provided via ergometer mode. Ergometer mode is shown in
Besides ergometer mode, the system 1900 also provides the user with other possible modes. For example, a user may also desire to ride a simulated real world course, with ascents and descents, and experience simulated weather along the course which may dynamically affect variables such as grade based on the ascents and descents, wind speed as the wind changes, and coefficient of rolling resistance if a portion of the course has a different riding surface and/or is wet. Such a workout may be provided via simulation mode as well as a third-party app that extends simulation mode. One method of providing simulation mode is shown in
Instead of simulating a course, a user may desire a quick and simple workout, which can be provided via standard mode. In standard mode, the user may select a level from 0-9 using the app, this level will be communicated from the computing device 1904 to the bicycle trainer 1902, and the workout will begin. Each level 0-9 represents a pre-set power curve based on a speed of a rider. One method of providing standard mode is shown in
In addition, a user may desire to simply experience a level of brake resistance and work to pedal against that brake resistance. A user can directly control brake resistance through a resistance mode, which is shown and discussed in more detail below with reference to
The bicycle trainer 1902 is not limited to these example riding modes and additional riding modes and experiences may be provided via an app using the framework 1905. In other words, the bicycle trainer system 1900 and its framework or API 1905 are an open platform and with correctly passed variables from an app being executed on the computing device 1904, an app developer may define a wide array of fitness routines using the bicycle trainer 1902. In other words, an app developer can create additional riding modes for the bicycle trainer 1902 by creating an app executed on the computing device 1904 that communicates with the bicycle trainer 1902 using the API 1905. The computing device 1904 can communicate data to the bicycle trainer 1902 using the API 1905 and the bicycle trainer 1902 can store data related to the additional riding modes. As another example, the bicycle trainer 1902 can provide additional riding modes via a firmware update. The firmware update can be sent directly to the bicycle trainer 1902 using a network connection or sent from the computing device 1904 to the bicycle trainer 1902 using a network connection.
The pseudocode is explained below in view of
As shown in
In standard mode, all static variables and dynamic variables will be set to default values except for grade and the user will experience a training ride which provides a level of grade (and associated electromagnetic resistance) based on the level chosen. Grade is the amount of slope or incline or decline of the simulated riding surface to the horizontal. As an example, grade may be expressed as a percentage calculated based on the equation 100*rise/run. The grade variable is set so as to sequence through progressively greater values (associated with progressively higher applied electromagnetic braking) to simulate a progressively steeper grade based on the level chosen. Thus, the grade dynamic variable will be continually updated by the computing device 1904 based on the level selected by the rider and a power set point will directly coincide with any changes in the rider's instantaneous speed. As an example, a ride in level 2 on the bicycle trainer 1902 would simulate the experience of riding on a hill with a 1% grade. When in standard mode, if the rider is riding up a hill and wants to move faster, the ride will get more difficult. As a result, as a rider increases speed, the rider will experience an increase in resistance and an increase in power.
According to an example embodiment, a difficulty level of 0 provides the rider with a training experience that mimics a flat bicycle ride, with the trainer at a relatively constant and relatively low amount of electromagnetic braking. A difficulty level of 9, in contrast, provides a simulated hill grade of 4.5% and more resistance for a same given speed. Once the level is selected, in step 2106, the computing device 1904 will receive the selected level and store the selected level in temporary memory in the computing device 1902 until a new level or different riding mode is selected. In step 2108, the computing device 1904 will set variables based on the selected level to begin a standard mode workout and communicate the variables to the bicycle trainer 1902 using the API.
According to an example embodiment, and as shown in
In step 2110, the bicycle trainer 1902 will use the physics engine to calculate an appropriate power output for the rider based on the rider's threshold, the difficulty level, and an instantaneous speed of the rider. As noted above, and as shown in
In step 2112, the bicycle trainer 1902 will execute the feedback loop to continually adjust a PWM pulse rate based on instantaneous speed of the rider and a power set point based on the selected level. Stated differently, the trainer measures the instantaneous speed (how fast the rider is pedaling) and calculates the power the rider is using to pedal based on torque and wheel speed, and compares those measurements to the power set point for the portion of the exercise routine, to determine if more or less braking is required. So, for example, if the rider is delivering the power for the selected difficulty level, then the bicycle trainer 1902 will not alter the applied electromagnetic braking, whereas if the rider is not maintaining their power, then the PWM signal may be modified to increase or decrease the amount of electromagnetic braking. The bicycle trainer 1902 provides the electromagnetic braking by sending the PWM signal to the PID controller 1907 as shown in
In step 2114, the computing device 1904 will receive a wireless communication from the bicycle trainer 1902 using the API 1905 and display ride information on display 110 such as an instantaneous speed and power which are being measured and/or calculated by the trainer. In step 2116, the bicycle trainer 1902 will determine whether the user continues to operate the bicycle trainer 1902 in standard mode. If the user continues to operate the bicycle trainer 1902 in standard mode, then the workout will continue and the bicycle trainer 1902 will continue to communicate with the computing device 1904. If the user ends standard mode, then in step 2118 the workout may be modified to another riding mode or ended.
According to an example embodiment, the app on the computing device 1904 will model the power curve and communicate this power curve to the bicycle trainer 1902 using the API 1905. According to an additional example embodiment, the app on the computing device can communicate static and dynamic variables to the bicycle trainer 1902 using the API 1905 and the bicycle trainer may determine a required power for a given instantaneous rider speed. This required power is the power set point and determined using the physics engine whereby Force (total)=((Force (rolling resistance)+Force (slope)+Force (acceleration)+Force (wind resistance))/drivetrain efficiency. According to the example embodiment described below, the simulation input may include variables for a coefficient of rolling resistance, a weight of the rider and bicycle, and wind speed. Using these variables, the bicycle trainer 1902 will determine a power required at a particular speed and grade and adjust the resistance accordingly using the PID controller 1907 as shown in
Thus, as an example, the power needed to simulate wind resistance may be 150 watts, the power needed to simulate normal force due to gravity may be 150 watts, and the power needed to simulate rolling resistance may be 25 watts. At this particular power set point, there is no slope, and thus grade does not factor into the power set point. Thus, according to an example embodiment, the power needed to simulate the ride at a particular instant and associated power set point at that instant along the power curve may be 325 watts. This simulation may be based on the following pseudocode:
The pseudocode is explained below in view of
Thus, for any given set grade and speed, as provided in the pseudocode above, power is determined based upon wind resistance, gravity, and rolling resistance which may continually change during the ride and the bicycle trainer 1902 will compute the power required. As provided above, a power output for the bicycle trainer 1902 will be based on Force (total) and an instantaneous speed of the rider.
Referring now to
In step 2206, the computing device 1904 communicates the static variables and the dynamic variables to the bicycle trainer 1902 using the API 1905. In step 2208, the bicycle trainer 1902 will use the physics engine to determine a power curve based on the variables and calculate an appropriate power output for the power set point based on an instantaneous speed of the rider. As noted above, the power output is equal to Force (total)*velocity of the rider. Thus, the physics engine may provide a fluctuating Force (total) which is based on the power curve. In step 2210, the bicycle trainer 1902 will execute the feedback loop to continually adjust a PWM pulse rate based on instantaneous speed of the rider and a power set point. Stated differently, the bicycle trainer 1902 will measure the instantaneous speed (how fast the rider is pedaling) and calculate the power the rider is using to pedal based on torque applied at the cranks, and compares those measurements to the power set point for the portion of the exercise routine, to determine if more or less braking is required. So, for example, if the rider is delivering the power that matches the power set point at a particular instant, then the trainer will not alter the applied electromagnetic braking, whereas if the rider is not maintaining a power that matches the power set point, then the PWM signal may be modified to increase or decrease the amount of electromagnetic braking using the PID controller 1907 as shown in
In step 2212, the computing device 1904 will receive wireless communication from the bicycle trainer 1902 using the API 1905 and display information on display 110 such as an instantaneous speed and power. In addition, while in simulation mode, the computing device 1904 may also display additional information on display 110, such as a three dimensional simulation of the course or a map. The display 110 is not limited to displaying this data and may include additional information such as all-time mileage and all-time average speed, etc. In step 2214, the bicycle trainer 1902 will determine whether the user continues to operate the bicycle trainer 1902 in simulation mode. If the user continues to operate the bicycle trainer 1902 in simulation mode, then the workout will continue and the bicycle trainer 1902 will continue to communicate with the computing device 1904. If the user ends simulation mode, then in step 2216 the workout may be modified to another riding mode or end.
According to a further embodiment, two or more users may race on a simulated course in simulation mode. The users need not be located in the same location and may communicate their real-time riding data to a server which then communicates with each rider's computing device 1904. The users need not race simultaneously, and may race at different times. In other words, the race may be completed by the users asynchronously. As an example, course data may be uploaded and downloaded by users. The database provides geolocated videos which have been recorded by users along with an associated GPS signal during actual bicycle rides. The videos may then be played back using an app. In other words, a geolocated video and its course information may be parsed into the static and dynamic variables to be communicated from the computing device 1904 to the bicycle trainer 1902 using the API 1905 and a map of the course may be displayed using the app. The power data which is received by the bicycle trainer 1902 during the bicycle ride is communicated to the computing device 1904 using the API 1905, and the computing device 1904 may determine a position of the rider on the course on the map of the course displayed in the app. Furthermore, based on the information received from the server, each rider may view where an opposing rider is located on the map of the simulated course and may see positional information displayed on the display 110 of the computing device 1904. The server may determine a final race position of each rider, determine a winner of the race, determine each rider's overall ranking for the course, and transmit this information to each of the users during the race and after the race is completed. Further details regarding the database of geolocated videos and its usage with the bicycle trainer system 1900 are beyond the scope of the embodiments disclosed herein.
According to example embodiment, while in simulation mode, the power curve may be buffered and stored within memory in the bicycle trainer 1902 so that if wireless connectivity drops, the bicycle trainer 1902 will continue to provide the rider with the simulated ride. The power curve for the ride may be represented in a data object such as an array. The array may store a plurality of future power set points based on the power curve at particular future course positions. According to an example embodiment, the amount of future storage of a simulated ride is dependent upon the size of the memory in the bicycle trainer 1902. Depending upon a memory capacity, the bicycle trainer 1902 will interpolate data points between each of the power set points in the array and provide a seamless simulated ride for the rider such that the rider will not even realize that wireless connectivity has dropped. In other words, the array will act similar to a buffer and temporarily store future course power set point information. Once wireless connectivity is reestablished the array will be repopulated with future power set points.
The pseudocode is explained below in view of
As shown in
Once the user selects the target wattage, in step 2306, the computing device 1904 transmits the power set point to the bicycle trainer 1902. In step 2308, the bicycle trainer 1902 executes the feedback loop to continually adjust a PWM pulse rate based on instantaneous power and the power set point. As noted above, the power output is equal to Force (total)*velocity of the rider. Stated differently, the bicycle trainer 1902 will execute the feedback loop to continually adjust a PWM pulse rate based on instantaneous power and a power set point. Stated differently, the trainer measures the instantaneous speed (how fast the rider is pedaling) and calculates the power the rider is using to pedal based on torque applied at the flywheel 48, and compares those measurements to the power set point, e.g. the target power wattage, to determine if more or less electromagnetic braking is required. So, for example, if the rider is delivering the power for the selected target power wattage, then the trainer 1902 will not alter the applied electromagnetic braking, whereas if the rider is not maintaining their power, then the PWM signal may be modified to increase or decrease the amount of electromagnetic braking in order to maintain the target power using the PID controller as shown in
The pseudocode is explained below in view of
As shown in
Once the desired percentage of brake power is selected by the user, in step 2406, the computing device 1904 communicates the percentage of brake power to the bicycle trainer 1902. In step 2408, a PWM pulse rate for the electromagnetic brake is calculated and set by the trainer 1902 based on the percentage of electromagnetic braking power. In step 2410, the computing device 1904 receives wireless communication from the bicycle trainer 1902 using the API 1905 and displays information such as an instantaneous speed and power on the display 110. In step 2412, the trainer 1902 determines whether the user continues to operate the bicycle trainer 1902 in resistance mode. If the user continues to operate the bicycle trainer 1902 in resistance mode, then the workout will continue and the bicycle trainer 1902 will continue to communicate with the computing device 1904 and wait for a next mode command. If the user ends resistance mode, then in step 2414 the workout may be modified to another riding mode or end.
The I/O section 2604 is connected to one or more user-interface devices (e.g., a keyboard 2616 and a display unit 2618), a disc storage unit 2612, and a disc drive unit 2620. Generally, the disc drive unit 2620 is a DVD/CD-ROM drive unit capable of reading the DVD/CD-ROM medium 2610, which typically contains programs and data 2622. Computer program products containing mechanisms to effectuate the systems and methods in accordance with the presently described technology may reside in the memory section 2604, on a disc storage unit 2612, on the DVD/CD-ROM medium 2610 of the computer system 2600, or on external storage devices made available via a cloud computing architecture with such computer program products, including one or more database management products, web server products, application server products, and/or other additional software components. Alternatively, a disc drive unit 2620 may be replaced or supplemented by a floppy drive unit, a tape drive unit, or other storage medium drive unit. The network adapter 2624 is capable of connecting the computer system 2600 to a network via the network link 2614, through which the computer system can receive instructions and data. Examples of such systems include personal computers, Intel or PowerPC-based computing systems, AMD-based computing systems and other systems running a Windows-based, a UNIX-based, or other operating system. It should be understood that computing systems may also embody devices such as Personal Digital Assistants (PDAs), mobile phones, tablets or slates, multimedia consoles, gaming consoles, set top boxes, etc.
When used in a LAN-networking environment, the computer system 2600 is connected (by wired connection or wirelessly) to a local network through the network interface or adapter 2624, which is one type of communications device. When used in a WAN-networking environment, the computer system 2600 typically includes a modem, a network adapter, or any other type of communications device for establishing communications over the wide area network. In a networked environment, program modules depicted relative to the computer system 2600 or portions thereof, may be stored in a remote memory storage device. It is appreciated that the network connections shown are examples of communications devices for and other means of establishing a communications link between the computers may be used.
In an example implementation, the framework or API 1905 bundled within an app executing on the computing device 1904 wirelessly communicating with the bicycle trainer 1905, a plurality of internal and external databases, source databases, and/or cached data on servers are stored as the memory 2608 or other storage systems, such as the disk storage unit 2612 or the DVD/CD-ROM medium 2610, and/or other external storage devices made available and accessible via a network architecture. The framework or API 1905 bundled within an app may be embodied by instructions stored on such storage systems and executed by the processor 2602.
Some or all of the operations described herein may be performed by the processor 2602. Further, local computing systems, remote data sources and/or services, and other associated logic represent firmware, hardware, and/or software configured to control operations of the bicycle trainer system 1900 and/or other components. Such services may be implemented using a general purpose computer and specialized software (such as a server executing service software), a special purpose computing system and specialized software (such as a mobile device or network appliance executing service software), or other computing configurations. In addition, one or more functionalities disclosed herein may be generated by the processor 2602 and a user may interact with a Graphical User Interface (GUI) using one or more user-interface devices (e.g., the keyboard 2616, the display unit 2618, and the user devices 2604) with some of the data in use directly coming from online sources and data stores. The system set forth in
In the present disclosure, the methods disclosed may be implemented as sets of instructions or software readable by a device. Further, it is understood that the specific order or hierarchy of steps in the methods disclosed are instances of example approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the method can be rearranged while remaining within the disclosed subject matter. The accompanying method claims present elements of the various steps in a sample order, and are not necessarily meant to be limited to the specific order or hierarchy presented.
The described disclosure may be provided as a computer program product, or software, that may include a machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to perform a process according to the present disclosure. A machine-readable medium includes any mechanism for storing information in a form (e.g., software, processing application) readable by a machine (e.g., a computer). The machine-readable medium may include, but is not limited to, magnetic storage medium (e.g., floppy diskette), optical storage medium (e.g., CD-ROM); magneto-optical storage medium, read only memory (ROM); random access memory (RAM); erasable programmable memory (e.g., EPROM and EEPROM); flash memory; or other types of medium suitable for storing electronic instructions.
The description above includes example systems, methods, techniques, instruction sequences, and/or computer program products that embody techniques of the present disclosure. However, it is understood that the described disclosure may be practiced without these specific details.
It is believed that the present disclosure and many of its attendant advantages will be understood by the foregoing description, and it will be apparent that various changes may be made in the form, construction and arrangement of the components without departing from the disclosed subject matter or without sacrificing all of its material advantages. The form described is merely explanatory, and it is the intention of the following claims to encompass and include such changes.
While the present disclosure has been described with reference to various embodiments, it will be understood that these embodiments are illustrative and that the scope of the disclosure is not limited to them. Many variations, modifications, additions, and improvements are possible. More generally, embodiments in accordance with the present disclosure have been described in the context of particular implementations. Functionality may be separated or combined in blocks differently in various embodiments of the disclosure or described with different terminology. These and other variations, modifications, additions, and improvements may fall within the scope of the disclosure as defined in the claims that follow.
Although various representative embodiments of this invention have been described above with a certain degree of particularity, those skilled in the art could make numerous alterations to the disclosed embodiments without departing from the spirit or scope of the inventive subject matter set forth in the specification. All directional references (e.g., upper, lower, upward, downward, left, right, leftward, rightward, top, bottom, above, below, vertical, horizontal, clockwise, and counterclockwise) are only used for identification purposes to aid the reader's understanding of the embodiments of the present invention, and do not create limitations, particularly as to the position, orientation, or use of the invention unless specifically set forth in the claims. Joinder references (e.g., attached, coupled, connected, and the like) are to be construed broadly and may include intermediate members between a connection of elements and relative movement between elements. As such, joinder references do not necessarily infer that two elements are directly connected and in fixed relation to each other.
In some instances, components are described with reference to “ends” having a particular characteristic and/or being connected to another part. However, those skilled in the art will recognize that the present invention is not limited to components which terminate immediately beyond their points of connection with other parts. Thus, the term “end” should be interpreted broadly, in a manner that includes areas adjacent, rearward, forward of, or otherwise near the terminus of a particular element, link, component, member or the like. In methodologies directly or indirectly set forth herein, various steps and operations are described in one possible order of operation, but those skilled in the art will recognize that steps and operations may be rearranged, replaced, or eliminated without necessarily departing from the spirit and scope of the present invention. It is intended that all matter contained in the above description or shown in the accompanying drawings shall be interpreted as illustrative only and not limiting. Changes in detail or structure may be made without departing from the spirit of the invention as defined in the appended claims.
This application is a continuation-in-part of U.S. application Ser. No. 13/975,720 filed Aug. 26, 2013 entitled “Bicycle Trainer,” which claims the benefit of priority to provisional application No. 61/693,685 filed Aug. 27, 2012 entitled “Bicycle Trainer” and provisional application No. 61/728,155 filed Nov. 19, 2012, all of which are hereby incorporated by reference.
Number | Date | Country | |
---|---|---|---|
61693685 | Aug 2012 | US | |
61728155 | Nov 2012 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 13975720 | Aug 2013 | US |
Child | 14135205 | US |