KUORE

← Teknoblogi

Miten opetimme Garmin-kellon tunnistamaan sauvakävelyn sauvatyönnöt

9. marraskuuta 2026 · Kuore Lab

#harrastus #urheilu #vapaa-aika #matematiikka #puettavat #garmin #sauvakävely #data-analyysi #algoritmi #hobby #sport #freetime #math #wearable #nordicwalking #dataanalysis #algorithm

Read this in English →

Osa Kuore Labin tiimistä harrastaa innokkaasti sauvakävelyä. Laji syntyi täällä Suomessa, ja se on erinomainen liikuntamuoto, jossa jalkojen lisäksi myös ylävartalo pääsee töihin.

Tämä ei siis alkanut asiakasprojektina vaan sivuprojektina, jota teimme vapaa-ajallamme lenkeillä ja iltaisin: osaisiko ranteessa jo valmiiksi oleva kello kertoa, miten käytämme sauvojamme?

Nykyaikaiset urheilukellot osaavat mitata kävelystä lähes kaiken: matkan, vauhdin, sykkeen, kalorit, askeleet ja jopa korkeuserot. Mutta yhtä asiaa ne eivät yleensä mittaa — mitä kävelysauvoilla oikeastaan tehdään.

Halusimme muuttaa tämän.

Tavoitteenamme oli kehittää Garmin-sovellus, joka tunnistaisi ja laskisi sauvatyönnöt automaattisesti käyttämällä pelkästään kellon sisäänrakennettua kiihtyvyysanturia. Ei lisäantureita, ei muokattuja kävelysauvoja eikä erikoisvarusteita.

Ajatus kuulosti melko yksinkertaiselta. Käytännössä se osoittautui yllättävän hankalaksi.

Sauvakävely-sovelluksen kolme näkymää Garmin vívoactive 5 -kellossa: kävelyn tiedot, sauvatyöntötiheys ja työntöjen määrä sekä yhteenveto
Sauvakävely Garmin vívoactive 5 -kellossa: tavalliset kävelyn tiedot, sauvatyöntötiheys ja työntöjen määrä reaaliajassa sekä yhteenveto lopuksi. Näkymät Connect IQ -simulaattorista.

Ensimmäinen yritys: lasketaan kaikki

Ilmeisin lähestymistapa oli etsiä kiihtyvyysdatasta äkillisiä muutoksia.

Älykellossa on kolmiakselinen kiihtyvyysanturi, joka mittaa liikettä kolmessa suunnassa. Kun kävelysauva osuu maahan, osa iskusta välittyy käden ja ranteen kautta kelloon ja näkyy mitattavana signaalina.

Aloitimme siis yksinkertaisella algoritmilla: tunnistetaan kiihtyvyyshuiput, lasketaan ne ja jätetään huomiotta seuraavien 450 millisekunnin aikana tulevat huiput.

Se toimi. Valitettavasti aivan liian innokkaasti.

Eräällä tallennetulla kävelylenkillä ensimmäinen algoritmi laski 6 960 sauvatyöntöä. Myöhempi algoritmimme laski samasta tallenteesta 3 948.

Syy selvisi, kun tutkimme kiihtyvyysanturin raakadataa.

Ranne ei koe vain yhtä kiihtyvyyshuippua sauvan osuessa maahan. Huippuja syntyy myös käden vaihtaessa suuntaa, kehon liikkuessa ja käsivarren heilahtaessa eteenpäin.

Tavallinen kävelyliike voi tuottaa hyvinkin uskottavia signaaleja, vaikka sauva ei koskettaisi maata lainkaan.

Meidän piti opettaa algoritmi erottamaan nämä toisistaan.

Vanhan ja uuden sauvatyöntöjen tunnistusalgoritmin vertailu
Kuva 1. Kaksi algoritmia samalla kävelylenkillä. Punainen viiva kuvaa alkuperäistä kiihtyvyyshuippujen laskentaa ja vihreä parannettua tunnistinta. Ensimmäinen versio laski huomattavasti enemmän tapahtumia, myös tavallisia käden liikkeitä.

Rytmi ratkaisee

Ensimmäinen hyödyllinen havainto oli, että sauvakävelyssä on melko säännöllinen rytmi.

Tavallisessa vuorotahtisessa tekniikassa kumpikin sauva osuu maahan joka toisella askeleella. Koska kello on vain toisessa ranteessa, se mittaa yhden käden liikettä.

Voimme hyödyntää Garminin mittaamaa askeltiheyttä arvioidaksemme, kuinka kauan yksi käden heilahdus kestää ja kuinka pian seuraava sauvatyöntö voi tulla.

Jos kävelijä ottaa esimerkiksi 100 askelta minuutissa, kummankin käden pitäisi tehdä noin 50 sauvatyöntöä minuutissa.

Tämän avulla voimme hylätä suuren osan kiihtyvyyshuipuista, jotka tulevat liian pian edellisen työnnön jälkeen: ne ovat toisen askeleen huippuja.

Pelkkä ajoitus ei kuitenkaan riitä. Käsiä voi heiluttaa täsmälleen samassa rytmissä myös silloin, kun sauvoja vain kannetaan mukana.

Tarvitsimme vielä toisen tunnusmerkin.

Pieni sivuttaisliike, joka muutti kaiken

Kun tutkimme oikeilta kävelylenkeiltä kerättyjä mittauksia, huomasimme jotain kiinnostavaa.

Sauvatyöntö aiheuttaa kokonaiskiihtyvyyden muutoksen lisäksi selvän liikkeen kellon sivuttaisakselilla.

Tavallinen käsivarren heilautus voi tuottaa yhtä suuren kiihtyvyyshuipun, mutta siihen ei välttämättä liity samanlaista sivuttaista nykäystä.

Tästä saimme toisen ehdon: mahdollisen sauvatyönnön pitää tuottaa sekä riittävän voimakas kiihtyvyyshuippu että sille ominainen sivuttaisliike.

Kello mittaa kiihtyvyyttä 25 kertaa sekunnissa. Analysoimme mittaukset mukautuvan kynnysarvon avulla, jotta tunnistin pystyy reagoimaan erivoimakkuisiin liikkeisiin.

Sen jälkeen tarkistamme, ylittääkö sivuttaiskiihtyvyys määritellyn raja-arvon lyhyen aikaikkunan (240 millisekuntia) sisällä juuri ennen havaittua huippua.

Kiihtyvyyden, ajoituksen ja sivuttaisliikkeen yhdistelmä osoittautui huomattavasti hyödyllisemmäksi kuin mikään näistä signaaleista yksinään.

Kahdeksan sekuntia sauvakävelyn kiihtyvyysdataa
Kuva 2. Kahdeksan sekuntia kiihtyvyysanturin mittausdataa. Vihreät pisteet ovat hyväksyttyjä sauvatyöntöjä. Harmaat rastit merkitsevät liian pian edellisen työnnön jälkeen tapahtuvia huippuja. Alempi kuvaaja näyttää sivuttaiskiihtyvyyden, jota käytetään lisäehtona työnnön tunnistamisessa.

Milloin ei pidä laskea mitään?

Seuraava ongelma tuli vastaan taukojen aikana.

Kellon painikkeiden painaminen, sauvojen nostaminen lenkin lopussa tai niiden laskeminen maahan suojatien kohdalla saattoi synnyttää yksittäisiä kiihtyvyyshuippuja, jotka muistuttivat oikeita sauvatyöntöjä.

Ratkaisumme oli lakata käsittelemästä jokaista tapahtumaa erillisenä.

Nyt tunnistin etsii liikesarjaa, joka muodostaa säännöllisen kävelyrytmin. Se odottaa kolmea ehdot täyttävää tapahtumaa ennen kuin vahvistaa sauvatyöntöjen laskennan alkaneen.

Algoritmi pystyy myös huomioimaan yksittäisen heikon sauvatyönnön, joka muuten saattaisi jäädä tunnistamatta.

Kaksi ensimmäistä työntöä eivät katoa: ne lisätään heti, kun kolmas vahvistaa rytmin. Tämä aiheutti laskuriin pienen viiveen uuden kävelyjakson alussa, mutta vähensi huomattavasti satunnaisten liikkeiden aiheuttamia virheellisiä laskentoja.

Erityisen miellyttävä testi oli kävellä niin, että sauvoja pidettiin käsissä mutta niitä ei käytetty.

Parannettu tunnistin pudotti sauvatyöntöjen määrän nollaan viiden minuutin ajaksi, vaikka kävely jatkui normaalisti. Samalla lenkillä tallennettu ensimmäinen algoritmi jatkoi laskemista koko ajan (ks. kuva 1).

Tunnin kävelylenkki: sauvatyönnöt ja askeltiheys
Kuva 3. Sininen viiva näyttää kellokäden tunnistetut sauvatyönnöt ja harmaa viiva Garminin mittaaman askelrytmin. Korostetulla aikavälillä sauvoja kannettiin käsissä eikä niitä käytetty. Kävely jatkui, mutta sauvatyöntöjen laskenta pysähtyi.

Testausta oikeassa elämässä

Emme halunneet säätää algoritmia vain katsomalla muutamia kiihtyvyyshuippuja ja arvailemalla, mitä ne tarkoittavat.

Sen sijaan tallensimme oikeita kävelylenkkejä. Mukana oli myös kontrolloituja testejä, joissa sauvatyönnöt laskettiin käsin täsmälleen sataan, sekä kävelyä sauvoja kantaen ja kokonaan ilman sauvoja.

Kehitimme lisäksi Python-version tunnistimesta, jolla tallennettu kiihtyvyysdata voitiin käsitellä uudelleen.

Näin pystyimme testaamaan algoritmin muutoksia samoilla tallenteilla ilman, että jokaista muutosta varten piti lähteä uudelle lenkille.

Muutamia tuloksia kehitysvaiheen testeistä:

KehitysvaiheTestiEnnen vaihettaVaiheen jälkeen
AskelrytmiKaksi lenkkiä, 100 käsin laskettua sauvatyöntöä168 ja 11698 ja 88
SivuttaisliikeKaksi lenkkiä, 100 käsin laskettua sauvatyöntöä96 ja 98
30 sekuntia kävelyä sauvat käsissä504
Rytmin vahvistus85 askelta ilman sauvoja50
Lenkit, 100 käsin laskettua sauvatyöntöä104–106

Ensimmäisen rivin "ennen"-sarake on alkuperäinen 450 millisekunnin huippulaskuri. Jokainen vaihe tarkistettiin omilla kalibrointilenkeillään, joten taulukko kuvaa kehitystyötä vaihe vaiheelta, ei yhtä lopullista vertailumittausta.

Tulokset olivat rohkaisevia, erityisesti virheellisten tunnistusten väheneminen.

Kyseessä ei tietenkään ole laboratoriotason mittausjärjestelmä. Kello seuraa vain yhtä kättä, joten arvioimme sauvatyöntöjen kokonaismäärän kaksinkertaistamalla kyseisen käden tunnistetut työnnöt. Epätavallinen kävelytekniikka, maasto ja hyvin kevyet sauvatyönnöt voivat edelleen vaikuttaa tarkkuuteen.

Jatkamme mittausdatan keräämistä ja tunnistimen kehittämistä.

Vähän matematiikkaa, paljon kävelyä

Valmis algoritmi toimii suoraan Garmin-kellossa. Se on kirjoitettu Monkey C -ohjelmointikielellä Connect IQ -alustalle.

Se ei tarvitse internetyhteyttä eikä erillistä laskentalaitetta. Itse tunnistin on suhteellisen pieni, noin 300 rivin ohjelmakokonaisuus, jossa yhdistyvät signaalin suodatus, mukautuvat kynnysarvot, askelrytmin analysointi ja säännöllisen liikkeen tunnistaminen.

Ehkä juuri tämä oli projektin kiinnostavin puoli.

Tarvittava laitteisto oli jo olemassa. Emme tarvinneet uutta anturia emmekä tehokkaampaa kelloa. Meidän piti vain ymmärtää mitattua signaalia riittävän hyvin, jotta pystyimme poimimaan siitä haluamamme tiedon.

Ja siihen tarvittiin huomattavasti enemmän kävelylenkkejä kuin aluksi kuvittelimme.

Sauvatyöntöjen tunnistusalgoritmi on nyt osa Garminille kehittämiämme Sauvakävely- ja Sauvakävely Pro -sovelluksia. Tavallisten GPS- ja liikuntamittausten lisäksi ne seuraavat sauvatyöntöjen määrää, sauvatyöntötiheyttä sekä askelten ja sauvatyöntöjen välistä suhdetta.

Sauvakävely Pro -sovelluksen kolme näkymää Garmin vívoactive 5 -kellossa: kääntymiskehotus, nuoli lähtöpisteeseen ja kuljettu reitti
Kuva 4. Sauvakävely Pro tuo mukaan meno-paluulenkit: kehotuksen kääntyä takaisin, kompassinuolen lähtöpisteeseen ja kuljetun reitin kellon näytöllä.

Kyseessä on pieni ominaisuus, mutta se tekee urheilukellosta hieman hyödyllisemmän juuri siinä liikuntamuodossa, josta itse pidämme.

Suomessa kehitetty. Sauvakävelyn innoittama. Matematiikan mahdollistama.

Tilaa blogi

Uusia kirjoituksia ilmestyy vain silloin tällöin. Seuraa haluamallasi tavalla:

Käytämme osoitettasi vain blogipäivitysten lähettämiseen ja säilytämme sen, kunnes peruutat tilauksen. Katso tietosuojaseloste.