Change How Intensity Adjustment Works

864 views
Skip to first unread message

Eric Christoffersen

unread,
Dec 27, 2020, 4:57:54 PM12/27/20
to golden-cheetah-users
Currently, whether you're in gradient or ergo mode, the gc intensity adjustments rewrite the workout to be more difficult or easier.

If you click lower() enough in slope mode you can change a 1000m climb into a 500m climb.

As someone with only 3 functioning speeds on their trainer bicycle, I would much prefer if the raise/lower buttons just adjusted the intensity without actually changing the ride, so I don't need to actually shift. Ideal result for me would be that intensity buttons acted like virtual gears, so the feel of the slope would be less, but the climb itself would not change.

I have a friend who uses an old campy road bike on his trainer and its corncob ratio means he can't climb steep grades - he wants a way to adjust his gearing to something his bicycle won't do, and he also doesn't wish to dilute his climbs.

I can imagine a similar change being reasonable for ergo mode. You want to hit 400 watt intervals but aren't feeling it today, press lower() a few times and ergo mode will ask less of you, but the displayed workout won't change.

The case where this doesn't work perfectly is ergo mode for non-smart trainers. In that case I imagine wanting to see the actual power goals drop when I press lower, since in that case the target is all on me and not imposed by the trainer.

Should we add an option to have the intensity buttons act like virtual gears?

Ale Martinez

unread,
Dec 28, 2020, 8:48:29 AM12/28/20
to golden-cheetah-users
I think this is a (very!) good idea for slope mode since it better mimics reality: having enough gears you could ride any slope while you can keep the bike upright, which is not an issue in the trainer. I assume you plan to feed the trainer with the lesser slope while keeping the original for all other purposes so simulated speed adjust accordingly to the real slope.

OTOH, for erg mode current behavior seems to be Ok, I don't see any good reason to change it.

Eric Christoffersen

unread,
Jan 2, 2021, 7:39:42 PM1/2/21
to golden-cheetah-users
I implemented this on top of the fortius support change, because fortius pr changes device controller interface, and this one changes values that are passed to device controller.

Virtual Gears by ericchristoffersen · Pull Request #3750 · GoldenCheetah/GoldenCheetah (github.com) 

With this change intensity adjustment operates in 3 different ways:
- if there is a workout, and its erg mode, then erg workout is rewritten exactly like today.
- if no workout, and ergmode, then intensity goes up/down by 5%, sent via new 'intensityFactor' variable.
- adjust intensityfactor by +/- 10%.

In slope mode the intensity factor is converted to gradient adjustment through the magic of mathematics.
 
As a final test before creating PR I rode >18% grade of mortirolo on a computrainer on my wife's 70s mixte frame in 52x16. At 100 watts my rear tire was going 20kph the sim speed was ~2kph. This is great because that ride is otherwise impossible on a computrainer because the tire and brake can't hold necessary force at such low speeds.

Mick Drake

unread,
Jan 3, 2021, 4:45:36 AM1/3/21
to Eric Christoffersen, golden-cheetah-users
Virtual gears seemed to work on the fortius.  There was not a noticeable decrease in effort BUT I was able to keep my cadence up so there must have been... clicking up and down was smooth no obvious "changing"
Time was slower as expected but distance was the same.  It is very realistic.. going down the pass I put it up to 130% and speed off the dial 65 or 68 kph... but when clicking back to 100% speed did not decrease but I was on a steep downhill
One more thing that makes this more realistic than TTS is that you can freewheel down a mountain... If you stop pedaling in TTS the brake stops
Compare pane from the two rides.. lighter colour using virtual gears

On Sun, 3 Jan 2021 at 07:12, Mick Drake <micky...@gmail.com> wrote:

--
_______________________________________________
Golden-Cheetah-Users mailing list
golden-che...@googlegroups.com
http://groups.google.com/group/golden-cheetah-users?hl=en
---
You received this message because you are subscribed to the Google Groups "golden-cheetah-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golden-cheetah-u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/golden-cheetah-users/d1bc49de-a471-4686-9aae-a57472bba2cdn%40googlegroups.com.
Screenshot 2021-01-03 091415.png

Mick Drake

unread,
Jan 3, 2021, 4:47:58 AM1/3/21
to Eric Christoffersen, golden-cheetah-users
Virtual gears seemed to work on the fortius.  There was not a noticeable decrease in effort BUT I was able to keep my cadence up so there must have been... clicking up and down was smooth no obvious "changing"
Time was slower as expected but distance was the same.  It is very realistic.. going down the pass I put it up to 130% and speed off the dial 65 or 68 kph... but when clicking back to 100% speed did not decrease but I was on a steep downhill
One more thing that makes this more realistic than TTS is that you can freewheel down a mountain... If you stop pedaling in TTS the brake stops
Compare pane from the two rides.. today 03/01 using virtual gears

On Sun, 3 Jan 2021 at 07:12, Mick Drake <micky...@gmail.com> wrote:
On Sun, 3 Jan 2021 at 00:39, Eric Christoffersen <zak...@gmail.com> wrote:
Screenshot 2021-01-03 091415.png

Eric Christoffersen

unread,
Jan 3, 2021, 4:47:59 PM1/3/21
to golden-cheetah-users
Found something interesting on my test ride last night. I am certain the gradient adjustment is correct but the virtual gears didn't feel right in very high and very low gears. I realized that is because while gradient is adjusted correctly, we aren't telling the trainer how much simulated inertia you have.

Suppose you're going slow in simulated-land, and booking in device-land. Device land will think you have a ton of KE, but in sim land you dont.

We can adjust inertia's idea of ke by scaling mass. I made a change so mass reported to trainer scale with ratio of simulated and virtual speeds.

I added that change to the PR and I think it feels much better now.

I tried it on computrainer and kickr and both feel great to me.

Eric Christoffersen

unread,
Jan 14, 2021, 12:33:29 PM1/14/21
to golden-cheetah-users
Feedback from the old fortius work pr:

> Used a combination of virtual and real gears today to keep the wheel speed higher, it worked really well... I only had to use the real gearing when going downhill as I couldn't get the button pressed quickly enough to keep my pedals pulling the wheel round ;) when I got to the flat or uphill changed back manually to centre cog then used virtual gearing... I have never used the buttons on my head unit before as I found them cumbersome for the TTS functions but they work really well for this After your explanations of how it should work I quite liked it.. a lot quieter than the chain clanking across the cogs. This would be really nice if you could put your actual gear ratios in... or in my case have 10 speed at the back instead of 8. Would have been great in my TT days could have had a front ring of 54.. rear of 10 for training or something even more outrageous. As always TTS and video synch worked perfectly... Thanks

I have the same problem changing virtual gears fast enough at high speed. The 10% intensity change isn't enough when cresting a hill where I seem to want to pop the ratio quickly by 2-3x.

The problem with modelling actual ratios is the trainers don't know your 'zero'. You have two riders, one has an over-geared singlespeed 52x13, another is some chump like me stuck on an undergeared mountain bike 34x23.

Suppose we wish to model a normal 52/42 ring with 12x28 cassette. Where exactly does the sim start? if sim starts in the middle of the range then SS guy will be desperately downshifting and run out of gears, and I'll be upshifting and run out of gears.

SS guy might wants his range middle at 1/2 intensity and I'd want my center at 1.5 intensity.

Seems like a nice way through is to have a 'gear zero' button where you shift into your 'best' physical trainer gear (quiet and high enough wheelspeed for power), then set the virtual resistance you wish to represent the middle of the gear range, then press the 'zero' button and it becomes the center of the virtual range. Virtual shift buttons change intensity from there. You'd be able to enter a ring/cogset into bicycle setup and the shifting would follow those intensities. We could put the zero in the bicycle gearing setup, but that means stuff will get confusing if user shifts physical gear on his trainer bike.

The bicycle ctor could process the available gears at load time, order the ratios and give them a string to show when shifting occurs. Then shifting would just use that to determine the new intensity factor and give it a name to show for 'gear ratio'.

App 4G

unread,
Jan 18, 2021, 9:15:12 PM1/18/21
to golden-cheetah-users
this is very interesting. The virtual gears that it. Is this only going to be working for the Fortius (which I really just googled and found out it's a VR based trainer w/ what looks like an outside motor unit(?)) Anyways - w/ regards to the virtual gears, could someone enlighten me how it works? I do understand the Virtual and the Gears part (simulate a gear that the user doesn't have eg: user has max 39x21.. simulate a 36x25 for instance).

I'm curious to understand how this works. From looking at the PR from Here (https://github.com/GoldenCheetah/GoldenCheetah/pull/3750/files) seems like its changing the gradient of the climb? ( // compute needed change in slope: dm) Is the what the intensity adjustment is doing? 

If this is the case, This statement 
...
As someone with only 3 functioning speeds on their trainer bicycle, I would much prefer if the raise/lower buttons just adjusted the intensity without actually changing the ride, so I don't need to actually shift. Ideal result for me would be that intensity buttons acted like virtual gears, so the feel of the slope would be less, but the climb itself would not change.
...

threw me off in the "without changing the ride" and "feel of the slope would be less, but the climb itself would not change". What exactly does this mean? 

Is the action just of the intensity adjustment basically 
1) changing the slope of the current climb (only)?
2) changing the slope profile of the entire ride? eg: avg slope of 10% before, becomes avg slope of 5% (you press lower() for 5x with each press = -1% gradient)


Thanks. Great discussion. 

Mick Drake

unread,
Jan 19, 2021, 1:13:12 AM1/19/21
to golden-cheetah-users
I have used this a couple of times and the slope does not change according to the displayed slope in the train view.  It applies until you change up again so not the entire ride unless you leave it at a different level to 100%.   So if its too steep for me I can press the "down gear" button until I get to a flatter part or the top of a climb.... then I can the press the "up button" as you would on a normal gear set.  The only practical issue is that cresting a hill requires quite a few presses to let the virtual gearing allow you to connect the the wheel as it may be moving very fast.  With a normal gear set it is possible to get large changes in gearing with a single action.. e.g move from 42 to 53 is a single flick of the changer.  I am sure Eric will be along to explain this in more detail and correct any errors in my description.
A final note is that it is silent and smooth, much quieter than flicking a chain across a set of cogs

App 4G

unread,
Jan 19, 2021, 1:45:08 AM1/19/21
to golden-cheetah-users
okay.. so the slope displayed does not change, hence the actual ride gradient profile maintains. Then I wonder what exactly is happening. Something has to be communicated to the trainer to let it "ease" up to get the cadence/wheel speed up hence the "lighter" gear. I looked at the code but didn't quite understand it.

Mick Drake

unread,
Jan 19, 2021, 6:06:45 AM1/19/21
to golden-cheetah-users
Sadly if I looked at the code I wouldn't understand it either I can only tell you how it is in use.

App 4G

unread,
Jan 19, 2021, 6:31:26 AM1/19/21
to golden-cheetah-users
Ok..OK.. No problem. I didn't either.
Maybe it's subterfuge, On screen still shows the same, but internally already changed the slope.
¯\_(ツ)_/¯  

Eric Christoffersen

unread,
Jan 19, 2021, 3:02:31 PM1/19/21
to golden-cheetah-users
Man I thought I was being clear. The code is right there to read and it has a bunch of comments.

I'll try to summarize here. I don't have a lot of time right now so sorry if this is disjointed.

First thing: Currently in gc when you press the intensity adjustment buttons gc literally rewrites the entire ride by changing the gradient. With this amazing technology you can flatten the virtual veleta so its just a 100m climb. I personally want to have a climb accurately modeled. The bicycle on my trainer is 'gear limited' so I would like to virtually adjust the gears instead of changing the amount I climb. 

I would like the result of the intensity adjustment be that I go slower in the virtual world, not that I climb less.

Second thing: Every trainer I've tried has an unusably optimistic simulation mode. If I honor my kickr's reported speed my virtual VAM is 2000-2400m/hour. With simspeed enabled the VAM display on a virtual ride shows ~800m/hour average climbing rate, which is still slightly higher than what I get in real life, but then real life has cars and sticks and roadside gravel.  The trainer is reporting a speed that is much too high which in turn causes massively unrealistic progress on virtual rides, and for a big virtual climb 'distance progress' maps to altitude. I don't know why trainers are so wrong about speed.

Because of that device speed issue I'm really just interested in sim mode which ignores the device speed and computes progress from watts. A small error in power reporting by trainer means a small error in vam - so it goes, but at least it won't be off by 3x. The stuff below applies whether or not you use device speed, but just saying that trusting the device isn't practically an option because it is wrong by so much.

Three: 

The virtual shifting is only about adjusting pedal feel on Smart Trainers. Smart trainers are a problem because resistance can become too high and leave you unable to pedal. For non-smart trainers there's no need to work around increased resistance because you already have the option to simply pedal slower to reduce force and power.

Four:

When you shift gears in real life you are changing the force you are applying on the pedals, which changes force to the road.

The intensity factor in the above PR is the adjustment of resistance that the trainer is giving to you. If trainer applies 10% less resistance then you will need 10% less force to spin at the same cadence and with 10% fewer newtons at the same cadence you will be providing 10% fewer watts, so the sim speed will drop as well - exactly as if you downshifted an actual bicycle.

There's an equation that tells you the force between tire and road that is needed to maintain current speed at current state. It uses airspeed, crr, gradient, your weight, the color of your eyes, etc, etc and produces newtons, the unit of force.

Ideally we could simply multiply current force by intensity factor and be done. But we can't tell most trainers how much force to apply because they don't have an interface for that, we must instead instruct them within their interface which is mostly through setting gradient and mass.

So take the derivative of the force equation with respect to slope and you have an equation that tells you how the force will change as the slope changes. That is what I'm calling dN/dm.

So, now that you have dN/dm: if you wish 10% less force, we can compute the slope change needed to bring force down by 10%.

suppose dN/dm is 800.

(50N * (1 - 0.1) - 50N) = 5N <- we desire a 10% reduction in force which is -5N, dN is -5N.

dN/dm = 800
-5/dm = 800
dm = -5/800 = -0.00625 = -0.625%

So 10% reduction in force can be achieved by reducing gradient by 0.6%.

That 0.6% is an adjustment of gradient that is sent to the trainer. The gradient of the virtual route does not change. The gradient that is shown in the display doesn't change. The force you feel at the pedals will change. Either your power or your cadence will change.

Trainer accepts the reduced gradient, releases its brake a little, the resistance you feel decreases, if you maintain same cadence your power decreases, and that causes your sim speed to decrease.

You could of course choose to maintain your current power by increasing your cadence in which case power is same and computed sim speed does not change.

I've got maybe 20 hours with the virtual shifting. It does what it should but I'm finding that the 'shifting' on my kickr can be pretty slow, sometimes it takes 3-4 seconds to adust.

This should get extended to adjust in different ways. Right now its a constant step of 10% per press based on original intensity of 1, which means that it takes lots of presses when you wish to change by a lot. This is an accurate mechanism but needs ui support to make it work like gears. I played with a growing step size similar to how real gears work but it blows because there's currently no way to center the gear range - I kept finding myself with inadequate gear resolution.

Yes? Is this clear? No subterfuge?


App 4G

unread,
Jan 22, 2021, 10:15:49 AM1/22/21
to golden-cheetah-users
hi and thanks for getting back to me.
yes. I was reading the code and my limited understanding says that all that it's doing is changing the gradient/slope of the particular climb you're on right now.

<quote>So 10% reduction in force can be achieved by reducing gradient by 0.6%</quote>

You say "reduce gradient by 0.6%" and then you say "gradient of the route does not change" - these 2 sentences seems to be at odds w/ each other.

Per the ANT+FEC spec for smart trainer, for Grade/Slope control, basically we're sending the Grade of the simulated track. My understanding is, say the climb is a 10% gradient, so the trainer will be simulating a 10% slope using bytes 5&6, but say it's too steep and we want to increase our "virtual gear",and this in turn reduces the gradient, eg: your example of 0.6%, the gradient now becomes 9.4%
Is this understanding correct? Or perhaps I'm just too focused on page 51 whereas you're sending data to the trainer via some other pages? (which one?)

as for the 3-4seconds, I think this is normal. On my own trainer, it also takes a few seconds for the trainer to react to gradient changes. I think this is in-line w/ the expectation that it should not be a on/off digital switch esp for erg mode. (eg: going from 100w to 300w in 1 sec would kill most ppl's legs I suspect)



Screenshot 2021-01-22 at 11.08.22 PM.png

Eric Christoffersen

unread,
Jan 22, 2021, 2:25:51 PM1/22/21
to golden-cheetah-users
Typing all this on my phone while riding in a car so sorry for typos.

I tried really hard to answer exactly this in long answer above but Ive failed.

> You say "reduce gradient by 0.6%" and then you say "gradient of the route does not change" - these 2 sentences seems to be at odds w/ each other.

Answer 1 (add missing words using angle bracket technology):

    - "reduce gradient <sent to device> by 0.6%" 

    - "gradient of the <virtual> route does not change"

Answer 2 (try again with different words):

When the virtual gearing is used (intensity set to something other than 1.0) the gradient sent to device will not be the gradient of the virtual ride, it is a gradient that is sent to device to achieve a desired pedal feel. Even though a modified gradient was sent to device, the gradient of the virtual ride which is consumed by the gc sim does not change.

Changing intensity factor causes device pedal resistance to change but virtual ride is unchanged.

I think key is point 2 above: device's simulation values are ignored. device's speed is ignored. device's reported travel distance is ignored. The gc sim doesn't care about device's reported anything except watts. The virtual gearing works by lying to device - sending it a modified gradient (and mass) to achieve desired pedal feel.

App 4G

unread,
Jan 23, 2021, 2:41:43 AM1/23/21
to golden-cheetah-users
No worries for typos. Can understand even though English is not my native tongue.

When there is a change in the gradient (to simulate a reduction in intensity / higher gearing , say from 39x25 to 39x28 gearing), is it sending the instructions to trainer's Page 51?
under simulation mode, as I understand it, you send slope to page 51, but at the same  time, you can also simulate things like CRR or Drafting factor or wind resistance. These can help to increase/decrease the effort needed to achieve the same wattage. Thereby,  the intensity reduces.

What you're describing, and where I'm hung up on is that in order to ride a simulated climb, we're essentially taking the GPX file of that outdoor ride, put it into GC and then have GC virtually simulate the ride gradient at each step. GC is the one that's sending the Gradient data that it _wants_ based on the virtual route. Hence, in order to have a reduce effort into the climb, we can reduce the simulated gradient (or upshift to an easier gear - if we still have gearing. I'm on a 9speed and while it's 6 more than you, it's still tough to get up anything over 5% gradient) or change some other parameter (like windspeed / CRR / Drafting factor / user weight - which is in a different Smart trainer page).

Same like Trainer Difficulty?

Eric Christoffersen

unread,
Jan 23, 2021, 11:35:36 AM1/23/21
to golden-cheetah-users
Sim sends gradient to generic device controller class, and for fec the ant instance of device controller sends it on to device. Sim doesnt know its talking to fec, it broadcasts gradient. Dumb trainer controllers also receive gradient values, they just ignore them because they have no way to respond. From sim perspective there is no page 51, but yes that is the value touched in some cases.

Zwift trainer difficulty is a similar lie to trainer like virtual gears but with different intent. Zwift supports riders racing with dumb trainers. Those riders must simply gear down and spin and have no perception of hills, so are free to power at constant cadence and there is no adjustment needed for hills. This is an unfair advantage so whiney racers with expensive smart trainers wish a level playing field and would like a dumb trainer too. High gradient values also might mess up gradient-challenged devices like my computrainer. The zwift trainer difficulty scales gradient values from 'actual' to none. Like gc in sim speed mode, zwift ignores device speed and only consumes watts. The riders on 'max' must shift a bunch to maintain reasonable resistance, the riders on none just spin. The intent of virtual gears is different in that we are chasing 'correct feel', not simply scaling it, so we will increase and decrease gradient. Zwift 'feature' can be implemented by literally multiply current gradient by slider value, off means gradient *=0.0 and magically your trainer has become dumb.

I dont understand the 'hung up' bit. What exactly is your question?

With the current pr adjustment is actually gradient and mass,  this so that sim ke and 'device ke' remain equal. We could adjust everything at the same time and the math is more difficult. In theory any parameters can be changed to adjust device resistance. Both my smart trainers seem to run a tight loop internally between speed/gradient to resistance so gradient worked best for me in simulating climbing pedal feel. Using wind to ease resistance made the pedals feel too spritely on climbs. I think device makers spent time to do an extra good job to emulate pedal feel for low speed climbing but that could depend on device. I dont perceive a pedal feel problem using gradient to model higher gear on flats, it could be pedals dont feel gummy enough but i cant tell. im not feeling a problem.

There is a problem at extremes today. You cant have a slope too insane, you cant have a rider weigh nothing or a ton, the trainers fall down or ignore when you lie too hard. Big issue when device speed is allowed to coast to zero and ke delta becomes infinite. I was thinking to try adjusting the coefficients by their impact for situation, see coefficients as vector and rotate in smallest way to achieve resistance goal. That approach would naturally rely more on wind change for high sim speeds. Generally this means making many small lies to device to achieve resistance, so more likely lies would be in range and not cause trainer to behave strangely. Even better every device could implement this differently with knowledge of how device responds. Some device might ignore or do terrible job adjusting for crr so their best interpretation of force adjustment, their ideal vector rotate, might be different from another. Advantage of just using gradient is that its simple and performant, i suspect the benefit of the added complexity will be lost in devices generic inability to respond quickly and accurately, but the math would be fun.


mattipee

unread,
Jan 27, 2021, 8:10:31 PM1/27/21
to golden-cheetah-users
Hi!

Just found this conversation, and still need to play catchup. :)

Is the crux of the issue with intensity adjustment as it stands that, after course rewriting, the sim only sees the rewritten grade? If you tell the trainer "do 5% instead of 10%", then the sim still needs to know the 10% in order to make faithful progress along the original course. Initial look at the code suggests that's broken, because simState gets slope from rtData, which gets it from the controller, which comes from the already-rewritten course file. Have I missed something?

Also, I'm think I'm confused about the difference between intensity adjustment with virtual gearing.

Let me re-read... :)

Matt.

App 4G

unread,
Jan 28, 2021, 1:30:02 AM1/28/21
to golden-cheetah-users
Hi Zak - 

Truly appreciate you still continuing this conversation. I guess I'm impervious to your angle bracket tech and what not :-p

Where I'm hung up.
--> In my mind, there's page 51 and that's where the device controller (GC / Head Unit / Zwift) is sending to the Trainer device. If the GPX file says this is a 10% constant gradient climb, the device controller will send 10% gradient to the trainer and then you grind up the hill.
--> To me, if I want to reduce the effort to climb the 10% gradient, I can
1) change to a larger gear (39x30 if I have) - then I don't futz w/ the 10% gradient
2) Make the trainer simulate a tail wind etc - then I don't futz w/ the 10% gradient (but like you said, makes the pedals feels too spritely)
3) Do some math and change the slope from 10% gradient to say 6% gradient (but continue to show 10% gradient to the user - essentially lying to the user)
4) Change the userWeight, sending a lower userWeight would reduce the effort needed to climb up the hill but I don't futz w/ the 10% gradient)

What I'm receiving from reading your explanation --> the PR changes the gradient, but we continue to lie to the user. Which is #3 in the above.
[quote]
   - "reduce gradient <sent to device> by 0.6%" 
    - "gradient of the <virtual> route does not change"
[/quote]

Is this what is happening? To illustrate using a simple graphic, The 10% slope is what the actual hill slope is, but in order to simulate a lighter gear, we reduce the gradient (but continue to lie to the user and show he/she is still actually climbing 10%?)
Screenshot 2021-01-28 at 2.02.26 PM.png

[quote]
The gc sim doesn't care about device's reported anything except watts. The virtual gearing works by lying to device - sending it a modified gradient (and mass) to achieve desired pedal feel.
[/quote]

Agree. GC Sim should not care about anything else. But, it should be true also that the GC Sim would be sending the device the actual GPX route's slope (10% hill) right? But in order to achieve a lighter gearing, we lie to the user and send a lower gradient (9.4%% for eg) but continue to show that he's climbing a 10% slope. 

@mattipee, I think current GC implementation (I didn't look at the code nor did I try out this feature lately) but per Zak in a Dec 28th post, the underlined is my emphasis
[quote]
Currently, whether you're in gradient or ergo mode, the gc intensity adjustments rewrite the workout to be more difficult or easier.
If you click lower() enough in slope mode you can change a 1000m climb into a 500m climb.
[/quote]

eg: Org route
Original GPX --> 2% - 5% - 8% - 10%

User clicks lower()  (to achieve 1% lower gradient)
New GPX --> 1% - 5% - 7% - 9%

I think this is what is meant. Do Correct me if this is wrong.

mattipee

unread,
Jan 28, 2021, 9:42:38 AM1/28/21
to golden-cheetah-users
Side-stepping virtual gears for just a moment and considering a simpler first step, I've put together a branch which contains a fairly minimal fix/change to the way in which slope-course intensity adjustment works, currently.


- this will simply "squash" or "inflate" the gradient sent to the trainer, by some factor...
- this is the same as what the slope-course-rewriting currently does already
- ie a 5%-of-original intensity adjustment per click... ie two down clicks for 10% reduction:
  - 10%->9%,  5%->4.5%, etc...
- the modified gradient sent to the trainer is also the gradient shown on the GUI
- the key difference with my proposed change is that the original course slope profile is no longer lost
- this allows "sim-faithful" progress along the original course, by power.
- it will feel like a different course, because trainer grade is simply being altered - this is not virtual gearing

With "Simulate speed from power" ticked:
- Previously, you would make "sim-faithful" progress along the modified/"squashed" course.
- With my change, you would make "sim-faithful" progress along the original course

With "Simulate speed from power" unticked, you probably don't care anyway.


This would be my first suggestion, to simply "fix" how intensity adjustment works now, wrt making "sim-faithful" progress along the unmodified course.

(It's a first step... I'm not against virtual gearing, I just haven't quite wrapped my head around the maths of "feel" and code complexity, yet)
Message has been deleted

Mick Drake

unread,
Jan 29, 2021, 12:35:13 PM1/29/21
to golden-cheetah-users
Hi I wont pretend that I understand how this all works but on my bike if I change down using the Virtual Gears the effort required to turn the pedals decreases in the same way it would if changing physically.  If i maintain the same cadence my speed drops therefore it takes longer to get up the climb, more down shifting at same cadence my speed / power bleeds away.  This is what I would expect in real life using the shifters.
Using the up / Down slider in the release 3.6  does not do this the speed stays the same even though the effort is less

mattipee

unread,
Jan 29, 2021, 5:57:05 PM1/29/21
to golden-cheetah-users
> if I change down using the Virtual Gears the effort required to turn the pedals decreases
> If i maintain the same cadence my [simulated] speed drops therefore it takes longer to get up the climb

Yes, this is what should happen. Eric's VG branch you're using does this, but the main branch won't. Yet.


> Using the up / Down slider in the release 3.6  does not do this the speed stays the same even though the effort is less

I find the same... speed stays "more or less" the same.


> I wont pretend that I understand how this all works

The speed stays the same on the main branch because up/down clicks rewrite the gradient of the entire course (eg instead of 5%, your trainer receives 2.5%... but so does the sim!)

You maintain your gear and cadence with less effort, the sim only sees power and uses that to calculate how fast you should be going at the lesser grade. If your trainer is reasonably implemented/capable, your actual speed and the sim speed will be fairly similar in steady state at any sensible grade/effort - and therefore if you're not changing your speed on the bike much, you won't see the simulated speed change much, either.

So whether through virtual-gears or gradient-scaling, if GC is lying to the trainer, it shouldn't lie to the sim. That's the heart of the current issue.

We have two proposed methods of lying... gradient-scaling is a naive implementation (main branch, very like Zwift's trainer-difficulty, but currently broken), while virtual gears goes further with the maths.


Reply all
Reply to author
Forward
0 new messages