Estimation de la puissance à vélo - Partie 1: théorie et mise en oeuvre
Jean-Claude Hujeux
Introduction
Mon cockpit 2024 de suivi d'entrainement inclut des indicateurs cardio et puissance. Mon vélo de route a un capteur de puissance. Par contre, pour mes sortie cyclotourisme (en VTT) ou à la Réunion (où j'emprunte le VTT de ma fille qui y réside), je n'ai pas de capteur de puissance.
Pour calculer l'indicateur d'aptitude de puissance, qui nécessite une valeur de la charge puissance pour chaque séance effectuée, je m'en tire en utilisant la charge cardio lorsque la charge puissance n'est pas disponible. Les deux sont partiellement corrélés, comme le montre le diagramme ci-dessous, qui présente la charge puissance obtenue via la mesure du capteur de puissance sur mon vélo de route, versus la charge obtenue via le capteur cardiaque:
Figure 1: Charge cardio en fonction de la charge puissance mesurée depuis le 01/01/2023
On observe que les moyennes de charge cardio et puissance pour l'ensemble des séances sont très proches (127 versus 128). C'est une bonne nouvelle: en moyenne sur l'ensemble des séances la corrélation est excellente!
C'est nettement moins spectaculaire séance par séance, mais la tendance est là. R2 est le coefficient de détermination. Plus il est proche de 1, meilleure est la corrélation. A 0,62 on pourrait espérer mieux, ce que confirme l'effet visuel du nuage de points
Il est possible d'estimer la puissance à partir des données de distance et d'altitude, disponibles sur tous les gps.
Si la corrélation entre charge puissance mesurée et charge puissance estimée est meilleure que celle obtenue avec la charge cardio, alors cette charge puissance mesurée pourrait remplacer la charge cardio en absence de mesure de puissance.
Dans cette première partie, j'aborde la partie théorique et la mise en œuvre dans tukos, à partir des données Strava. Dans la deuxième partie je présenterai les résultats obtenus et les conclusions qu'on peut en tirer..
La théorie
De nombreux articles étudient en détail la mécanique du vélo. Je m'en tiens ici à l'essentiel l'essentiel dans le but de prédire la puissance du cycliste à partir des données enregistrées par son gps, et dans le système d'unités internationales (mètres, secondes, kilogrammes).
Le principe fondamental de la dynamique appliqué au cycliste en déplacement s'écrit:
Ce qui signifie qu'il doit vaincre "à la pédale" (force de pédalage ) les forces de résistance au roulement , de pesanteur , de résistance à la pénétration dans l'air et de freinage . On n'a pas inclus les forces d'inertie de rotation (en particulier des roues), que l'on considère négligeables. M est la masse du coureur, son vélo et équipements, est la variation de vitesse durant l'intervalle de temps .
Si la force de pédalage est supérieure aux autres forces, le vélo accélère ( , si elle est inférieure il ralentit, si elle est égale, la vitesse est constante.
De la formule précédente, on déduit l'expression de la puissance de pédalage P, produit de la force de pédalage par la vitesse:
On peut ne pas tenir compte de la force de freinage : lorsque l'on pédale, on ne freine pas (enfin, en principe 😉), donc la force de freinage est nulle. A l'inverse, lorsque l'on freine, on ne pédale pas, donc la puissance est nulle: pas besoin d'appliquer la formule (ou plus exactement lorsque la formule sans force de freinage prédit une puissance négative, c'est justement parce qu'il y a freinage, donc la puissance est nulle).
On obtient:
où:
g est l'accélération de la pesanteur (9,81 m.s-2)
: la force de résistance au roulement est proportionnelle au poids du cycliste, ce qui est une observation empirique:
est le coefficient de résistance au roulement, adimensionnel, et qui intègre la résistance au roulement des pneus sur la chaussée et l'ensemble des forces de frottement (à l'exception du freinage). Sa valeur est déterminée empiriquement, typiquement entre 0,01 et 0,02, dépendant avant tout du type de pneu et du gonflage, qui ne varient pas significativement durant une sortie (sauf crevaison 😣), mais aussi du revêtement qui lui varie durant la sortie (même si on ne fait pas Paris-Roubaix tous les jours🤣)
: la force de pesanteur est proportionnelle à la pente (0,01 pour une pente de 1%), c'est une loi de la physique (la gravitation universelle de Newton), et c'est parce que c'est la composante verticale de la vitesse qui importe.
: la force de résistance à la pénétration dans l'air est proportionnelle au carré de la vitesse relative du coureur dans l'axe de la progression du cycliste, ce qui est une observation empirique:
est le coefficient de résistance à la pénétration dans l'air de l'ensemble coureur et son vélo, adimensionnel, dont la valeur est déterminée empiriquement, entre 0,1 (voire moins: coureur en position de recherche de vitesse, à l'abri derrière un autre cycliste ou au milieu d'un peloton) et 0,3 voire plus (cyclotouriste ou vététiste). Il varie au cours d'une sortie en fonction de la position du coureur sur le vélo et dans le groupe ou peloton.
est la vitesse du vent dans l'axe de progression du cycliste, négative si le vent est de face, positive s'il est de dos.
On ignore l'effet du vent latéral, même s'il n'est pas forcément négligeable
Application à une activité enregistrée dans Strava
Les applications gps enregistrent l'activité: itinéraire et mesures des capteurs, avec deux types d'information: les informations générales sur la séance (distance parcourue, fréquence cardiaque moyenne, etc.) et les flux d'informations enregistrées par les capteurs, ou calculées, seconde après seconde (en excluant les pauses), que Strava appelle "streams".
Les flux Strava pertinents pour notre discussion sont:
distance stream, en mètres: c'est la distance parcourue depuis le départ
altitude stream, en mètres: c'est l'altitude
heart stream, en battements par minute (bpm); c'est la fréquence cardiaque
watts stream: en watts: c'est la puissance mesurée si un capteur de puissance est présent
grade_smoothstream, en pourcentage: c'est une pente calculée par Strava, qui ne décrit pas comment le calcul est effectué, très probablement la différence des altitudes mesurées avec un algorithme de lissage
vélocity smoothstream, en mètres par seconde: c'est la vitesse calculée par Strava, qui ne décrit pas comment elle est calculée, très probablement la différence des distances parcourues avec un algorithme de lissage.
watts calcstream, en watts: c'est la puissance calculée par Strava, qui ne décrit pas comment elle est calculée, et qui est fournie pour les activités vélo, même lorsque watts stream est présent
On pourrait se contenter d'utiliser watts calcstream, en l'absence de capteur de puissance, mais ne sachant pas comment Strava le calcule, notre approche est de calculer un flux de puissance estimée, en appliquant la formule de puissance ci-dessus et les informations mesurées fournies par Strava, puis de faire des analyses comparatives permettant de faire un choix éclairé.
Pour appliquer la formule, il faut connaître les paramètres suivants: le poids (cycliste, son vélo et chargement), le coefficient de résistance au roulement, le coefficient de résistance à la pénétration dans l'air, et la vitesse du vent dans l'axe de progression du cycliste. Des simplifications sont nécessaires pour que l'outil soit utilisable:
on suppose qu'au cours d'une séance les paramètres sont constants (valeur moyenne)
des valeurs par défaut sont fournies pour le poids du vélo et son chargement, le coefficient de résistance au roulement et de pénétration dans l'air, pour chaque vélo enregistré, modifiables par l'utilisateur
la valeur par défaut de la vitesse du vent dans l'axe de progression du cycliste est nulle (ce qui qui est vrai en moyenne pour un vent constant et un parcours avec retour au point de départ)
Notons que c'est ce que fait Strava pour sa puissance estimée watts calcstream, qui ne demande à l'utilisateur que de fournir son poids, et pour chaque vélo le poids de ce vélo et son type (vélo de route, VTT, contre la monter, etc.). En ne faisant varier que le type de vélo à poids constant, on observe que la puissance estimée par Strava est modifiée de façon importante, ce qui laisse supposer que Strava donne une valeur différente des coefficients de résistance au roulement et de pénétration dans l'air pour chaque type de vélo.
Il ne reste qu'à appliquer la formule en utilisant la vitesse et la pente, seconde après seconde, avec deux calculs possibles:
à partir de distance stream et altitude stream: la vitesse et la pente s'en déduisent très simplement en utilisant les valeurs à l'instant donné et à l'instant précédent, qu'on appelle flux de puissance estimée brute.
directement à partir de velocity smooth stream et grade smooth stream., qu'on appelle flux de puissance estimée.
Mise en œuvre dans tukos - Lissage
Le calcul du flux de puissance estimée brute et du flux de puissance estimée a été implémenté dans tukos.
Les mesures de distance et d'altitude sont imprécises, par nature de la mesure gps elle -même. Pour éviter des fluctuations irréalistes de la puissance calculée, un lissage des flux distance stream et altitude stream est nécessaire avant leur utilisation dans la formule.
Sachant qu'il est d'usage d'appliquer un lissage sur les puissances mesurées, sous la forme d'une moyenne pondérée des 30 dernières secondes, et ce afin de se rapprocher de la variabilité des fréquences cardiaques, on applique à distance stream et altitude stream le même lissage.
De même on observait des fluctuations importantes lors du calcul du flux de puissance estimée à partir de grade smoothstream et velocity smoothstream non lissés. Pour y remédier, le même lissage leur est appliqué.
Conclusion - Prochaine étape
Nous avons 3 candidats potentiels pour remplacer la fréquence cardiaque pour l'estimation de la charge de puissance: watts calcstream, fourni par Strava mais non documenté, le flux de puissance estimée brute et le flux de puissance estimée, qui utilisent le modèle théorique décrit dan ce post et ont été implémentés dans tukos.
Avons nous parmi ces candidats le remplaçant de la charge cardiaque actuellement utilisée lorsque la charge puissance mesurée n'est pas disponible ?
C'est l'objet de la deuxième partie de ce post , où je présente les résultats de l'application de ces 3 candidats sur mes séances d'entrainement.