Focus

Afficher la balance de W’ sur son guidon

Actuellement chez i-run

Ces dernières semaines, j’ai travaillé à un projet hyper intéressant consistant à développer un champ de données permettant d’afficher la valeur de la balance de W’ en temps réel sur une montre/compteur Garmin compatible avec Connect IQ. Mais commençons par le début, si vous le voulez bien.

garmin_iq_wprime_web.jpg

Qu’est-ce que la balance de W’, et qu’est-ce qu’elle apporte ?

Pour résumer de manière simple, partons du principe qu’au départ d’une activité cycliste, nous disposons d’une quantité d’énergie définie. Cette valeur est connue sous le nom de W’, exprimée en joules.

Lorsque l’on pédale à une intensité faible, le capital de W’ n’est pas entamé, il est possible de pédaler (virtuellement) indéfiniment à cette allure sans se fatiguer. Mais à partir d’une certaine intensité, les réserves d’énergie diminuent. Cette limite est conne sous le nom de CP (Critical Power ou puissance critique).

Donc plus je fournis un effort supérieur à ma CP, plus mes réserves diminuent rapidement, par exemple lors d’une attaque dans une course en ligne, ou un sprint. Mais ensuite, si je rentre dans le peloton, mes réserves remontent progressivement alors que je me trouve à nouveau dans une zone inférieure à ma CP.

Ces variations de ma réserve d’énergie sont exprimée en W’ bal (réserve de W’), formule développée par le Dr. Philip Skiba. La courbe de W’bal est disponible depuis quelques temps dans le logiciel d’analyse de données cyclistes GoldenCheetah dans la partie « Charge » d’une sortie.

wprimebal

On peut clairement voir les périodes d’effort intense, quand la ligne (et donc la réserve d’énergie) descend progressivement, puis se reconstitue lorsque l’effort est moins important.

Pour calculer la balance de W’, on a besoin de connaitre deux données:

  • CP: exprimée en watts, il s’agit de la puissance limite aérobie.
  • W’: exprimée en joules, il s’agit de la réserve d’énergie.

Comment obtenir mes données de CP, de W’ et de TAU ?

Pour estimer ses valeurs de CP et W’ si on ne les connait pas déjà, le logiciel GoldenCheetah propose dans le menu « Outil -> Estimateur de CP et W’ » un calculateur dans lequel on entre les puissances maximum développée sur un effort court (de 3 à 5 minutes) puis un effort long (de 15 à 60 minutes). Il se charge ensuite d’estimer W’ et CP. Voici les valeurs que j’ai obtenues:

gcestimate

Quel avantage d’avoir cette donnée en temps réel sur son guidon ?

Afficher sur son guidon la donnée de W’ bal permet d’avoir une idée de l’état de ses batteries. Cela pourra être utile pour savoir si on peut raisonnablement lancer un sprint, placer une attaque ou y répondre, de savoir quelle marge il nous reste dans une montée etc…

Après plusieurs discussions avec plusieurs personnes au sujet de cette donnée, et de la pertinence de l’avoir sous les yeux au cours d’une sortie vélo, je me suis lancé dans l’implémentation de cette donnée via Garmin Connect IQ sur ma fénix 3.

L’implémentation n’a pas été très compliquée une fois les principes de l’équation à peu près compris. Mais une donnée posait problème en particulier: TAU. Ce taux de récupération est calculé sur les données de toute la sortie par GoldenCheetah et les modèles précédents avant de calculer la balance de W’. Mais en calculant la donnée « en direct », impossible de « prédire » TAU, et il s’agit donc de calculer au fur et à mesure la donnée, et d’adapter la courbe. Quoi qu’il en soit, la différence est relativement faible, voici les deux courbes sur un graphique. En rouge, la courbe calculée par mon champ de donnée avec un TAU qui s’adapte en direct. La jaune montre la valeur de W’ Bal telle que calculée par GoldenCheetah.

reco_wprime

Méthode de calcul

Depuis la sortie de la version 1.2 du programme, il est possible de choisir entre deux méthodes de calcul de la donnée W’ Bal, tout comme dans GoldenCheetah. La première, nommée « intégrale » est la méthode utilisée par le Dr. Skiba, et celle qui était implémentée à l’origine dans l’application. Désormais, on peut choisir d’utiliser la méthode « différentielle« , développée par Froncioni et Clarke, qui est devenue la méthode par défaut dans GoldenCheetah. Toutes deux peuvent être sélectionnées dans les paramètres de l’application, soit dans Garmin Connect Mobile, soit dans Garmin Express:

parametres

Les deux méthodes de calcul afficheront une donnée différente, voici les courbes des deux méthodes pour la même sortie:

wprime

En rouge, la méthode initiale, « intégrale« , et en bleu la différentielle. Je ne peux vous donner qu’un seul conseil: testez les deux et choisissez celle qui vous convient le mieux!

Quelques explications en vidéo

Beaucoup de choses seront bien plus explicites via une présentation en vidéo, voilà pourquoi je vous en ai préparé une qui explique tout:

Où trouver ce champ de données, et comment l’utiliser ?

Le champ de donnée vient d’être publié sur l’app store de Garmin Connect IQ, disponible directement ici, sous le nom de W’ balance. Il est actuellement disponible pour fénix 3, Epix et 920XT. Dès que Connect IQ sera disponible pour les Edge 1000 et 520, je le publierai pour ces deux appareils également.

Une fois installé, il faut paramétrer le champ de donnée. Via Garmin Connect Mobile, rendez-vous dans le menu « Appareils -> fénix 3 (ou 920XT) -> Applications Connect IQ -> Champs de données -> W Prime« . On pourra alors entrer les données de CP et de W’ (voir ci-dessus ou la vidéo pour tout savoir sur ces données).

Le développement est encore en cours sur cette app, n’hésitez donc pas à publier vos remarques, commentaires ou rapports de bug ci-dessous !

Enfin disponible pour les Edge 1000 et 520

Le 10 mars 2016, Garmin a rendu compatibles les Edge 1000 et 520 avec Connect IQ, et le champ est désormais disponible avec ces appareils:

garmin_edge520_connectiq_fields_web.jpg

Remerciements

Pour arriver à réaliser cette implémentation, j’ai pu compter sur l’aide précieuse des personnes suivantes, sans qui cela n’aurait probablement pas été possible:

51 commentaires

    1. Bonjour,

      Pour l’instant, ce n’est pas disponible, mais Garmin va prochainement ammener Connect IQ sur les Edge 520 et 1000. Les plus anciennes versions ne seront pas compatibles.

      Sportivement.

      1. Ok merci. Petit off topic, dans Goldenchhetah, je suis noyé sous la quantité de graphes, est-ce qu’il existe un tuto pour commencer à se servir de ce soft et rentrer petit à petit dans les subtilités.
        Bravo pour votre blog, c’est un sacré boulot.
        Michel

        1. Bonsoir,

          Sur le site de GoldenCheetah, quelques tutoriels vidéo permettent de prendre en main certaines fonctions, mais elles sont exclusivement en anglais… Il n’existe à ma connaissance pas vraiment de référence en français sur ce logiciel actuellement malheureusement.

          Sportivement.

  1. Wahoo, super projet.
    Au delà du projet, moi qui ne suis pas cycliste, j’ai appris ce qu’était W’. Et c’est clair que je vois bien l’intérêt de savoir où on en est, pour estimer le potentiel qu’il nous reste. Tu crois que les courbes seraient transposables à la course à pied avec un capteur de puissance type Stryd ?

    1. Hello,

      Des modèles identiques existent pour la course à pied, donc des données existent. Le problème actuel, c’est l’absence sur le marché de capteurs de puissance pour la course à pied. Le Stryd, bien qu’annoncé et marketé comme tel, n’en est pas un. Au mieux, un estimateur de puissance… Mais pour se prévaloir du terme « capteur », l’outil doit *mesurer* la donnée, et le seul moyen de le faire en course à pied, c’est de placer un appareil de mesure sous le pied !

      Sportivement.

      1. Oui oui, je suis bien d’accord avec toi. Stryd fait plus de la devinette que de l’estimation. Il ne mesure rien du vent, rien sur le terrain (bitume, terre, sable), etc…

  2. Bonjour,
    super bonne idée d’avoir fait cette application. je suis tres interéssé par cette app, mais j’ai une ambit3 vertical avec un power tap P1.
    Serait il possible d’avoir les sources pour pouvoir l’adapter et creer une app sur movescount?
    Merci beaucoup

    Julien,

    1. Hello Julien,

      L’algorithme de calcul propre à W’ Bal en lui-même est décrit dans les deux articles liés dans les remerciements par l’auteur de GoldenCheetah. Les fonctions mathématiques simplifiées (qui permettent un calcul de la valeur sans avoir à itérer les données complètes de la sortie) sont décrites ici: http://markliversedge.blogspot.ch/2014/10/wbal-optimisation-by-mathematician.html

      Sur tout le code de mon application, le calcul de W’ utilise donc deux fonction exponentielle en ajoutant un échantillon de puissance par seconde, le reste est propre au calcul de TAU ainsi qu’au « nettoyage » des données « brutes » de Connect IQ (la puissance peut être retournée sous forme d’un int ou une valeur null, mise au format float des paramètres, gestion des valeurs de puissance négative…).

      Pour calculer en « live » la valeur de TAU, j’utilise ceci (ici une implémentation en PHP que j’ai utilisé pour faciliter mes tests), executé chaque seconde:


      if ($power < $CP) { $totalBelowCP += $power; $countBelowCP++; } if ($countBelowCP > 0) {
      $TAU = 546.00 * exp(-0.01*($CP - ($totalBelowCP/$countBelowCP))) + 316;
      }
      else {
      $TAU = 546 * exp(-0.01*($CP)) + 316;
      }

      Enfin, dans ConnectIQ il n’y a pas de fonction mathématique « exp », mais la constante E est disponible, j’utilise donc la fonction pow(E, valeur) pour contourner ce problème.

      Je n’ai jamais développé dans Movescount, et j’ignore quelles fonctions mathématiques sont disponibles. Mais comme je devrais reçevoir une Ambit3 Vertical prochainement, je pourrai essayer d’implémenter l’algo dessus, à moins bien sûr que tu ne partages ton app avant ;-)

      En espérant t’avoir fourni les infos nécessaires !

      Sportivement.

      1. Bonjour merci pour les infos !!
        j’ai commencé à écrire le code sous movescount
        le code se compile mais il manque quelque chose il me semble.
        Dans le code que tu m’as donné, je ne vois pas W’ dans les formules. il manque un morceau non?
        ci dessous la traduction de ton code compatible movescount
        if (SUUNTO_BIKE_POWER_1 0) {
        TAU = 546.00 * Suunto.exp(-0.01*(CP – (totalBelowCP/countBelowCP))) + 316;
        }
        else {
        TAU = 546 * Suunto.exp(-0.01*(CP)) + 316;
        }

        }
        RESULT=TAU;

        Peux tu m’aider?

        1. if (SUUNTO_BIKE_POWER_1 0) {
          TAU = 546.00 * Suunto.exp(-0.01*(CP – (totalBelowCP/countBelowCP))) + 316;
          }
          else {
          TAU = 546 * Suunto.exp(-0.01*(CP)) + 316;
          }

          }
          RESULT=TAU;

        2. Hello,

          Cette partie est effectivement uniquement l’implémentation du calcul de TAU, qui change au cours de la sortie. Pour calculer W’Bal, il faut que tu puisse entrer en paramètres à ton application W’ et CP (tu disposes déjà de TAU du coup, qui entre aussi dans l’équation). Ensuite, appliquer la formule de déplétion de W’ (qui est expliquée dans le lien que je t’ai donné) et la retrancher à W’ pour obtenir le reste, et enfin calculer un pourcentage pour rendre la lecture plus facile…

          Je te propose de continuer la discussion par mail, via le formulaire de contact du site. Mais je crains de ne pouvoir t’aider plus actuellement car je ne connais pas bien le développement sur Movescount, et les possibilités offertes pour implémenter la formule mathématique en question!

      1. Ok merci.
        Pouvons nous utiliser cela d’une autre façon que celle démontrée ds votre petit vidéo? J’ai un srm et un pc8.

        Merci

        1. Bonjour,

          Actuellement, cette donnée n’est disponible « en direct » sur le guidon que via un appareil Garmin compatible ConnectIQ via cette app: https://apps.garmin.com/en-US/apps/6dcfffe5-cd3d-41f3-8ba3-13fa0647b003 comme décrit dans l’article, ou en test actuellement sur une montre Suunto via cette app: http://www.movescount.com/fr/apps/app10747529-W_Bal__%28W_prime_balance%29

          Je ne suis pas certain qu’à ce jour il soit possible de l’avoir sur un quelconque autre support.

          Sportivement.

  3. Tres interessant, bon travail
    Est ce que le code source est disponible quelque part (GitHub….) sa m’intéresserai de comprendre comment sa fonctionne
    Merci

  4. Bonjour
    Bravo pour votre blog , les détails sur les Garmin et surtout l’application Connect IQ pour le W’Balance.
    Je suis le développeur de la plateforme Velobook (suivi d’entrainement cyclisme et éventuellement triathlon ) Virgile Lecoultre la connait bien puisque c’est la plateforme qu’utilise l’équipe Cofidis depuis plus de 7-8 ans maintenant.
    On a échangé récemment avec Virgile justement sur l’utilisation de R (stats) et W’Balance que je viens d’implémenter dans la plateforme grâce aussi au super travail de Mark Liversedge ..
    Concernant Connect IQ , cela fait plus d’un an que je voulais m’y mettre mais trop de travail pour améliorer la plateforme Velobook. Celle-ci est robuste maintenant et je vais pouvoir me consacrer au développement pour mettre en pratique des idées d’appli que j’ai depuis de si nombreuses années. Notamment pour la gestion en temps réel du pacing lors de contre la montre ou parcours vélo de triathlon ou encore pour le travail à l’entrainement.
    Votre développement a pour effet de me motiver d’avantage.
    Si vous souhaitez échanger à ce sujet c’est bien volontiers.

    Je développeur , VB, C#, javascript , Angular, Asp.net depuis de nombreuses années et j’espère pouvoir m’adapter a Monkey C :-)
    L’examen d’exemples comme le votre dans le domaine qui m’intéresse est précieux
    Cordialement

  5. Est ce qu’un data field est forcément associé à une activité existante sur la montre ?
    Je souhaite en créer pour du parapente mais cette activité n’existe pas.

  6. Bonjour,

    Pouvez-vous m’expliquer SVP pour quelle raison sur des séances très intenses, mon W’ tombe dans des valeurs négatives lors de la lecture du graphique sur Golden Cheetah? J’ai réglé dans ‘outils’, puis ‘option’, puis’ athlète’, et ‘puissance’ les valeurs de W’ en J, de FTP, et de CP.

    1. Bonjour,

      D’un point de vue théorique, la valeur de W’Bal ne devrait pas passer au dessous de 0. Si c’est le cas, cela voudrait dire que l’une ou l’autre, voire plusieurs de vos valeurs W’, CP et ou FTP sont sous-estimées… La théorie voudrait qu’à 0 de W’Bal, vous soyez totalement épuisé… Mais dans l’absolu, il est évident qu’il est toujours possible de forcer mentalement et/ou physiquement pour aller chercher un peu plus loin. Reste à savoir de combien vos valeurs passent sous le 0.

      Sportivement.

      1. Merci pour votre réponse. Les valeurs (lors d’une compétition) passent une première fois à -15W’ pendant 20min, et une autre fois à -5 pendant 15min (final de course). Je vais modifier mes valeurs W’, CP, et FTP.

  7. Hello ! Déjà un grand bravo et merci pour la qualité du travail publié sur ce site de manière générale. C’est un vrai puits d’informations dans le domaine.
    J’en viens maintenant à ma question sur la W’ balance, donnée que j’ai découverte grâce à ce post et que je trouve extrêmement intéressante.
    Malgré plusieurs relectures afin d’essayer de répondre seul à ma question, j’avoue que je n’ai toujours pas compris comment calculer mes données CP, W’ et TAU via le programme « GoldenCheetah »…
    J’ai effectué différentes sorties VTT (équipé avec capteurs de vitesse et de cadence GARMIN) en utilisant ma Fenix 3, mais je ne sais pas comment obtenir, ou à quel endroit trouver, la puissance fournie en watts que je dois indiquer dans GoldenCheetah : comment obtenir cette donnée ? faut-il un capteur spécifique ? et si j’ai bien compris on doit faire une sortie de 3 min et une autre de 20 min, en trouvant cette fameuse donnée en watts, mais à quelle intensité la sortie ?
    Merci d’avance pour votre précieuse aide et navré pour le niveau basique de ma question..

  8. Bonjour,

    Ca fait un moment que j’utilise votre application.
    Je me demandais si il était possible d’avoir aussi le pourcentage estimé d' »énergie » restant.
    Car ici on a l’info de l’intensité de l’effort mais pas ou on en est depuis le départ.

    Merci

    JF

    1. Bonsoir,

      Je ne saisis pas bien ce que vous souhaitez afficher, car le but de W’Bal, c’est justement d’afficher l’énergie restante… On commence à 100% et cela baisse si on se fatigue, puis remonte si on se repose, donc on affiche l’éneregie disponible, et si tout est parfaitement configuré, lorsque la valeur est à 0, on est épuisé…

      Sportivement.

      1. Salut,

        Dans mon cas FTP 300 et W’36000
        Dans une cote, si je monte au dessus de CP ma W’ descend, descend puis aprés une lorsque le profil s’inverse donc une descente et si celle ci est assez longue je me retrouve a +95
        Je ne dois pas pouvoir descendre a 10 de w’ et remonter a +90 indéfiniment il doit y avoir une « quantité » totale au dela de laquelle on ne peut aller.

  9. Bonjour,

    Je suis intéressé pour utiliser cette application sur mon Garmin 520 mais est-il obligatoire d’avoir un capteur de puissance sur le vélo ?
    J’ai le capteur de fréquence de pédalage ainsi que le capteur de rotation de la roue. Est-ce suffisant ?

    Merci

    Cdt

  10. Bonjour,
    J’ai installé depuis un certain temps votre appli mais impossible de corriger les donnés c’est toujours 250/20000 ??
    Aussi, en roulant seul le pourcentage change… les Kj reste à 20000?
    Merci

    1. Non il est possible de régler ces données dans le paramétrage de l’application. Et si ces données sont renseignées correctement, le nombre de Kj devrait bouger (c’est d’ailleurs un pourcentage qui devrait s’afficher du coup).

      Sportivement.

      1. Sur mon edge 1000, je ne peux changer les valeurs qu’à l’installation. Si je veux les modifier, il faut que je supprime l’appli et que je la réinstalle.

  11. bonjour, est ce normal que lors d’un Gimenez, pendant l’ I3 (à 250w) le pourcentage remonte comme si je recuperais (sur la courbe sur garmin connect ça remonte d’ailleurs exactement à la même vitesse que lorsque je suis en récup après coup a 130W) . quand je finis mon Gimenez l’app me dit que je suis a 75% hors je suis plutôt a 10-15% physiquement… comme apres un gimenez :D
    Mon CP : 306W
    5min à 340W
    Golden cheetah me dit W’ 10500w

    1. Si je me souviens bien gimenez c est 9’à pma et 4 a 80 % du coup ça.ne devrait me me pas descendre vu que tu ne dépassés pas ta pma. Le w’balance ne doit descendre qu au dessus de cp pas si tu restes en dessous

      1. effectivement tant que tu dépasses pas le CP ça descend pas, enfin si W’ marche comme ça, c’est juste débile comme truc. Donc si je reste a 99% de mon CP le truc considère que je suis en récup et que je peux rester comme ca indéfiniment alors que par définition c’est environ 1h a fond … et que l’I3 du gimenez c’est une allure que tu es censé tenir 2h grand max

        A la fin de mon gimenez grosso modo il me dit que j’ai récupéré à fond, comme si je pouvais faire 20 Gimenez d’affilé

  12. C est aussi parce que tu mélanges 2 approches différentes (training peau et golden cheetah ) et parce que ftp ou ~cp c est plutôt 85% de ftp que 95%

    1. Je penses que c’est toi qui te mélange déjà dans ta première réponse tu parles du fait que ca ne descend pas car ca ne dépasse pas la PMA alors que c’est du CP et non de la PMA qu’il s’agit. encore heureux que W’ ne descende pas qu’en dessus de la PMA !

      Je n’utilise ni TP ni GC mais Gutai et le CP est a quelques W prés un poil plus haut que ma FTP extraite du test CP20
      gutai n’utilise pas la FTP de toute facon

      je suis désolé mais je ne comprend pas ce que tu veux dire : « ftp ou ~cp c est plutôt 85% de ftp que 95% »
      et non le CP n’est pas 85% de la FTP si c’est ça que tu voulais dire
      comme expliqué ici : https://staminist.com/read.php?1,434

      à un moment si le but de W’ c’est d’indiquer ou tu en es de la fatigue et ce qu’il te reste en énergie, si après un Gimenez ça te dis que tu est à peine entamé c’est que ça ne marche pas

  13. Me.suis mal exprimé ( suis.au boulot et sur mon tel du coup j ai fait certains raccourci et le copier coller n est pas.toukour top )perso je n’utilise que gc et il calcule ma
    Cp si je la compare à ma puissance sur 20′ sa correspond a 88% et pas a 95% il n y a pas mis a part certains spécialistes du contre la montre ou triathelte beaucoup de monde capable de tenir 1heure 95% de ce qu il.tiennent sur 20′ si tu fais des recherches sur Trimes tu devrais trouver des infos plus explicites que les miennes comme ici et il y en a d autres https://www.trimes.org/2016/09/entrainement-w-prime-enfin-un-outil-pour-tirer-le-maximum-dun-powermetre/

  14. Bonjour, j’utilise GC sur Home trainer depuis 2ans. Je viens d’acquérir un capteur de puissance pour afficher votre W’ sur mon vélo de route. Quel serait la méthode ( entraînement) pour augmenter sa valeur W.Felicitations pour le travail effectué.
    Jean

  15. Très intéressant ! Cependant il y a quelque chose que je ne comprends pas bien. Dans votre exemple vidéo, la PC est à 266w; lorsque vous roulez en dessous de cette CP, votre W’ augmente jusqu’à une limite de 100%. Or, on sait que vous ne pourrez pas tenir 250w, valeur qui se trouve pourtant en dessous de 266w, de manière indéfinie.
    Est-ce le second indicateur dont vous parlez à la fin de la vidéo qui permettrait de nuancer la valeur de W’ ?

  16. Bonjour,
    J’ai récupéré mes valeurs (effort court 3′ 364W et Test CP20 280W) via mon home trainer (un Tacx)
    Et comme j’étais vraiment très proche de vos données perso (via la vidéo) j’ai pris CP268 et 17000J
    J’ai installé votre appli sur mon Garmin 830
    Puis j’ai testé tout ce petit monde en sortie route temps dans les zones fréq card
    5:2% 4:62% 3:26% etc
    Mais malheureusement mon W’ n’a pas evolué d’un iota ?
    Ma question est donc la suivante faut-il aussi pour que l’appli fonctionne des capteurs de puissance (dans les pédales par ex)
    Ou alors ai-je un problème de paramétrage ?
    Sportivement Christophe

  17. Je ne crois que les valeurs par defaut de l appli soit celle de Greg.
    Ensuite ça ne fonctionne qu avec un capteur de puissance, donc prendre ses valeurs sur un HT ne suffira pas à pouvoir utiliser l appli sur un vélo sans capteur de puissance quelqu il soit

    1. En fait quand j’ai voulu dire sur : comme j’étais vraiment très proche de vos données perso (via la vidéo) j’ai pris CP268 et 17000J; j’ai paramétré ces 2 valeurs dans mon garmin (sans consulté GoldenCheetah) car Greg, lui avait en effort court 360 (moi 364) et en effort long 280 (moi aussi 280)

      Pour revenir au sujet : comme je n’ai pas de capteurs sur mon route ou mon VTT => c’est mort
      Bien dommage, car cette appli est vraiment intéressante

      Merci pour votre réponse

Laisser une réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.