Feature #99
Von Julius Haman vor 2 Tagen aktualisiert
## Konzept Ist-Stand Jeder Gang Standard-Gangschaltung hat 14 Gänge mit Entfaltung in m. Aus der Trittfrequenz und der Entfaltung wird eine direkt konfigurierte "Sollgeschwindigkeit" berechnet. Daraus wiederum wird die Leistung berechnet, die aufgebracht werden müsste, um diese Geschwindigkeit im jeweiligen Gelände zu erreichen. Das führt zu Sprüngen in der Leistung (unruhiges Fahren) und auch dazu, dass bei 0 % Steigung (Basisleistung einem Gefälle schnell auf die Minimalleistung (25 Watt) heruntergeregelt wird. Auch im höchsten Gang, wenn die Maximalgeschwindigkeit noch nicht erreicht ist. (Vorherige Lösungsversuche dazu: Ticket #95 - Beschleunigungsformel, verworfen wegen Leistungs-Oszillation bei normalem Trittfrequenz-Rauschen. Ticket #97 - linearer Differenz-Zuschlag, verworfen wegen Wirkungslosigkeit bei starkem Gefälle. Ticket #98 - feste Referenz-Kadenz + Gang-Index * Schrittweite) statt einer Entfaltung Gefälle-bis-Sollgeschwindigkeit-als-eben, funktionierte im Regelfall, aber Freilauf-Ausstieg in Metern. Geschwindigkeit ist nie ein vorgegebenes Ziel, sondern ergibt sich ausschließlich aus der tatsächlich gesendeten Leistung. einen härteren Gang erzeugte weiterhin einen unrealistischen Leistungssprung, siehe unten.) ## Formel Soll-Stand (beschlossenes Konzept) P0(Gang) = Statt einer Entfaltung je Gang gibt man künftig eine Wattleistung (bei 0% Steigung) direkt an - konfigurierbar über eine Basisleistung + (Gang - 1) * 1 bei 0%) und eine Schrittweite zwischen den Gängen. Bei Gefälle (Steigung < 0) wird immer die volle P0(Gang) aufgeschaltet. Bei Aus dem eingelegten Gang und der Steigung >= 0 kommt ein Steigungsaufschlag dazu, gewichtet im Profil kann dann berechnet werden, welche Leistung erbracht werden müsste. Zusammen mit dem Realitätsfaktor: einem konfigurierten Realitätsfaktor (10 % - 100 % einstellbar in 5 %-Schritten) kann dann die tatsächlich aufgeschaltete Leistung berechnet werden - NUR bei Steigungen (siehe Gefälle-Regel unten für Gefälle): Leistung(Gang, Steigung) = P0(Gang) + Steigungsaufschlag(Steigung) * Realitätsfaktor Wichtig (Nachbesserung nach Live-Test, ersetzt eine frühere, fehlerhafte Zwischenversion dieser Formel): Der Steigungsaufschlag wird NICHT je Gang einzeln an einer dessen eigener 0%-Sollgeschwindigkeit berechnet, sondern EINMAL an der festen Referenzgeschwindigkeit (der Ebene-Geschwindigkeit von Gang 1) berechnet, unabhängig 1 (unabhängig vom tatsächlich eingelegten Gang. Dadurch ist Gang) und dann auf alle Gänge gleichermaßen aufaddiert: Steigungsaufschlag(Steigung) = P_Steigung(speedRef, Steigung) - Basisleistung, mit speedRef = Geschwindigkeit von Gang 1 bei 0 % Steigung Grund: mit einer je Gang eigenen Referenzgeschwindigkeit wuchs der Leistungsabstand Steigungs-Effekt bei höheren Gängen überproportional und multiplizierte sich mit dem Realitätsfaktor in den Abstand zwischen benachbarten Gängen hinein - beim Live-Test sprang die Leistung bei jeder steiler Steigung teils um ein Vielfaches der Schrittweite von einem Gang zum nächsten, statt exakt um die konfigurierte Schrittweite, Schrittweite. Mit der festen Referenzgeschwindigkeit gilt jetzt, bei jeder Steigung (eben, bergauf, bergab) und Gang 1 ergibt auf jedem Realitätsfaktor: der Ebene Leistungsabstand zwischen benachbarten Gängen ist immer exakt die Basisleistung, unabhängig vom Realitätsfaktor. konfigurierte Schrittweite ("ein Gang rauf = 1x Schrittweite, ein Gang runter = 1x Schrittweite - egal welche Steigung"). Nur die "Giftigkeit" der Steigung selbst (wie viel Watt der gleiche GLEICHE Gang bei mehr Prozent zusätzlich braucht) hängt bleibt vom Realitätsfaktor ab, abhängig, jetzt für alle Gänge gleich stark für alle Gänge. statt vorher überproportional bei höheren Gängen. Bei Steigung = 0 ist der Aufschlag immer exakt 0, Gang 1 ergibt auf der Ebene also unabhängig vom Realitätsfaktor immer genau die konfigurierte Basisleistung. Beispielrechnung mit Basisleistung 80 W, Schrittweite 10 W, Realitätsfaktor 50 % (Nutzergewicht 75 kg, Standard-Cr/CwA) - man beachte den überall exakt gleichen Abstand von 10 W zwischen den Zeilen, in jeder Spalte: | Gang | Leistung bei 0% | Watt bei 1% | Watt bei 5% | Watt bei 12,9% | | ----: | ----: | ----: | ----: | ----: | | 1 | 80 W | 108,2 W | 220,5 W | 440,4 W | | 2 | 90 W | 118,2 W | 230,5 W | 450,4 W | | 3 | 100 W | 128,2 W | 240,5 W | 460,4 W | | 4 | 110 W | 138,2 W | 250,5 W | 470,4 W | | 5 | 120 W | 148,2 W | 260,5 W | 480,4 W | | 6 | 130 W | 158,2 W | 270,5 W | 490,4 W | | 7 | 140 W | 168,2 W | 280,5 W | 500,4 W | | 8 | 150 W | 178,2 W | 290,5 W | 510,4 W | | 9 | 160 W | 188,2 W | 300,5 W | 520,4 W | | 10 | 170 W | 198,2 W | 310,5 W | 530,4 W | | 11 | 180 W | 208,2 W | 320,5 W | 540,4 W | | 12 | 190 W | 218,2 W | 330,5 W | 550,4 W | | 13 | 200 W | 228,2 W | 340,5 W | 560,4 W | | 14 | 210 W | 238,2 W | 350,5 W | 570,4 W | (12,9 % ist die Steigung aus Julius' Live-Test-Meldung: Gang 1 liegt dort mit 440,4 W bereits über dem Geräte-Maximum von 400 W - erwartungsgemäß, da bei so einer Steigung selbst der 1. Gang schon voll ausgelastet ist; erst ab etwa Gang -4 (390,4 W) fällt die Leistung wieder unter das Maximum.) Die Rohwerte werden vor VOR der Realitätsfaktor-Verrechnung nicht auf Minimum/Maximum geklemmt, geklemmt - sonst würde die Information verzerrt, bevor überhaupt interpoliert wird. Geklemmt wird erst das fertige Mischergebnis. Negative Gänge bleiben weiterhin möglich (Basisleistung minus n * Schrittweite, nach unten durch das Geräte-Minimum begrenzt). **Gang-Anzahl nach oben UND unten offen** (entschieden, kein festes 14-Gänge-Limit mehr): Schalten ist in beide Richtungen erlaubt, solange die bei der AKTUELLEN Steigung tatsächlich fällige (ungeklemmte) Leistung des aktuellen Gangs noch nicht die Geräte-Grenze in Schaltrichtung erreicht hat (die bereits vorhandene, geräteabhängige Live-Leistungsspanne, Ticket #40) - nicht die Ebene-Leistung P0(Gang), da die sonst bei steiler Steigung ein sinnvolles Weiterschalten blockieren würde, obwohl die real anliegende Leistung noch weit von der Geräte-Grenze entfernt ist. Dadurch variiert die tatsächliche Gang-Anzahl je nach Basisleistung/Schrittweite/Realitätsfaktor, je nach aktueller Steigung UND je nach angeschlossenem Ergometer (unterschiedliche Maximalleistung). ## Freilauf (Rollen) Gefälle und Rollen (Freilauf) Greift Bei Gefälle wird IMMER die Standardleistung des eingelegten Gangs bei 0% (P0) aufgeschaltet - keine Realitätsfaktor-Verrechnung bei Gefälle, nur bei Steigungen. Das gilt unabhängig davon, wie steil das Gefälle ist - P0(Gang) bleibt durchgehend bestehen (wächst mit dem Gang), bis einer der beiden folgenden Freilauf-Trigger greift. **Rollen (Freilauf) greift in genau zwei Fällen, sonst bleibt durchgehend P0(Gang) aufgeschaltet, auch bei Gefälle: Fällen:** 1. Trittfrequenz 0. 0 (der ursprüngliche Zweck des Freilaufs, siehe die frühere Änderung "Freilauf bergab bei virtueller Gangschaltung") - Beine hören auf zu treten, das Rad rollt bei Gefälle trotzdem weiter, statt sofort auf P0(Gang)-Widerstand zu treffen bzw. auf 0 km/h gezwungen zu werden. 2. Die Rollgeschwindigkeit erreicht die konfigurierte Maximalgeschwindigkeit. Maximalgeschwindigkeit des Fahrrades. Klarstellung nach genauerer Prüfung: Julius' ursprüngliche dritte Formulierung ("Beschleunigung durchs Gefälle > Beschleunigung durch die aufgelegte Leistung") ist bei einem sinnvoll konfigurierten, immer positiven P0(Gang) rechnerisch nie zusätzlich erfüllbar - jede positive Leistung beschleunigt per Definition stärker als reine Schwerkraft allein. Diese dritte Bedingung entfällt daher ersatzlos; nur die zwei oben genannten Trigger bleiben. ## Neue, nutzerbezogene Einstellungen (pro Nutzer, (alle auch live während des eines laufenden Trainings änderbar) - Basisleistung Gang 1 bei 0 % Steigung (Standard: 75 W) - Schrittweite zwischen den Gängen (Standard: 25 W) - Realitätsfaktor, 10-100 Realitätsfaktor (10 % in - 100 %, 5 %-Schritten (Standard: 40 %) %-Schritte) - Maximalgeschwindigkeit des Fahrrades (Standard: (z. B. 70 km/h) ## Gang-Anzahl Verifikation durchgeführt (Nachsimulation gegen echte Trainingsdaten, Training #14) Nach Mit den Beispielwerten oben (Basisleistung 80 W, Schrittweite 10 W, Realitätsfaktor 50 %, Maximalgeschwindigkeit 70 km/h) gegen die echten, tickweise rekonstruierten Gangwechsel aus Training #14 durchgerechnet (nach Korrektur der Freilauf-Logik, siehe oben): - Bergauf (Gänge 3-5, Steigung ~4,1 %): Leistung steigt stabil und unten offen, gangabhängig, keine Sprünge zwischen den Ticks. - Übergang ins Gefälle: Leistung sinkt sauber mit P0(Gang) mit, kein festes Limit. Schalten künstliches Kleben am Minimum. - Steile Abfahrt (-8,2 %), Gang schaltet automatisch bis auf 14 hoch: Widerstand bleibt die GESAMTE Abfahrt über spürbar und wächst mit dem Gang, kein einziger Freilauf-Einstieg, da die simulierte Geschwindigkeit die Maximalgeschwindigkeit (70 km/h) nicht erreicht und weiterhin getreten wird. - Bodenanstieg am Ende: Leistung nimmt wieder sauber zu, passend zur Steigung. Insbesondere das an Ticket #98 aufgefallene Problem (Freilauf in einem Gang verlassen, in einen härteren Gang schalten, Leistung springt sofort auf ~370 W) tritt hier nicht mehr auf: P0(Gang) ist erlaubt, solange eine feste, moderate Konstante (nicht mehr aus einer physikalisch berechneten, oft extremen Zielgeschwindigkeit rückgerechnet) und wächst beim Hochschalten nur um die bei konfigurierte Schrittweite, nicht sprunghaft. Live-Test (2026-09-28, nach der aktuellen Steigung tatsächlich fällige (ungeklemmte) Grundumsetzung): Basisformel bestätigt, aber zwei Nachbesserungen nötig, beide umgesetzt und wieder live zu testen: (1) die oben beschriebene Entkopplung von Gang-Spreizung und Steigungs-Giftigkeit, (2) die Schaltgrenze prüft jetzt die Leistung des aktuellen AKTUELLEN statt des NÄCHSTEN Gangs gegen die Geräte-Leistungsspanne in Schaltrichtung noch nicht erreicht hat Geräte-Grenze (verhindert Hängenbleiben bei extremer Steigung, siehe oben). ## Umbau In diesem Zug wird der gesamte Bereich der (Entfaltung-basierten) Gangschaltungs-Konfiguration zurückgebaut (Gearshifter/Gear-Entities, Konfigurationsoberfläche, Prefs.Gearshifter) - dadurch variiert ersetzt durch die nutzbare Gang-Anzahl je nach Einstellungen, Steigung vier neuen Einstellungen oben. Umgesetzt und angeschlossenem Gerät. committet (siehe Commit-Historie). ## Leistungsrampe Verzögerte Leistungsänderung (asymmetrische Rampe) Leistungsanstiege Beschlossen: Leistungsänderungen werden gedrosselt (maximal 80 nur bei einem ANSTIEG verzögert (z. B. maximal +80 W pro Sekunde), Sekunde) - ein Rückgang (auch der Einstieg in den Freilauf) wirkt weiterhin sofort. Begründung: eine plötzliche Entlastung fühlt sich nie falsch an, ein plötzlicher Kraftanstieg (z. B. Freilauf verlassen, in einen härteren Gang schalten) dagegen schon. ## Zielleistungs-Anzeige Zielleistung in der Live-Anzeige Beschlossen: Zusätzlich zur aktuell angewandten aufgeschalteten (ggf. noch hochlaufenden) Leistung zeigt die wird in der Live-Werte-Leiste die Zielleistung, "Zielleistung" (das ungebremste Rechenergebnis, wohin die Rampe unterwegs ist) angezeigt, solange die Gangschaltung aktiv ist. ## Umbau Die alte, Entfaltung-basierte Gangschaltungs-Konfiguration (Gearshifter/Gear-Entities, eigene Konfigurationsseite, negative Gänge als separate Einstellung) ist vollständig entfernt. - damit erkennbar ist, wohin sich die Leistung durch Steigungsänderung oder Schalten gerade entwickelt. ## Offen Noch offen - Genaue Rampen-Geschwindigkeit (aktuell 80 W/s, (Watt pro Sekunde) - Startwert versus fest codiert) codierte Konstante oder eigene Einstellung. Wird beim Live-Test festgelegt. - ggf. eigene Einstellung, je nach Live-Test-Eindruck. Aktuell im Live-Test bei Julius: Gang-Spreizung bei steilen Rampen, Verhalten der Schaltgrenzen, Rampen-Gefühl.