Anstiege: Höhenprofil und Kletter-Anzeige¶
TrailBridge schickt beim Abfahren einer GPX-Route das Höhenprofil des
nächsten Anstiegs (Protokoll, „Höhenprofil-Service").
Der BikeComputer findet darin Fuß und Gipfel, bewertet den Anstieg und zeigt ihn auf dem Screen
RimRidgeClimb (Design, §6).

| Teil | Datei |
|---|---|
| Wire-Format | src/BikeProfileProtocol.h |
| Algorithmus (rein, Host-Test) | src/ClimbProfile.*, test/native_climb/climb_test.cpp |
| Anbindung: BLE, Position, Einstellungen, CLI, Web, Demo | src/ClimbMonitor.*, BLEDevices::subscribeProfile() |
| Screen | src/ui/RimRidgeClimbCustFunc.*, UIFacade::updateClimb() |
Was vom Handy kommt, und was die Firmware daraus macht¶
TrailBridge schickt den Anstieg voraus: die Höhen von der aktuellen Position
bis zum Gipfel, sobald der Fuß höchstens 500 m entfernt ist – in einem Frame.
Bis 5 km im 25-m-Raster, für längere Anstiege gröber (bis 250 m; der 36 km
lange Galibier von Süden kommt mit 200 m). PROFILE_NONE kommt am Gipfel.
Auch kleine Hügel (ab 10 m Höhenunterschied) werden geschickt.
Die Firmware
- findet den Anstieg: Fuß = erster Punkt, ab dem die nächsten 100 m im
Mittel 3 % steigen. Gipfel = der letzte Punkt vor einem Gefälle von mehr als
30 m oder vor 2 km ohne mittlere Steigung von 0,5 % – oder das Profilende.
Ein kürzeres Flachstück oder eine Senke beendet den Anstieg also nicht; der
Galibier von Norden sind zwei Anstiege (Abfahrt vom Télégraphe nach Valloire).
TrailBridge sucht mit denselben Kriterien (
ElevationProfile.javadort) – die Standardwerte beider Seiten gehören zusammen. - fügt Frames zusammen (gleiches Raster, überlappend) und behält den schon gefahrenen Teil, bis zu 320 Schritte. Das braucht es nur, wenn ein Anstieg selbst im 250-m-Raster nicht in einen Frame passt.
- führt einen Anstieg fort, wenn das Handy
PROFILE_NONEund kurz danach ein neues Profil schickt. - kennt die Position aus der Restdistanz der Nav-Frames, zwischen zwei Frames fortgeschrieben mit der Strecke des Speed-Sensors.
Höhenangaben sind netto: Gipfel minus Fuß, Gipfel minus Fahrer.
Kategorien¶
Punktzahl = Länge [m] × mittlere Steigung [%] = 100 × Höhenunterschied. Das ist die Skala von Strava und Garmin (ClimbPro) für 4 bis HC; 5 und 6 setzen sie nach unten durch Halbieren fort.
| Kategorie | Punkte ab | Höhenunterschied ab | Beispiel |
|---|---|---|---|
| 6 | 2 000 | 20 m | 400 m mit 5 % |
| 5 | 4 000 | 40 m | 800 m mit 5 % |
| 4 | 8 000 | 80 m | 1,6 km mit 5 % |
| 3 | 16 000 | 160 m | 3 km mit 5,5 % |
| 2 | 32 000 | 320 m | 5 km mit 6,5 % |
| 1 | 64 000 | 640 m | 9 km mit 7,5 % |
| HC | 80 000 | 800 m | 10 km mit 8 % |
Nicht bewertet (kurzer Hügel, keine automatische Anzeige): kürzer als 300 m, im Mittel flacher als 3 %, oder unter 20 m Höhenunterschied.
Anzeige¶
- Der Screen erscheint von selbst, sobald ein bewerteter Anstieg höchstens 300 m voraus liegt, und geht 5 s nach seinem Ende zurück zum Hauptscreen. Er löst nur den Hauptscreen ab; steht gerade Navigation, RQ oder Einstellungen da, ist er danach das Ziel von „zurück".
- Von Hand: Tipp auf Höhe oder Steigung des Hauptscreens öffnet ihn, Wischen schließt ihn. Ein weggewischter Anstieg kommt nicht von selbst wieder.
- Profilfarbe nach Steigung des Raster-Abschnitts (25 m, bei langen Anstiegen bis 250 m): unter 1 % blau, bis 4 % grün, bis 7 % gelb, bis 10 % orange, darüber rot. Der gefahrene Teil ist abgedunkelt.
Einstellungen¶
Alle Werte sind einzeln einstellbar und werden im NVS (Climb) gespeichert:
climb Zustand und alle Einstellungen
climb cat4 9000 setzen
climb cat4 anzeigen (mit Bereich und Bedeutung)
climb defaults Standardwerte
Ohne USB: /debug/climb (Tabelle mit Eingabefeldern), /debug/climb.json,
/debug/climb/set?<name>=<wert>.
| Name | Standard | Bedeutung |
|---|---|---|
startgrade / startwindow |
3 % / 100 m | Fuß: mittlere Steigung über diese Strecke |
contgrade |
0,5 % | mittlere Steigung ab dem bisherigen Gipfel, mit der der Anstieg weitergeht |
summitflat |
2000 m | Flachstück, das den Anstieg beendet; auch der Abstand, in dem ein neuer Anstieg den alten fortsetzt |
summitdip |
30 m | Gefälle, das den Anstieg beendet |
summitpass |
50 m | so weit hinter dem Gipfel ist der Anstieg vorbei |
minlength / mingrade |
300 m / 3 % | darunter nicht bewertet |
cat6 … cat1, cathc |
siehe oben | Punktzahl je Kategorie |
autoshow |
1 | automatisch zum Kletter-Screen wechseln |
autorank |
1 | ab welchem Rang: 1 = Kategorie 6 … 6 = Kategorie 1, 7 = HC |
showahead |
300 m | Abstand zum Fuß, ab dem der Screen erscheint |
hidedelay |
5 s | Wartezeit vor dem Zurückwechseln |
lookahead |
25 m | Strecke für die „Steigung voraus" |
band1 … band4 |
1 / 4 / 7 / 10 % | Grenzen der Profilfarben |
infocycle |
4 s | Wechsel des Info-Felds (Uhrzeit, Distanz, Temperatur, Trittfrequenz, Höhe) |
Ohne Handy ausprobieren¶
climb demo 2 km mit 6 % (Standard)
climb demo 4000 9 Länge in m, mittlere Steigung in %
climb pos 800 Fahrer 800 m hinter den Profilanfang setzen
climb show / climb hide Screen öffnen / schließen
climb demo off
Das Demo-Profil läuft als normaler Frame durch den Parser. Der Fahrer bewegt
sich mit dem Speed-Sensor (im Simulator-Build mit sim <km/h>) oder per
climb pos. Frames vom Handy werden währenddessen ignoriert.
Grenzen¶
- Nur mit einer in TrailBridge abgespielten GPX-Route mit Höhendaten. Bei OsmAnd-Navigation gibt es kein Profil.
- Anstiege über 5 km kommen in gröberem Raster (bis 250 m); „Steigung voraus" und Profilfarben mitteln dann über einen solchen Abschnitt.
- Über 50 km (oder bei kleiner MTU) passt der Anstieg nicht in einen Frame. Das Profilende gilt dann vorläufig als Gipfel, bis das nächste Stück kommt.
- Im NVS gespeicherte Werte für
contgrade,summitflatundsummitdipgehen den neuen Standardwerten vor (climb defaultssetzt sie zurück). - Verbindet sich der BikeComputer erst im Anstieg, zählt der Anstieg ab dort.