Servon liikeradan analysointi ML-mallin avulla

Sisällysluettelo

1. Miksi tämä tehtiin

Kun servon liikerata alkaa poiketa normaalista (esim. resonanssi, kitka, löystyminen tai kuorman muuttuminen) poikkeama näkyy usein jo mittausdatassa ennen varsinaista vikaantumista. Liikerata päätellään liikkeen aikaisesta kiihtyvyys-/värinädatasta ja ohjauskulmasta. Liikerataa analysoidaan ML-mallin avulla, koska poikkeama ei aina näy yksittäisenä selkeänä raja-arvon ylityksenä, vaan ilmiö voi olla yhdistelmä useita signaalimuutoksia, jotka vaihtelevat kuorman ja asennuksen mukaan. Sääntöpohjainen ohjelmointi (”if/else + kynnysarvot”) johtaa helposti herkkään viritykseen, joka ei yleisty eri olosuhteisiin. ML-malli taas pystyy oppimaan normaalin käyttäytymisen rakenteen datasta ja tunnistamaan siitä poikkeavat tapaukset.

Inferenssi ajetaan reunalaitteessa, jotta poikkeama voidaan havaita pienellä viiveellä ja ilman riippuvuutta verkkoyhteydestä. Lisäksi reunalla voidaan lähettää pilveen vain tiivistetty tulos (esim. anomaliatila ja score) raakadatan sijaan, mikä pienentää kaistanleveyden tarvetta ja kustannuksia sekä parantaa toimintavarmuutta myös katkonaisissa yhteyksissä.

2. Mitä tässä tapahtuu

Mikrokontrolleri lähettää yhden mittausajon UART-yhteyden yli reunalaitteelle. Mittausajo sisältää kiihtyvyysanturilta luetun värinä- ja kiihtyvyysdatan servon liikkeen ajalta, sekä servon ohjauksessa käytetyn kulma-arvon ohjaussignaalina. Reunalaitteessa SerialReader-moduuli lukee viestin ja välittää datan eteenpäin. Data lähetetään suoraan Azure IoT Hubiin tallennettavaksi pilveen mallin uudelleenkoulutusta varten, mutta myös CleanData-moduulille, joka esikäsittelee mittauspisteet ja ajaa ML-mallin, jonka tuloksena saadaan anomalia-/normaaliluokitus ja pisteytys. Raakamittausdata ohjataan pilveen myöhempää uudelleenkoulutusta varten, ja samalla esikäsitelty feature engineering-/inferenssitulos lähetetään visualisointia ja jatkokäsittelyä varten.

3. Miten toteutettu

Toteutus on jaettu kahteen IoT Edge -moduuliin modulaarisuuden ja paremman ylläpidettävyyden vuoksi. SerialReader hoitaa sarjaportin luennan ja viestin välityksen ja CleanData hoitaa datan esikäsittelyn sekä ML-inferenssin.

UART-viesti on kehystetty siten, että JSON-paketti pystytään lukemaan yhdellä kertaa sarjaportista. CleanData käyttää lyhyttä puskuria peräkkäisistä mittauksista ja laskee featuret, skaalaa ne skaalaimella ja ajaa mallin, jonka tulos lähetetään eteenpäin IoT Edge -reitityksillä. Modulit on määritetty käynnistymään automaattisesti ja pysymään käynnissä (restartPolicy=always).

CleanData
Sensori
(UART)
→
SerialReader
↗ ↘
↓
Azure IoT Hub

Vianetsintäkomennot:

# Tarkista moduulien tila
iotedge list

# Katso lokit
iotedge logs -f SerialReader
iotedge logs -f CleanData
iotedge logs edgeHub

# Käynnistä moduuli uudelleen
iotedge restart <moduulin_nimi>

4. Mihin tätä voi käyttää

Vaikka esimerkki on toteutettu servolla, sama rakenne toimii yleisesti ennakoivassa kunnonvalvonnassa, kun reunalaitteella halutaan tunnistaa poikkeamia sähkömekaanisesta liikkeestä. Ratkaisu soveltuu esimerkiksi moottoreihin, lineaaritoimilaitteisiin, pumppuihin ja muihin kohteisiin, joissa anturidata voidaan kerätä paikallisesti ja analysoida nopeasti ennen tulosten lähettämistä pilveen.

5. Rajaukset ja jatkokehitys

ML-inferenssin tuloksen luotettavuus riippuu mittausdatan laadusta, anturin kiinnityksestä ja kuormitusolosuhteista. Datadriftillä tarkoitetaan tilannetta, jossa mittausdatan jakauma muuttuu ajan myötä ilman, että se johtuisi servon vikaantumisesta (esim. anturin asento, kiinnitys, lämpötila tai kuormaprofiili muuttuu). Tämän vuoksi mallia pitää tietyn väliajoin päivittää. Jatkokehityksessä keskeisiä parannuksia ovat mittausdatan laadun tarkistukset ennen inferenssiä ja siitä LED:llä tai näytöllä tehtävä indikointi, sekä mallin etäpäivitys ja versiointi hallitulla prosessilla (uusi moduli tai module twin kautta tehtävä päivitys). Lisäksi mittaus voidaan vaihtoehtoisesti toteuttaa jatkuvana streamina, jos viive- ja kaistanleveysvaatimukset sen sallivat.