Que nenni, il est inutile de demander au firmware de faire des miracles : une roue c'est bête comme chou, elle applique simplement la 3ième Loi de Newton que l'on résume à l'aide de deux mots : action ... réaction. C'est une Loi solide, à ce jour il n'y a pas d'exception. L'exemple classique est le coup de canon : faire gicler l'obus crée du recul, c'est absolument incontournable.
Donc, pour avancer le moteur crée un couple entre son rotor (pneu) et son stator (lié à la coque+pédales). Pour que l'ensemble roule à vitesse constante en conservant sa position verticale, il est indispensable que le pilote exerce un couple de déséquilibre qui compense exactement le couple d'avancement. C'est trivial, il faut bien que le moteur s'appuie quelque part, et ce quelque part c'est... les tripes du pilote.
Bien sûr, en réalité c'est l'inverse : le pilote impose un déséquilibre que l'asservissement annule en gérant la vitesse.
Et c'est pour ça que quand on aborde une montée, le pilote doit appuyer davantage à l'avant des pédales, afin que le moteur génère un couple suffisant pour grimper.
C'est la même chose quand on pousse la roue à l'aide du trolley : pour monter il faut pousser davantage, ce qui est frustrant car même avec un moteur de 2kW, c'est le pousseur qui produit l'effort. En mode trolley, l'angle des pédale n'a strictement aucune importance, et avec pilote l'angle à une légère influence, à peine quelques %, due à la projection verticale en cosinus. L'angle nul est le plus efficace, mais pas forcément le plus confortable.
Les motos à vilebrequins longitudinaux (BMW...etc) ont le même problème : pour avancer le pilote est légèrement de travers, Pour bien saisir tout ça, il faut étudier un peu la physiques des engins pendulaires.