majikstone

Golden Cheetah (software de analiza a performantei sportive)

Recommended Posts

Ce e Golden Cheetah si la ce foloseste?

 

Golden Cheetah (prescurtat GC) e un software gratuit pentru PC, open-source si multi-platforma (Windows / Linux / Mac OS) care permite realizarea de statistici si analize pe baza fisierelor generate de diversele aparate folosite pentru tracking (cel mai popular format de fisiere fiind cel .fit, dar multe altele sunt suportate).


Pentru cei care au utilizat Garmin Connect (sau alte aplicatii similare), aplicatia GC permite realizarea de statistici atat ale unei singure ture (grafice cu evolutia vitezei, ritmului cardiac, cadentei, puterii s.a. in functie de timp sau distanta), dar in special a evolutiei pe termen lung (saptamani, luni, ani). In plus, dincolo de parametrii de baza antementionati (distanta, timp, viteza, cadenta, ritm cardiac, putere), aplicatia permite calcularea unui numar foarte mare de indici si coeficienti ai performantei sportive, in analiza carora nu voi intra pentru ca nu ma pricep si nici nu cred ca au o relevanta foarte mare pentru amatori.


Punctul forte principal al aplicatiei fata de altele disponibile online (sau offline) e data de capacitatea de analiza in mare detaliu a evolutiei in timp (aspect lipsa al multor aplicatii online, in special cand vine vorba de versiunea lor gratuita). Alt castig e faptul ca e compatibil cu o paleta foarte larga de fisiere si dispozitive. Minusul major e ca, din cauza numarului foarte mare de parametri care pot fi urmariti si evaluati, configurarea ei intr-un format usor de folosit si urmarit dureaza cateva ore bune. De unde si ideea de a deschide acest topic, unde sa impartasim eventualele experiente cu aceasta aplicatie.

Primii pasi
 

Site-ul oficial al aplicatiei este http://www.goldencheetah.org/ . De aici se poate descarca (in functie de sistemul de operare al fiecaruia), iar aici se gasesc cateva tutoriale video (peste care, recunosc, inca nu m-am uitat).


O data descarcata si instalata aplicatia, aceasta are evident nevoie de fisierele cu statisticile turei, exportate de catre diverse dispozitive. In acest scop, recomand calduros aplicatia Tapiriik care, in schimbul a 2$ pe an, sincronizeaza turele inregistrate de diferite platforme web si, cel mai important, le sincronizeaza inclusiv cu Dropbox. Eu am folosit-o astfel pentru a recupera intr-un folder Dropbox toate activitatile pe care le-am facut si inregistrat din 2014 incoace, de cand am avut in posesie un Garmin Edge 500. Apoi, o data ce fisierele cu pricina se gasesc undeva pe computer, acestea pot fi importate in aplicatie din meniul Activity -> Import from file.

Importarea "in masa" a fisierelor dureaza cateva minute (nu am cronometrat exact, dar in cazul meu a fost vorba de undeva in jur de 5 minute pentru 200+ activitati), iar apoi pentru fiecare activitate noua, lucrurile merg aproximativ instantaneu.

(mai multe mai tarziu)

  • Upvote 2

Share this post


Link to post
Share on other sites

Ecranele de baza

 

Dupa ce se importa macar cateva activitati, diverse statistici pot fi vazute pe ecranele aplicatiei. Aceasta are 4 pagini principale: Trends, Diary, Activities si Train.

Ultima (Train) are rolul de a evalua in timp real si de a controla parametrii antrenamentelor facute pe trainere controlabile prin ANT+ cu ajutorul unui stick USB. Cum nu am asa ceva (nici stick USB ANT+, nici trainer inteligent), nu voi intra in detalii cu privire la ea.

Paginile Trends si Diary sunt destul de echivalente si permit adaugarea cam acelorasi seturi de grafice, cu scopul de a evalua statisticile pe termen lung ale activitatilor sportive. Cum tipurile de statistici care pot fi adaugate in fiecare dintre ele, momentan m-am ocupat doar de configurarea paginii Trends, urmand ca mai tarziu sa separ informatiile de la Trends intre cele doua pagini. 

Pagina Activities permite vizualizarea activitatilor una cate una, intr-un stil similar cu cel din toate aplicatiile de profil (Garmin Connect, Strava, Endomondo, etc.). Se pot vedea informatii text cu rezumatele diversilor parametri, dar si grafice cu evolutia lor in functie de timp. 

Fiecare dintre pagini vine pre-configurata cu un set de ecrane. O mare parte dintre ele sunt complet inutile in lipsa unui power meter, respectiv al unei largi palete de cunostinte de medicina sportiva. In concluzie, eu am eliminat majoritatea graficelor care au venit pre-configurate si mi-am configurat propriile grafice, cu informatiile pe care ma intereseaza pe mine (in mare parte destul de generice si bazate pe informatiile de distanta, timp, viteza, cadenta si ritm cardiac), si pe care le voi prezenta mai in detaliu.

 

Pagina Activities
 

gjPqqkY.png 

Ecran cu informatii text exhaustive cu privire la diversii parametri ai turei.

 

7WmBdaT.png 

Ecran cu graficele evolutiei in functie de timp / distanta. In acest caz, am ales evolutia in functie de distanta (pe care o prefer in detrimentul celei in functie de timp din cauza ca prefer sa nu apara pe ecran spatii goale in pauzele efectuate).

 

gu0UZIy.png

Ecran cu o histograma a timpului petrecut la fiecare ritm cardiac. Din meniul din partea de sus a graficului (care apare in momentul in care se plimba mouse-ul deasupra) se poate accesa intervalul de separare a ritmului cardiac (poate fi pus in intervale de mai multe unitati, gen 5 sau 10, sau impartit strict dupa zonele Z1-Z5). La "More..." se gaseste meniul care permite configurarea in mari detalii a graficului.

Ecrane identice cu cea de histograma a ritmului cardiac se pot genera si pentru viteza, cadenta, putere, si asa mai departe.

 

Ecranul Map arata (intr-un mod destul de primitiv, recunosc) traseul urmarit, pe o harta Google Maps / OSM / Bing, iar Scatter poate fi configurat sa afiseze corelatii intre oricare 2 variabile (de exemplu, viteza in functie de panta). Inca nu m-am jucat cu el, recunosc. CV nu am nici cea mai vaga idee ce afiseaza, iar la Details se pot configura informatiile de baza cu privire la tura (gen numele, data, tipul de activitate - mai multe detalii despre asta ulterior).

  • Upvote 1

Share this post


Link to post
Share on other sites

Pagina Trends

 

Cum spuneam in postul anterior, paginile Trends si Diary sunt foarte similare prin prisma tipului de date ce pot fi afisate, mai exact statistici facute pe intervale variabile de timp, cu totaluri partiale selectabile per zi / saptamana / luna / an / perioada zilei. Acest tip de grafice sunt cele de tip Metric trends. Graficele noi pot fi adaugate prin intermediul micului buton in forma de meniu din dreapta-sus (imediat sub search bar), apoi Add chart.

 

Ele pot fi configurate in diferite moduri: ca tabel cu text sau ca diferite tipuri de grafic (coloane, linii, puncte). Variabilele monitorizate in tabel sunt extrem de multe si se gasesc o data intrat in meniul de adaugare / configurare al unui nou tabel. Incepand cu un exemplu simplu, aici am o pagina care imi calculeaza totalurile si valorile medii anuale pentru cateva valori cheie.

 

Mica remarca: valoarea de HR mediu pentru anul 2016 e eronata din cauza ca am un numar non-neglijabil de activitati fara HR masurat, pe care algoritmul le ia totusi in calcul in momentul in care calculeaza media. In plus apar niste neclaritati si la viteza medie, datorate functiei "Smart recording" a dispozitivelor Garmin, care nu logheaza neaparat in fiecare secunda datele. O sa incerc sa gasesc o solutie pentru problemele astea ulterior.

 

mVQSq83.png

 

Pentru a modifica tabelul, intram in meniul More... (stanga sus, bara apare in momentul in care mouseul ajunge in zona respectiva de ecran), iar apoi click pe Chart settings...

 

Bujs42Z.png

 

In prima faza (submeniul Basic), putem crea un filtru de selectie al activitatilor (in cazul meu, am separat activitatile in 3 categorii: Bike, Trainer si Run, valorile predefinite fiind Bike, Swim si Run). Pentru a alege doar un tip de activitati, se foloseste filtrul Sport MATCHES ".........". Apoi se pot selectiona intervalele de masura (in cazul graficului anterior, ultimul an, cu grupare lunara). In cazul in care optiunea "Data table" e activata, datele sunt afisate in format text (precum in primul tabel), altfel sunt afisate in acest mod grafic suprapus si extrem de greu de urmarit. Prin activarea optiunii "Show stack" in schimb, datele devin considerabil mai lizibile:

 

8Fr636Z.png

 

In fine, pentru a alege ce variabile sunt afisate in aceasta statistica, trebuie sa consultam submeniul Curves.

 

hG7SRpP.png

 

Aici putem adauga, sterge, reordona sau modifica variabile. In dreapta putem vedea lista enorma de variabile ce pot fi adaugate. Variabilele de tip Metric sunt, in general, informatii brute, sau rezultatul unor calcule simple pe baza unor informatii brute. Despre categoriile Best, Estimate si Stress inca nu pot spune tare multe, semnificatiile lor ma depasesc in mod formidabil, softwareul asta fiind gandit extrem de clar pentru sportivi si antrenori de performanta. In fine, optiunea Formula permite crearea unor formule de calcul proprii, definite dupa bunul plac pe baza variabilelor de tip Metric din lista enorma vizibila mai sus (@iacobdoc, asta sigur te intereseaza). Am folosit un exemplu de astfel de formula pentru calcularea vitezei medii pe baza timpului de deplasare, folosind ecuatia 3600 * Distance / Time_Moving (acesta din urma fiind exprimat in secunde, iar distanta in km).

In partea de jos a meniului putem alege diversele optiuni de vizualizare ale datelor, similar cu afisarea intr-un grafic de tip Excel.


In fine, un al doilea tip de grafic pe care il consider foarte util si interesant e cel de tip histograma sau distributie (meniu dreapta-sus, Add Chart -> Distribution). Acesta permite vizualizarea distributiei oricareia dintre variabilele din lista anterioara in functie de timpul petrecut intr-o anumita marja de valori (echivalentul zonelor cardiace e cel mai la indemana), fiind identic cu cel prezentat in pagina Activities. Diferenta majora in cazul lui este ca se poate alege un interval de masura (exact ca in cazul tabelelor de tip Metric trends), respectiv de filtre ale activitatilor (cum ar fi, de exemplu, filtrul dupa tipul de activitate).

f3m2f7Z.png

 

In acest caz, se poate vedea o distributie a vitezei mele in functie de timp. Ce se poate deduce din ea rapid, de exemplu, e ca cea mai mare parte a timpului am o viteza situata in intervalul 27-29 km/h. Blocul din intervalul 10-20 km/h e in mod evident caracteristic timpului petrecut pe catarari, iar ca intervalul de timp petrecut la peste 50 km/h e statistic nesemnificativ. Am generat grafice identice si pe baza ritmului cardiac, respectiv a cadentei.

Un aspect final extrem de util pentru utilizare aplicatiei este configurarea tipului de activitati practicate. Daca site-urile precum Garmin Connect propun in mod predefinit o lista foarte variata de activitati si sub-activitati (de exemplu, ciclism de sosea, cyclocross, MTB, naveta, trainer, etc.), aici toate astea trebuie definite manual, pentru ca la baza singurele tipuri de activitati predefinite sunt Bike, Run si Swim. Cum se poate face asta? Din meniul Tools -> Options, submeniul Data fields.

vj7M3Or.png

 

In lista de mai sus gasim campul Sport, o variabila de tip text (ShortText) care poate lua oricare dintre valorile specificate in coloana Values, separate prin virgula. Pentru a modifica lista se da click pe zona de text in care sunt definite valorile, iar apoi se adauga noi valori (as putea deci adauga MTB, Commute si altele). Ulterior, acestea vor fi vizibile in pagina Activities in momentul in care se alege tipul de activitate, o data uploadata, iar apoi vor putea fi utilizate ca filtru pentru a afisa statisticile defalcate in functie de tipul de sport practicat.

  • Upvote 2

Share this post


Link to post
Share on other sites

Probleme

 

Ca orice aplicatie gratuita / open source si extrem de complexa pe deasupra, apar si anumite probleme in utilizarea ei. Cele pe care le-am intalnit pana acum ar fi:

  1. Activitatile inregistrate de dispozitive Garmin: unele dispozitive Garmin (cred ca majoritatea din ultimii 3-4 ani) au functia de "Smart recording", care permite reducerea volumului de date inregistrate la o tura prin inregistrarea la intervale variabile de timp, in contextul in care in mod normal datele sunt inregistrate in fiecare secunda. Desi aplicatia are, teoretic, o optiune care permite gestionarea acestui tip de format cu intervale variabile de timp, am observat ca vitezele medii, cadentele medii si in special timpii de deplasare nu corespund intotdeauna cu cele din aplicatia Garmin Connect. Exista un parametrul al functiei de import "inteligente", precum si o functie care "repara" toate turele importate, dar inca n-am reusit sa le folosesc cu prea mare succes. Problema e discutata si pe forumurile aplicatiei GC, unii utilizatori au reusit sa rezolve problema, altii nu. Probabil ca depinde si de device-ul utilizat.
  2. Mediile cu valori nule: in mod normal, in momentul in care aplicatia calculeaza valorile medii ale unor parametri (de exemplu viteza sau ritmul cardiac), aceasta filtreaza valorile nule din calculul mediilor. Cu toate astea, daca, sa zicem, pe anul in curs ai 50 de activitati in care ai avut centura de puls si 10 in care n-ai avut-o, aplicatia calculeaza o valoare a pulsului mediu impartita la toate cele 60 de activitati, nu doar la cele 50 in care centura cardiaca a fost prezenta. Nu mi-e clar daca e un bug in aplicatie sau e legat tot de vreo problema de import ale activitatilor Garmin, dar voi incerca sa gasesc o solutie si in acest sens (de exemplu, o formula de calcul mai complexa, diferita de cea folosita implicit pentru Average Heart Rate).

 

Sharing is caring

 

Dat fiind numarul urias de parametri ai aplicatiei si timpul deloc neglijabil petrecut pentru customizarea ei, in acelasi meniu din dreapta-sus, de sub bara de Search, se gasesc comenzile Upload chart si Download chart. Dupa cum le spune si numele, cele doua functii permit incarcarea si descarcarea de tabele si tipuri de statistici create de utilizatorii aplicatiei. Eu am incarcat deja vreo doua dintre ele, ca sa vad daca si cum functioneaza sistemul, iar in total sunt aproape 200 la momentul de fata. In momentul in care imi voi pune la punct propria interfata intr-o versiune cvasi-finala, voi exporta respectivele tabele.

 

Cam asta a fost introducerea in utilizarea aplicatiei, o sa mai postez una-alta daca mai descopar lucruri interesante si astept (fara sa-mi fac mari sperante, ce-i drept) parerile si sfaturile altora care au folosit sau vor folosi aplicatia asta, eventual pentru lucruri mult mai serioase decat o folosesc eu.

Share this post


Link to post
Share on other sites

Analize statistice in R

 

(partea asta a topicului e pentru cei care au niste cunostinte minime de programare, indiferent de limbaj)

 

Golden Cheetah ofera, dincolo de graficele si statisticile care pot fi configurate direct in aplicatie, posibilitatea de a rula scripturi R. Pentru asta, trebuie adaugat un "R Chart", care se poate adauga atat in meniul Activities cat si in meniul Trends. O data adaugata, fereastra R Chart ofera o zona pentru scrierea codului R, o consola in care se pot executa diverse comenzi (tot in R), respectiv o zona din ecran pe care va fi afisat graficul generat de script (asta daca scriptul contine comenzile necesare pentru afisarea unor grafice).

 

Pentru a avea acces la datele stocate in aplicatie, Golden Cheetah ofera o lista de variabile care pot fi utilizate in scriptul R care e rulat in interiorul aplicatiei. O lista relativ exhaustiva de detalii se gaseste aici. Inca nu am apucat sa "ma joc" cu toate facilitatile, dar voi prezenta, pe scurt, cateva elemente de functionalitate de care eu m-am folosit pana acum.
 

Statistici ale unei ture

 

Pentru a avea acces la datele unei ture, GC permite extragerea lor folosind functia GC.activity(), care extrage activitatea curenta aleasa in meniul din stanga paginii Activities. Apoi, o data recuperata activitatea, pot fi extrase atat datele brute (activity$heart.rate, activity$speed, activity$cadence, unde activity e numele variabilei in care a fost stocata activitatea), obtinand tabele cu fiecare esantion inregistrat de GPS pe durata turei, cat si metricile (adica statisticile globale ale fiecarei ture), folosind functia activity.metrics(), iar apoi recuperand fiecare metrica in parte. O data extrase datele respective, ele pot fi procesate si afisate dupa bunul plac al cititorului. Mai multe despre asta in partea urmatoare a postarii.

 

Statistici pe termen lung (mai multe ture)

 

Pentru a face statistici pe baza mai multor ture (sa zicem tot sezonul trecut), trebuie urmati cativa pasi:

  • obtinerea listei complete de activitati, filtrate dupa sportul ales (asta in cazul celor care logheaza mai multe tipuri de activitati)
  • extragerea activitatilor desfasurate in intervalul de timp ales
  • apoi, pentru fiecare activitate validata anterior, in functie de tipul de statistici vizate, se realizeaza pentru fiecare parametru de interes (viteza, puls, cadenta, putere, etc.):
    • concatenarea metricilor (adica a statisticilor globale ale fiecarei ture, cum ar fi distanta totala, pulsul mediu, viteza medie, viteza maxima) aferente fiecarei ture intr-un tabel sau
    • concatenarea datelor brute (adica a fiecarui esantion inregistrat de GPS) aferente fiecarei ture

De la punctul asta incolo, o data create tabelele cu metricile sau datele brute corespunzatoare listei de activitati dorite, exista doua variante:

  • salvarea lor intr-un fisier .csv, pentru a fi prelucrate ulterior in afara Golden Cheetah
  • generarea, pe baza lor, a unor grafice cu statisticile dorite

Din cauza ca aplicatia Golden Cheetah se misca destul de greoi, am preferat sa externalizez crearea graficelor si statisticilor. Prin urmare, am creat aceasta functie, al carei scop e extragerea datelor brute din activitatile dintr-un anumit interval de timp si cu un anumit filtru si salvarea lor intr-un fisier CSV. Momentan variabilele procesate sunt viteza, cadenta si pulsul, iar de metrici inca nu m-am ocupat. Functia poate fi folosita si modificata de cine doreste, de aia am pus linkul aici. Valabil acelasi lucru si pentru restul functiilor pe care le voi atasa de aici incolo, cu mentiunea ca nu toate sunt neaparat comentate cum trebuie.

 

De aici incolo, datele pot fi procesate in orice limbaj de analiza statistica (R, MATLAB, Scilab, etc.). Cum m-am gandit ca n-ar fi rau sa ma familiarizez cu un limbaj nou de programare, am continuat si partea de grafice in R, dar in scripturi separate. O data recuperate datele brute (fie din fisierul .csv salvat anterior, fie direct in interfata Golden Cheetah folosind o functie similara cu cea anterioara), procesarea si afisarea lor se face destul de simplu, si se gasesc foarte multe tutoriale online in acest sens. Pana acum am generat 3 grafice care prezinta interes pentru mine:

Histograma rapoartelor de viteza folosite (ce procent din timp am stat in fiecare raport):

7lCowXz.png

 

Cadenta mediana (± deviatia standard) in functie de viteza de deplasare, pe intervalul 5-50 km/h:

p2lUwzH.png

 

Pulsul median (± deviatia standard) in functie de viteza de deplasare, pe intervalul 5-50 km/h, cu delimitarea celor 5 zone de puls:

Vj4nR81.png

In cazul ultimelor doua grafice, valorile mediane pentru fiecare viteza sunt calculate pornind de la o fereastra centrata pe viteza respectiva si cu o marja de ± 2 km/h (moving window filter). In plus, am exportat cadenta mediana si deviatia standard obtinuta pentru fiecare dintre vitezele din intervalul studiat intr-un alt fisier .csv, de care ma voi folosi ulterior pentru a evalua "suprapunerea" dintre rapoartele de viteza consecutive, adica pe ce procent din plaja de turatii imi permit sa schimb de pe un raport de viteza pe altul fara sa ies din respectiva plaja de turatii.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.