Blog > Komentarze do wpisu

Narzędzie do wykreślania profilu oraz oceny poziomu trudności tras biegowych i rowerowych.


W jakim celu ?

Profiler narzędzie do rysowania profilu trasy rowerowej i biegowej

                Jest wiele narzędzi online umożliwiających narysowanie trasy rowerowej i kreślących jej profil, większość jednak ma ograniczoną funkcjonalność. Znając profil trasy można wydobyć wiele ciekawych cech, które są niewidoczne gołym okiem, ale ważne przy jej pokonywaniu. Znając fundamentalne algorytmy oporu aerodynamicznego i zagadnienia mocy, wspominane wielokrotnie na tym blogu w sekcji dotyczącej medycyny sportowej,  z łatwością unaocznia się pewne właściwości, będące kluczowymi dla osób podchodzących poważnie do treningów, a także dla początkujących, którzy chcą upewnić się co do stopnia trudności trasy.

( Wkrótce nowy profiler! )

                Ponad rok temu miałem okazję stworzyć relatywnie prosty algorytm oceny mocy, biorąc pod uwagę parametry biometryczne, długość trasy i nachylenie. Niestety, wiedząc, że opór aerodynamiczny jest siłą niezachowawczą, ważne okazuje się ukształtowanie trasy, a nie tylko uśrednione jej parametry. Obecność już kilku wzniesień powoduje znaczne zafałszowania wyliczeń. Moją motywacją do dalszej pracy były sugestie moich Czytelników sugerujących bardziej uniwersalne rozwiązanie. Uniwersalne, czyli powszechnie dostępne, nie wymagające od użytkownika instalacji dodatkowego oprogramowania, co w obecnych czasach zawsze budzi niepokój.

Dlaczego nie aplikacja exe ?

                Naturalnym rozwiązaniem jest użycie przeglądarki, bo ta zapewnia bezpieczeństwo przeglądania sieci, a także jest przenośna i działa tak samo na różnych urządzeniach (w tym urządzenia mobilne) i systemach operacyjnych. Wprowadza pewne ograniczenia, szerzej napisałem o tym w mojej poprzedniej notce.

Skąd wziąć dane ?

                Pozostaje zastanowić się skąd pozyskać informacje potrzebne do wyliczeń ? Można wykorzystać GPS i jego wskazania, wtedy jednak trasa będzie zawsze oceniana post factum, już po jej pokonaniu. Jest to ważne, jednak nie jest przedmiotem tego projektu. Z pomocą przychodzi Google Elevation i Google Maps, usługi darmowe, które pozwalają każdemu użytkownikowi pozyskanie danych online na temat wysokości i narysowanie punktów kontrolnych na mapie o wysokiej rozdzielczości z naniesionymi elementami  wektorowymi nazw ulic, miast, miejsc itp. Znacznie ułatwia to i czyni sensownym wspomniane rozwiązanie. Dodatkowo obsługa Maps API v3 jest relatywnie nietrudna.

Ograniczenia i obliczenia.

                Zastosowane algorytmy z pominięciem uzyskania informacji z Google Elevation, działają w całości w przeglądarce, a do obliczeń używa się urządzenia na którym przeglądarka jest otworzona. Większość nie jest obliczeniowo wymagająca, stąd działa dobrze nawet na urządzeniach mobilnych. Transfer danych generowany jest pomiędzy urządzeniem a usługami Google i w większości polega na ściąganiu map. Ograniczenia związane z darmowym używaniem map Google są związane z limitem danych dotyczących wysokości w jednostce czasu. Nie jest więc możliwe wykreślenie długiej trasy i uzyskanie bardzo wysokiej gęstości przestrzennej punktów. Jakkolwiek jest to możliwe dla fragmentu tej trasy. Jeśli wystąpi ten wyjątek wyświetli się OVER_QUERY_LIMIT.

Co z wyświetlaniem ?

                Wizualizacja wyników została powierzona mojej autorskiej bibliotece graficznej do rysowania wykresów, jednak w zmodyfikowanej formie. Dodałem do niej kilka algorytmów, odpowiadających za kontrolę zdarzeń ruchu myszki i kliknięcia, a także pola przechowujące pewne dane potrzebne na późniejszym etapie obróbki. Straciła trochę lekkości, ale zyskała interaktywność. Co ważne, wyświetla dane także na urządzeniach mobilnych. Początkowo zamierzałem pozostać z wykresami Google, jednak te nie tylko nie działały na urządzeniach mobilnych, ale także powodowały anulowanie wykonywania reszty skryptów. Ze zmiany jestem zadowolony, bo praca z moją własną biblioteką przyszła łatwiej.

Czas pracy mierzę w komputerogodzinach.

                Włożona w proces pisania ilość pracy sięga kilkudziesięciu godzin, ale była rozciągnięta na okres kilku tygodni, w zależności od dostępnego wolnego czasu. Niestety napisanie w pojedynkę, mając niewiele czasu, nawet średnio skomplikowanej aplikacji wymaga wiele samozaparcia, ale za to świetnie ćwiczy silną wolę.

Reklamy na stronie i darmowe serwery.

                Ważnym aspektem jest kwestia hostowania strony na serwerze i reklam na stronie. Pewien czas temu założyłem sobie konto AdSense, z ciekawości, na ile reklamy będą dopasowane do treści strony i preferencji, a przy okazji w nadziei, że przychód będzie zadowalający. Niestety póki co nie zarobiłem zbyt wiele, jakieś 20 zł w 3 miesiące. Satysfakcja jednak jest. Gdzie umieścić stronę ? Serwer republika nie dość, że dodaje denerwujące reklamy, które w niektórych przeglądarkach nie dają się zamknąć, to jeszcze nie kontroluje treści stron i reklam, jest przez Google zaliczany do stron rozpowszechniających złośliwe oprogramowanie. Pisałem o tym także w jednej z notek, bowiem jak się okazało, mój blog padł ofiarą tego ostrzeżenia jako strona współpracująca. Owocowało to wyświetleniem niezbyt zachęcającego do odwiedzenia, komunikatu o czerwonym tle. To był rozwód z republiką w dużej mierze. Obecnie przeprowadziłem się na 000webhost. Hosting świetny, bo jest php i dużo miejsca, brak reklam. Podoba mi się to. Wiem jednak, że serwery lubią być wyłączane i mieć zmienianą politykę dotyczącą darmowych kont. Zdecydowałem się na domenę na prv.pl Gdy serwer zniknie, przeniosę się na inny, a pod domenę dodam nowy adres. Użytkownicy nawet nie będą wiedzieć, że wystąpiła nieprzewidziana awaria. Adres prv trwa i trwa, w związku z czym wydaje się pewny. Niestety dodaje dużo reklam i paskudny pasek na górę strony.

AdSense vs reklamy na PRV

                Walka z reklamami na prv polegać będzie na pozyskaniu dochodu z kliknięć na moją reklamę AdSense i jeśli uzbieram odpowiednie środki, wyślę SMS i wyłączę reklamy na prv.  Od Was więc zależy jak szybko i czy w ogóle uda się wyłączyć te przeszkadzajki.  Przy tym jeśli w kieszeni zostanie na piwo, z pewnością się nie obrażę. Wersja mobilna jest pozbawiona reklam, ma być bowiem szybka i nic nie powinno zmniejszać mocy obliczeniowej i tak mocno ograniczonej w tego typu urządzeniu.

 

Tyle tytułem opisu, bardziej techniczne aspekty i opis algorytmów w kolejnych notkach. Teraz przejdźmy do praktycznych aspektów obsługi strony.

1. Graficzny interfejs użytkownika został pogrupowany na sekcje, wprowadzenie poszczególnych danych i kliknięcie przycisku gotowe prowadzi do wykonania szeregu algorytmów i pozyskania przez użytkownika pewnych informacji. Mówiąc prosto, trzeba postępować krok po kroku, najpierw narysować trasę na mapie. Jeśli się pomylimy możemy zmazywać punkty w odwrotnej do rysowania kolejności klikając przycisk "usuń ostatni". Jeżeli chcemy narysować całkiem nową trasę, klikamy "wyczyść wszystko", co usuwa wszystkie dotychczas narysowane punkty na mapie. Możemy też wybrać sobie rozdzielczość. Dodam, że Google Elevation chętnie odsyła dane dotyczące wysokości około 800 punktów. Powyżej protestuje, zwracając OVER_QUERY_LIMIT. Jeżeli zdarzył nam się ten błąd, wystarczy zwiększyć liczbę w ramce obok przycisku "gotowe". Kliknięcie "gotowe" wysyła zapytanie do usługi i rysuje wykresy. Jeśli chcemy zmienić rozdzielczość wystarczy zmienić 150 na inną liczbę i kliknąć gotowe ponownie. 

Rysowanie trasy, krok pierwszy

2. Na mapie widzimy kilka markerów. Niebieskie oznaczają wprowadzone przez nas punkty, pomarańczowy działa wraz z wykresami profili. Przesuwając kursor myszy nad elementem wykresu, jednocześnie widzimy miejsce na mapie, z którym dany punkt wykresu koresponduje. Pozwala to na bieżąco śledzić miejsce o którym mówi nam element profilu trasy. Na dole okna wykresu widać skalę z podziałką. 

 Rysowanie profilu trasy rowerowej i biegowej

3. Po wprowadzeniu danych biometrycznych, potrzebnych algorytmom szacowania mocy, przechodzimy do zdefiniowania oceny pod względem stałej mocy lub stałej prędkości. 

Krok drugi, wprowadzenie danych biometrycznych

Wybierając szacunki według stałej mocy w watach, uzyskujemy wykres prędkości w funkcji dystansu i statystykę czasu pokonania trasy z zaznaczonymi parametrami. Załóżmy, że chcemy pokonać trasę na stałym tętnie, bez przemęczania się na podjazdach. Wybierając widoczny niżej zestaw funkcji (stała moc, 180W) otrzymamy wykres prędkości na każdym elemencie trasy, zakładając stały puls. Pozwoli to na trening na wysokim poziomie. Trudno jednak zapamiętać wykres i stosować się do niego. Jeżeli jednak posiadamy licznik Garmin itp możemy wygenerować plik GPX z "oszacowaną" trasą i starać się dotrzymać kroku wirtualnemu towarzyszowi. Ja sam nie posiadam tego typu licznika, jeżeli więc coś nie będzie działać, proszę o raport błędu. 

Krok drugi, ocena mocy lub prędkości

4. Widoczny poniżej wykres zostaje narysowany po kliknięciu przycisku gotowe w sekcji pierwszej. Oś pionowa to wysokość w metrach, pozioma to dystans. Przesunięcie myszki nad wykresem podświetla bieżący fragment na mapie Google Maps w postaci pomarańczowego markera, a obok kursora myszy pojawiają się dane o nachyleniu, wysokości i dystansie od początku trasy. Dane te są również odzwierciedlone na wykresie przy pomocy skali kolorów (czerwony - podjazdy, niebieski - zjazdy ). 

Wykres profilu trasy rowerowej i biegowej

5. Kliknięcie na pierwszym wykresie wysokości prowadzi do przybliżenia elementu wykresu, co przy długich trasach ułatwia ocenę nachylenia. Po przybliżeniu, można kliknąć przycisk otwierający widok w wysokiej rozdzielczości tego elementu, a także jego skrócone statystyki. 

Element profilu trasy biegowej, nachylenie i przewyższenie

6.  Zdjęcie wykresu elementu profilu trasy w wysokiej rozdzielczości.

Widok profilu trasy i nachylenia w wysokiej rozdzielczości

7. Dolny wykres rysuje profil prędkości w funkcji dystansu w przypadku jazdy w/g stałej mocy, albo mocy w funkcji dystansu przy jeździe na stałą prędkość. Jak widać na podjazdach, prędkość obniża się dość znacznie, na zjazdach osiągając wysokie wartości. 

Wykres prędkości jazdy rowerem

Wykres mocy generowanej podczas jazdy rowerem

8. Sekcja statystyk podzielona została na dwa elementy. Pierwszy to cechy trasy, a drugi cechy sposobu jazdy wybranego przez użytkownika. Współczynnik liczbowy oceny trasy bierze pod uwagę dystans, zjazdy i podjazdy a także wysokość nad poziomem morza. Sam współczynnik pozwala porównywać trudność różnych tras pomiędzy sobą, jednak nie bierze pod uwagę sposobu ich pokonywania przez użytkownika. 

Statystyki profilu trasy rowerowej i biegowej

9. Reklama AdSense zastosowana w Profilerze pozwoli mi w miarę możliwości usunąć reklamy umieszczane przez PRV.PL. Jeżeli z kliknięć zarobię odpowiednie pieniądze, wysyłając SMS mogę znieść reklamy na pewien okres czasu. Niestety domena była konieczna, w razie, gdyby serwer uległ uszkodzeniu, bądź wyłączeniu, albo też z innej przyczyny trzebaby go było zmienić. Dzięki temu adres wpisywany w przeglądarkę nie zmieni się. Jeżeli więc podoba się Wam, klikajcie, a reklamy i pasek na górze z prv znikną.

Reklama AdSense

10. Ostatni element umożliwia wygenerowanie trasy narysowanej w Profilerze w formie treści GPX. Jej wklejenie do pliku GPX i przesłanie na urządzenie umożliwi obejrzenie swojej trasy i wybranych statystyk. Odpowiedni licznik może nam zapewnić funkcjonalność virtual partner. 

Generowanie profilu trasy do pliku GPX

11. Profiler jest dostępny w wersji mobilnej, o ograniczonej szerokości, łatwiej mieszczącej się na ekranie smartfona. Wersja mobilna nie ma żadnej reklamy, bo tu priorytetem jest szybkość i wydajność. Na dole strony jest odnośnik umożliwiający przełączanie pomiędzy wersjami.  

Dziękuję i jednocześnie zapraszam do komentowania. Postaram się w miarę możliwości naprawiać błędy i niedoskonałości Profilera. 

wtorek, 27 marca 2012, mathmed
Jeśli treść artykułu spodobała Ci się, polub oficjalną stronę mathmed na facebooku i bądź informowany o nowościach na stronie :
Related Posts Plugin for WordPress, Blogger...
Ponad 150 artykułów na blogu, wyszukaj :
Możesz też podzielić się ze znajomymi treścią artykułu klikając przycisk "lubię to" poniżej:

Polecane wpisy

TrackBack
TrackBack w tym blogu jest moderowany. TrackBack URL do wpisu:
Komentarze
Gość: Kdarek, *.neoplus.adsl.tpnet.pl
2012/04/07 18:45:57
Witam,
temat mnie bardzo zainteresował, bo też biegam i roweruję. Jednak długi opis mnie trochę zniechęcił i po dwóch akapitach odpuściłem, ale z mocnym postanowieniem powrotu na tą stronę przy lepszej okazji.
-
Gość: Krystian, *.adsl.inetia.pl
2012/04/25 17:13:26
Twój Profiler ma kilka ciekawych innowacji i jak będziesz ten program rozwijał to myślę że znajdziesz użytkowników. Na chwilę obecną trzeba w niego jeszcze sporo pracy włożyć.

Krystian (autor GEOCONTEXT-Profilera)
-
Gość: Leo, *.neoplus.adsl.tpnet.pl
2013/05/14 12:36:33
Narzędzie całkiem, całkiem - skupię się tutaj na różnicach z rzeczywistych pomiarów, a wyliczonych przez program:
Trasa 48,46km, wg programu 47662m (48km) - obwód koła wyliczony dość dokładnie, na dodatek zweryfikowany na odcinku 1km wg słupków drogowych. Czyli odległość zaniżona.
Podjazdy zjazdy zarejestrowane wysokościomierzem barometrycznym 207m, wg programu o niemalże 100m więcej (dokładnie: 300m podjazdów).
Maksymalne nachylenie realnie było nieco powyżej 10%, wg programu 8,6%.
Prędkość maksymalna nieco zaniżona (46,5 vs 45,4km/h), średnia również (28,8 vs 28,3).
Średnia moc(bieg): 332W lub 182W dla jazdy na rowerze - zarejestrowana moc powertapem wynosiła: średnia 162W, NP 172 - czyli w pierwszym przypadku zawyżenie o 20W, w drugim o 10W. Niby nie dużo, ale 20W mocy więcej dużo daje...
Szacowany wydatek energetyczny (bieg): 1842kcal lub 1014kcal dla jazdy na rowerze - garmin wylicza 1.095 C, czyli mniej więcej się to pokrywa.

Inna trasa - nachylenie max prawie zgodne (real 14,2%, program: 13,9%), średnia prędkość dość mocno zaniżona (real: 28,8km/h, program 26,5km/h), czas przejazdu prawie się zgadza (real: 96minut, program: 103minuty - doliczone czasy zatrzymania, pewno stąd największa różnica wyliczenia prędkości śr) no i zaniżona odległość (46,3 vs 45,8km). Zarejestrowana moc: 164W (moc NP: 183W), wyliczona przez program: 197W.

Jak widać, jeśli tylko biorąc pod wyliczenia ślad GPS (plus wagę rowerzysty, roweru itd), bez uwzględniania warunków atmosferycznych, to dokładność wyliczeń jest całkiem przyzwoita. Błąd wyliczenia mocy powinien wynosić do ok. 10% i jest to całkiem przyzwoity wynik. Żeby było jasne - porównuję moc znormalizowaną do mocy wyliczonej przez program, bo porównanie mocy średniej wykaże zdecydowane zawyżenie mocy skalkulowanej, no ale w tym przypadku należałoby jednak brać pod uwagę moc znormalizowaną.

Reasumując - jak na tak małą ilość danych potrzebnych do analizy, narzędzie jest na prawdę bardzo ciekawe, o przyzwoitej dokładności nieco tylko zawyżające moc znormalizowaną - z analizy kilku jazd wynika, że dla mnie jest to około 10W. Jeśli chcecie oszacować swój wydatek energetyczny oraz generowaną moc mając ślady gps to warto skorzystać, jednak należy pamiętać, że warunki atmosferyczne - wiatr, ma dość duże znaczenie przy wyższych prędkościach. Czyli przybliżenie będzie dość dokładne w bezwietrzną pogodę (lub z niewielkim wiatrem), ale dalekie od rzeczywistości przy sporym wietrze czołowym/tylnym.
-
Gość: Leo, *.neoplus.adsl.tpnet.pl
2013/05/14 14:40:51
Ok, jeszcze jedno - co ciekawsze bardziej realne wyniki jeśli chodzi o moc podaje Profilerplanner! Po wczytaniu gpx'a z trasą, tak jak poprzednio kalkulacje mocy dotyczą mocy znormalizowanej, a nie mocy średniej i wynik kalkulacji jest już bardziej zbliżony do realnie otrzymanych! W takim przypadku można użyć planera do kalkulacji prędkości/czasu przejazdu na określonej mocy np. po przejechaniu w niższej strefie mocy danej trasy obliczenie jak szybko można przejechać trasę na progu FTP, ewentualnie krótkie czasówki znając dane CP tejże. Albo też ile trzeba zrzucić kg, żeby przejechać ten odcinek o 1 min lub 1km/h szybciej.
Ciekawe, ciekawe...
-
Gość: Rysiek, *.lubawka.org
2014/07/01 14:08:10
Witam
Czy ten projekt (Profiler) jeszcze działa. Po wejściu na stronę jestem przekierowywany na jakieś dziwne strony?
Jestem członkiem agregatora naukowego researchblogging.org