Wie wir gelernt haben, Höhenänderungen durch Geokoordinaten in einer mobilen Anwendung zu berücksichtigen

Hey Habr! Ich bin Sergey Dozhdikov, Head of Custom Development Analytics. Wir haben kürzlich an einer mobilen Anwendung gearbeitet, mit der Sie Lauftrainings aufzeichnen und die Leistung während und nach dem Training überwachen können. Ich möchte Ihnen den Algorithmus, den wir dafür entwickelt haben, mit Ihnen teilen und Ihnen sagen, wie wir die aufgetretenen Schwierigkeiten gelöst haben.

Knapp. Sie können die Berechnung des gesamten Auf- und Abstiegs eines Athleten während einer Laufeinheit verbessern, indem Sie das Streckenprofil mit einem gewichteten gleitenden Mittelwertverfahren glätten. Der Artikel schlägt ein Wiegeverfahren vor. Die ersten Daten zum Testen des Algorithmus (unpersönliche Trainingsrouten) wurden von Denis Varin (Leiter der Backend-Entwicklung für die kundenspezifische Entwicklung unseres Teams) vorbereitet.

Problem

Wichtige Indikatoren des Lauftrainings sind der Gesamtauf- und -abstieg. Eine deutliche Längsneigung ermöglicht es dem Sportler, Schnelligkeit und Ausdauer zu trainieren. Im anderen Training verlangt der Läufer hingegen eine horizontale Strecke. Auch der Gesamtanstieg und -abfall eines Lauftrainings ist wichtig für die korrekte Berechnung des Kalorienverbrauchs.

Häufig berechnen mobile Apps den Auf- und Abstieg basierend auf den Geokoordinaten der Wegpunkte in einem Training. Nämlich basierend auf der Höhe über dem Meeresspiegel. Das Problem ist, dass zivile Implementierungen von Satellitennavigationssystemen (GPS, GLONASS usw.) die Höhe mit einem erheblichen Fehler bestimmen – mehrere Meter oder zehn Meter. Somit ergibt eine einfache Summierung von Höhenänderungen entlang der Trainingsstrecke einen nicht akzeptablen Fehler und als Ergebnis unzureichende Indikatoren für den Aufstieg und Abstieg des Läufers während des Trainings.

Daher wurde die Aufgabe gestellt, die Angemessenheit der Schätzung der Höhe der Trainingsroutenpunkte auf der Grundlage von Geokoordinaten, die vom Satellitennavigationssystem erhalten wurden, zu verbessern. Gleichzeitig wurden andere Möglichkeiten zur Verbesserung der Genauigkeit der Größenbestimmung als weniger zugänglich für ein breites Spektrum von Laiensportlern abgelehnt. Ausgeschlossen wurden Methoden wie Höhenausgleich mit einem barometrischen Höhenmesser, Nutzung von vorbekannten Geländehöhen in Geoinformationssystemen etc.

Die Art und Weise, wie Auf- und Abstiege berechnet werden, muss für den Einsatz in Nahe-Echtzeit geeignet sein. Dies ist wichtig für die betriebliche Visualisierung und Steuerung des Lauftrainings.

Die Art des Fehlers in den Geokoordinaten (falls Sie interessiert sind). Folgende Faktoren tragen zum Hauptfehler bei der Bestimmung von Geokoordinaten bei:

  • Fehler in der Ausrüstung des Navigationssatelliten;

  • Fehler bei der Bestimmung der Koordinaten des Navigationssatelliten selbst;

  • Signalverzögerung auf dem Weg vom Navigationssatelliten zum Verbraucher (Signalreflexion an Objekten, Verzögerung in der Troposphäre und Ionosphäre etc.);

  • Fehler in Verbrauchergeräten (mobiles Gerät);

  • “geschlossener” Raum auf dem Boden (Vordächer, Vordächer, hohe Gebäude, dichte Baumkronen, Berge usw.);

  • geringe Höhe der Navigationssatelliten über dem Horizont;

  • Merkmale der relativen Position von Navigationssatelliten relativ zum Verbraucher (Satellit, der relativ zum Verbraucher in den “Schatten” fällt, z. B. unter einer Überführung, unter einem Baldachin);

  • künstlicher Fehler, der in die Koordinaten eingeführt wird.

Geokoordinaten in einem mobilen Gerät (genau genommen eine Schätzung realer Koordinaten im Raum) umfassen die folgenden Attribute:

  • Breitengrad (Breitengrad);

  • Länge (Längengrad);

  • Höhe über dem Meeresspiegel (Altitude);

  • horizontale Genauigkeit (Genauigkeit);

  • vertikale Genauigkeit (Vertikale Genauigkeit).

Mit der vertikalen Genauigkeitsanzeige können Sie den Abstand einstellen [Altitude‑VerticalAccuracy; Altitude+VerticalAccuracy], in der mit 68 % Konfidenz (gemäß Implementierungsdaten für 2022) die tatsächliche Höhe des Mobilgeräts auf Meereshöhe angegeben ist. Es kann davon ausgegangen werden, dass die Höhe durch eine nach dem Normalgesetz N(Altitude, VericalAccuracy) verteilte Zufallsvariable beschrieben wird.

Lösungsidee

Die Idee besteht darin, die Höhe an jedem Punkt in einer Lauftrainingsroute basierend auf den Höhendaten benachbarter Routenpunkte in irgendeiner Nachbarschaft des zu verfeinernden Punktes zu verfeinern. Der Beitrag jedes dieser Punkte sollte abhängen von:

  • Entfernung eines Punktes auf der Route vom angegebenen Punkt (je weiter vom angegebenen Punkt entfernt, desto geringer das Gewicht dieses Punktes);

  • Höhenfehler in einem Punkt (je größer der Fehler, desto geringer das Gewicht des Punktes).

Dabei wurde die gängige Methode des gewichteten gleitenden Durchschnitts zugrunde gelegt. Und es wurde teilweise modifiziert:

Die rechten und linken Grenzen des Mittelungsfensters werden als die R-Nachbarschaft des zu verfeinernden Punktes spezifiziert. Das Mittelungsfenster umfasst Punkte auf der Trainingsroute, die nicht weiter als R von dem spezifizierten Punkt entfernt sind. Die Wahl des Wertes von R wird weiter unten in den Bemerkungen zum Algorithmus erörtert. Im allgemeinen Fall erweist sich das Mittelungsfenster bezüglich des angegebenen Punktes als asymmetrisch. Diese Art der Festlegung der Grenzen des Mittelungsfensters berücksichtigt automatisch Fälle niedriger Geschwindigkeit des Läufers sowie dessen Stopps. Abbildung 1 unten zeigt ein Beispiel für ein Mittelungsfenster für eine laufende Sitzung.

Abbildung 1 - Mittelungsfenster.Abbildung 1 – Mittelungsfenster.

Algorithmus zur Berechnung des Gesamtaufstiegs, -abstiegs der Lauftrainingsstrecke:

1. Berechnen Sie für jeden i-ten verfeinerten Routenpunkt i = 1…N die gewichtete Höhe wA(i) mit folgender Formel:

wA(i)=\sum_{j \in ER(i)} Höhe_{j} \frac{cW(i,j)+cA(j)}{2},(1)

wo

  • ER(i)=\big\{ k\in [1;N]:(L_i-R) < L_k < (L_i+R) \big\}– eine Reihe von Seriennummern von Routenpunkten, die in die R-Nachbarschaft des i-ten festgelegten Punkts fallen (einschließlich des festgelegten Punkts selbst);

  • L_i– Entfernung des i-ten Punktes vom Beginn der Lauftrainingsstrecke (entlang der Trainingsstrecke);

  • Höhe_j– Höhe des j-ten Punktes aus den Attributen der Geokoordinaten des Punktes;

  • cW(i,j)=\frac{1}{\mid i - j\mid + 1} * \frac{1}{\sum_{k \in ER(i)} \frac{1}{\mid i - k\mid + 1}}

    Gewichtungskoeffizient der Entfernung des j-ten Punktes vom spezifizierten i-ten Punkt im Mittelungsfenster cW(i,j)\in(0;1);

  • cA(j)=\frac{1}{AltitudeAccuracy_j} * \frac{1}{\sum_{k \in ER(i)} \frac{1}{AltitudeAccuracy_k))

    j-ter Punkthöhenfehler-Gewichtungsfaktor cA(j)\in(0;1).

2. Summieren Sie die Anstiege relativ zu den korrigierten Wegpunkthöhen mit der folgenden Formel:

elev=\sum_{i=2}^N dW(i), (2)

wo

  • dW(i) =\begin{cases}wA(i)-wA(i-1) & 0,02 < \frac {wA(i)-wA(i-1)}{L_i-L_{i-1}} < 0.4 \\0 & sonst\end{Fälle}

    Anstieg auf einem Segment [L_{i-1};L_i]die Strecke des Lauftrainings (ein Abschnitt mit einer Neigung <2% gilt als horizontal, mit einem Winkel >= 40% – ein Nicht-Lauftraining oder ein spezielles Lauftraining).

3. Summiere die Gefälle unter Verwendung einer Formel ähnlich Formel (2).

Hinweise zum Algorithmus.
Die Größe der Nachbarschaft R beeinflusst die Höheneinstellung erheblich. Wenn wir davon ausgehen, dass die Koordinaten des Wegpunkts am Boden durch eine Zufallsvariable beschrieben werden, die nach dem Normalgesetz N(Altitude, HorizontalAccuracy) verteilt ist, dann ist es ratsam zu setzen R=3 \sigma=3 HorizontalGenauigkeit. Bei einem typischen (üblichen) Wert von HorizontalAccuracy = 10 m, R = 30 m. Größere Werte von R ermöglichen es, „Emissionen“ von Höhen besser zu glätten. Es besteht jedoch ein wachsendes Risiko, die Angemessenheit der Bewertung des Geländeprofils zu verringern. Vereinfacht gesagt gehen Informationen über echte starke Höhenänderungen entlang der Trainingsstrecke verloren (z. B. in einem hügeligen Gebiet, in einem Park mit Treppen usw.). Das Testen des Algorithmus in der Praxis hat gezeigt, dass R = 50…60 m ein guter Wert ist.

Der Höhengewichtungsfaktor in Formel (1) wird als arithmetisches Mittel aus dem Punktgewicht im Mittelungsfenster und dem Gewicht des Punkthöhenfehlers auf der Route berechnet. Dadurch kann der Einfluss von Punkten im Mittelungsfenster korrekt berücksichtigt werden. Beispielsweise wird der Beitrag eines Punktes, der an den verfeinerten Punkt angrenzt, aber einen großen Höhenfehler aufweist, reduziert. Und der Beitrag eines entfernten Punktes mit einem kleinen Höhenfehler wird erhöht.

Das Laufen auf einem Gelände mit einer Längsneigung von weniger als 2 % gilt als Laufen auf einer ebenen Fläche. Das Laufen auf Gelände mit einer Längsneigung von mehr als 40 % gilt als eine andere Art des Laufens (sog. „Berglauf“). Dabei weist das Training deutliche Unterschiede zum üblichen Lauftraining auf.

Ein Versuch, den horizontalen Koordinatenfehler auf dem Boden beim Glätten der Höhen zu berücksichtigen, führte zu keiner signifikanten Erhöhung der Angemessenheit der Höhe.

Überprüfung in der Praxis

Der oben beschriebene Algorithmus wurde als Java-Anwendung implementiert und an unpersönlichen Lauftrainings getestet. Unten sind einige veranschaulichende Beispiele (siehe Abbildungen 2-7). Sie zeigen das Höhenprofil der Laufstrecke:

  • anfängliche Höhendaten durch Geokoordinaten unter Berücksichtigung des Fehlers (vertikale gelbe Linien);

  • angepasste Höhenwerte (mehrfarbige gestrichelte Linie):

    • horizontale Schnitte – grün markiert;

    • ausgeschlossene Abschnitte (zu steil) – weiß;

    • steigt – rot;

    • Pisten sind blau.

Um den Teich laufen (siehe Bild 2). Das Gelände ist horizontal, ohne nennenswerte Höhen und Tiefen. Der Athlet drehte drei Runden. Höhen-“Emissionen” sind offensichtlich auf die Reflexion des Navigationssatellitensignals von einem hohen Gebäude in der Nähe der Route zurückzuführen. Der Gesamtaufstieg beträgt 11 m, der Abstieg 12 m. Laut “Rohdaten” beträgt der Gesamtaufstieg 204 m, der Abstieg 198 m.

Abbildung 2 - Rund um den Teich.Abbildung 2 – Rund um den Teich.

Lauftraining in der Stadt (siehe Abbildung 3). Das Gelände ist horizontal, ohne nennenswerte Höhen und Tiefen. Der “Auswurf” der Höhe ist offenbar auf die Überführung zurückzuführen, unter der der Athlet lief. Der Höhen-„Ausreißer“ wird geglättet und teilweise von der Berechnung der Auf- und Abstiege ausgenommen. Der Gesamtaufstieg beträgt 26 m, der Abstieg 17 m. Laut “Rohdaten” beträgt der Gesamtaufstieg 50 m, der Abstieg 45 m.

Abbildung 3 – Unter der Überführung.Abbildung 3 – Unter der Überführung.

Ein Beispiel für die praktische Unmöglichkeit, die Angemessenheit der Berechnung von Steigungen und Gefällen nur auf der Grundlage von Geolokalisierungsdaten zu verbessern, ist in Abbildung 4 dargestellt. Laufendes Training im Zentrum einer Großstadt. Das Gelände ist relativ flach, ohne scharfe Höhen und Tiefen. Mehrere lange Abfahrten. Eine große Anzahl von “Emissionen” in der Höhe, anscheinend aufgrund einer großen Anzahl von Gebäuden und anderen Objekten, die das Signal von Navigationssatelliten aufgrund von Reflexionen verzerren. Gesamtaufstieg – 545 m, Abstieg – 639 m. Laut “Rohdaten” beträgt der Gesamtaufstieg 653 m, Abstieg – 655 m. Offensichtlich entsprechen Auf- und Abstiege nicht der Realität.

Abbildung 4 - Im Zentrum einer Großstadt.Abbildung 4 – Im Zentrum einer Großstadt.

Um den Teich laufen (siehe Abbildung 5). Das Gelände ist relativ flach, ohne scharfe Höhen und Tiefen. Mehrere lange, nicht steile Anstiege und nicht steile Abfahrten. Der Gesamtaufstieg beträgt 12 m, der Abstieg 11 m. Laut “Rohdaten” beträgt der Gesamtaufstieg 165 m, der Abstieg 169 m.

Abbildung 5 - Teich, Anstiege, Abfahrten.Abbildung 5 – Teich, Anstiege, Abfahrten.

Lauftraining im bergigen Gelände (siehe Abbildung 6). Vielleicht ist die steile anfängliche Strecke darauf zurückzuführen, dass der Läufer die Treppe vom oberen Stockwerk des Gebäudes hinuntersteigt oder sich im “Schatten” (Vordächer des Gebäudes) befindet. “Ausreißer” wird vom Algorithmus gut gehandhabt. Abbildung 7 – zeigt separat den Anfangsabschnitt des Trainings. Der Gesamtaufstieg beträgt 56 m, der Abstieg 49 m. Laut “Rohdaten” beträgt der Gesamtaufstieg 101 m, der Abstieg 72 m.

Abbildung 6 – Trail in bergigem Gelände.Abbildung 6 – Trail in bergigem Gelände.Abbildung 7 - Startabschnitt der vorherigen Route (siehe Abbildung 6 oben).Abbildung 7 – Startabschnitt der vorherigen Route (siehe Abbildung 6 oben).

Fazit

Der vorgeschlagene Algorithmus ist schnell genug und in Bezug auf Rechenressourcen nicht teuer, um auf einem mobilen Gerät nahezu in Echtzeit verwendet zu werden. Der vorgeschlagene Algorithmus verbessert nicht die Genauigkeit der Bestimmung der Höhe eines Punktes auf dem Boden unter Verwendung seiner aus dem Geopositionierungssystem erhaltenen Koordinaten. Der Algorithmus ermöglicht es, die Angemessenheit der Berücksichtigung von Gefällen und Steigungen im Rahmen eines Lauftrainings zu erhöhen. Um die Genauigkeit der Bestimmung der Höhe eines Wegpunkts radikal zu erhöhen, ist es notwendig, zusätzlich andere Methoden zur Bestimmung der Höhe eines Wegpunkts zu verwenden (z. B. einen barometrischen Höhenmesser, vorgemessene Geländehöhe usw.).

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *