Cycling Power Estimator
-
@mickywickyftw Thank you for your time, I will give it a try when I get home and keep you informed.
-
@mickywickyftw Excellent, it’s working perfectly now, and the cadence RPM is showing correctly as it should. Great job!
-
I’ve introduced a new setting for user weight. While reading from the watch user weight value appeared to work, it was causing issues when starting the SuuntoPlus app with any non-default rider position.
-
@mickywickyftw thank for the app! I’m kinda new to cycling, I’ll test next ride

I have a question: the FTP value requested as input in the Suunto App is used for the power calculation or it necessary for other scopes?
Haven’t dove any FTP test yet, so if needed for the power calculation I would set a guessed (aka random) FTP
-
I noticed that there is something wrong in descents. The power is sometimes overestimated. In the screenshot below, I reached 450W ; speed is high, but I was not forcing at all. Note that I have no cadence sensor. I never observed such errors in ascents.

-
@SergioB Not, it’s only used for the power zone gauge.
So if you have no idea of your FTP it doesn’t affect the estimates. -
@bubuche There is a grade lag at the start of a descent due to smoothing. So the calculation uses the previous flat section (0% grade) until the smoothing catches up. And even then you might be at -8% but the calculation uses for ex. -2%. At this speed, you are going above the assumed terminal velocity (which is too low), and get high power spikes,
Without a cadence sensor, I could zero the power when going downhill and avoid these short spikes.
So replace a false positive (what you see) with a false negative.
I guess the false positive is the worse issue since it impacts NP, averages, etc.So this needs fixing, but without breaking other cases. I’ll have a think.
-
I should maybe raise the average window from 3 to 10s, to smooth that grade variation (especially in descents).
My guess is that 0 is probably closer to the real value than 450W (at + 5/7% grade, I am between 200 and 350W). I agree, you probably won’t get heuristics that works in all cases. -
@bubuche Check with the latest update, I’ve re-done the logic.
Now if there is no cadence sensor, power is always computed on the difference between actual speed and terminal velocity.
Terminal velocity is still subject to grade smoothing. The altimeter looks at altitude in 20cm chunks apparently, so you need several metres to compute a useful grade reliably.This is computationally more expensive but may not make much difference overall.
I’m just hoping for no unexpected regressions. -
@mickywickyftw thanks for the update, I’ll try this week hopefully (on the same road, to compare).
One suggestion could be to wait for a few more seconds when the slope reduces before using standard formula (I totally ignore if there are mathematics models behind this, just intuition and probably hard to calibrate). I mean we are still fast for a while when the grade drops from -4% to -2% for example. -
I’ve pushed a few new builds, tweaking the algo until I’m more or less happy with it.
Outstanding items:- Speed and cadence sensors have approx. 3-second latency. If you add another 2-3 seconds on top, that increases the latency between you starting a climb, and the power displaying. No problem for later analysis.
- Given that it is an estimate, using 3-second power might not be that useful - maybe make 5- or 10-second averages the default.
- Occasional crashes trying to load the app on my watch with “maximum number of Suuntoplus apps reached”, which seem completely independent of what the app does. Restarting the watch always fixes it. Waiting a while also does, but not sure how long - 5 minutes to 2 hours from what I’ve seen.
- Once I trust it enough, retrieve the rider’s weight from the watch settings once again as it used to - but I suspected that of causing the error mentioned above.
- Grade calculation is a pain - the altimeter only knows 20 cm increments. On say, 8 metres, that’s 2.5% grade over 1-2 seconds riding reasonably fast - this will cause false and/or jumpy readings at any speeds below 35 kph. I’m curious to see how Suunto’s running power or NGP take grade into account.
-
@mickywickyftw I owe you a feedback on previous changes (not the 13th July one): far better in descents. They are still some spikes (above 450W), when the road suddenly changes (from negative to positive grade for example). I still used 3s for the power average. I’ll switch to 10s for next moves.
-
@mickywickyftw unfortunately, there are regressions in the last update. My feeling is that power is overestimated in descents (and is now almost as high as power in ascents). Just my feeling, as I do not have a real power meter to validate this. I would say that power should somehow be related to heart rate.
-

-
The power estimator calculates the mechanical force required to move at a given speed on a given slope (with weight, terrain, etc. taken into account).
Heart rate correlates with power over longer efforts but diverges significantly in short bursts (because it reacts more slowly) on descents (because you don’t have to push as hard to produce the same acceleration), and in heat (for obvious reasons). The power model doesn’t see fatigue, cardiac drift, or how hard your legs feel. But that is not its purpose either.The spikes are a known issue caused by the grade estimation model. They happen at grade transitions, e.g. when the road flips from downhill to uphill. Grade snaps from the descent average to the ascent average in a single second, simultaneously with the acceleration that naturally occurs there. That combination can briefly produce very high values. Difficult to work around for now, and given the altimeter’s 20cm granularity, it may not be achievable, but I’m still looking.
Descent overestimation: I thought this might be the case. Without a cadence sensor the model has no way to detect coasting, since it cannot tell whether you’re pedalling or freewheeling. So it has to assume by comparing your speed to terminal velocity, which is calculated using… the grade estimation. So we’re back to that limitation.
On the topic of the grade estimation used by Suunto for NGP, that algo seems to suffer the same issues.
-
@mickywickyftw I’m aware that the model has some limitations (especially due to grade variations and without cadence sensor), but getting the same power estimation (~ 220/250W) in both a 10 minutes descent and ascent is quite unexpected (at 100bpm and 140bpm, respectively). Same position on bike. As far as I remember, I did not observe this on previous versions (I switched to 10s window today though, so not exactly same settings).
-
@bubuche 200-250W is very high for a descent, true. Too high for the model as it should be I think.
Can you help narrow it down, as I have not observed this myself?
Zoom in on the downhill section, and note:- % grade
- distance
- start and end elevation
- Avg power
- Avg speed
- Your total weight as configured in the settings (bike + rider + pack)
If you can zoom to just that section, overlay speed and power, that might give us a clue.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login