Servon liikeradan analysointi ML mallin avulla - Tekninen Dokumentaatio

Sisällysluettelo

1. Yleiskatsaus

Servon liikeradan analysointi ML mallin avulla on Azure IoT Edge AI -pohjainen putki, joka lukee Servon liikeradan mittaustiedon sarjaportin kautta ja tekee reaaliaikaista poikkeamien tunnistusta koneoppimismallilla ja lähettää tulokset Azure IoT Hubiin jatkokäsittelyä ja visualisointia varten.

Järjestelmä koostuu kahdesta IoT Edge -moduulista:

2. Arkkitehtuuri

CleanData
(v0.0.16)
Sensori
(UART)
SerialReader
(v0.0.18)
Azure IoT Hub

2.1 Komponentit

3. Moduulit

3.1 SerialReader-moduuli

Tarkoitus: Sensoridatan kerääminen sarjaportin kautta

Toiminta:

  1. Yhdistää UART-porttiin (/dev/ttyS0, 115200 baud)
  2. Lukee kehystettyä dataa (4-tavun otsake + JSON)
  3. Lähettää datan kahteen output-kanavaan:
    • output1 → Azure IoT Hub
    • output2 → CleanData-moduuli

Viestin metatiedot:

Virheenkäsittely:

3.2 CleanData-moduuli

Tarkoitus: Datan prosessointi ja poikkeamien tunnistus koneoppimismallin avulla

Toiminta:

  1. Vastaanottaa dataa SerialReader-moduulilta (input1)
  2. Purkaa JSON:n ja poimii viimeisimmän mittauksen (jos mukana measurements[]-taulukko)
  3. Päivittää lyhyen puskurin (viimeiset 10 mittausta) feature-laskentaa varten
  4. Laskee featuret ja skaalaa ne skaalainerilla
  5. Ajaa anomaly detection -mallin ja lähettää tulokset IoT Hubiin

ML-malli:

Featuret (feature_order.json):

["angle", "acc_x", "acc_y", "acc_z", "acc_total", "d_angle", "d_acc_total", "acc_total_ma", "acc_total_std"]

Feature-laskenta (tiivistetty):

4. Dataformaatit

4.1 Input-JSON (SerialReader → CleanData)

{
  "measurements": [
    {
      "time_ms": 0,
      "angle": 0,
      "acceleration": {
        "x": 2029,
        "y": 1986,
        "z": 1648,
        "total": 3282
      }
    }
  ]
}

4.2 Output-JSON (CleanData → IoT Hub)

{
  "status": "processed",
  "module": "cleandata",
  "timestamp": "2025-12-23T08:00:00.000000",
  "original_source": "serialreader",
  "message_type": "ml_inference",
  "measurement": {
    "time_ms": 0,
    "angle": 0,
    "acc_total": 3282
  },
  "anomaly_detection": {
    "is_anomaly": false,
    "anomaly_score": 0.15,
    "prediction": 1
  }
}

Huom: Jos ML-komponentteja ei saada ladattua, anomaly_detection-kenttään lisätään virheilmoitus ja viesti lähetetään silti eteenpäin.

5. Deployment-konfiguraatio

5.1 Reititykset

Reitin nimi Lähde Kohde
serialreaderToIoTHub /messages/modules/serialreader/outputs/output1 $upstream
serialToCleandata /messages/modules/serialreader/outputs/output2 /modules/cleandata/inputs/input1
cleandataToIoTHub /messages/modules/cleandata/outputs/output1 $upstream

5.4 Azure IoT Edge -toteutus

5.4.1 Reititykset ja Store-and-Forward

5.4.2 Moduulien konfigurointi (Module Twin)

5.4.3 Viestiformaatit ja metatiedot

5.4.4 Resurssirajat ja prosessin hallinta

5.4.5 Tietoturva

6. Laitteistovaatimukset

7. Vianhaku

Yleiset ongelmat:

  • IoT Edge -yhteys: serialreader käyttää retry-logiikkaa IoT Hub -yhteyden muodostamiseen (5 yritystä, 5 s väli).
  • UART: serialreader lukee dataa laitteesta /dev/ttyS0 ja käsittelee sarjaporttivirheitä uudelleenyhdistämällä.
  • Merkistö: serialreader lähettää JSON:n UTF-8-koodattuna.
  • ML-komponentit: cleandata lataa käynnistyksessä mallin, skaalainerin ja feature-järjestyksen poluista /app/ML/*. Jos lataus epäonnistuu, viesteihin liitetään anomaly_detection-kenttään virhetieto.
  • Feature-laskenta: cleandata rakentaa DataFrame:n puskurista ja laskee derivaatat sekä liukuvat tilastot; poikkeustilanteet kirjataan lokiin.

Havainnointi (observability):

  • Lokitus: moduulit kirjoittavat toiminnan ja virhetilanteet standard outputiin, josta IoT Edge kerää lokit.
  • serialreader-lokit: sisältää UART-paketin pituusotsakkeen heksana, luetun JSON:n esikatselun sekä lähetyksen onnistumisen/epäonnistumisen.
  • cleandata-lokit: sisältää ML-komponenttien latauksen tilan, feature-laskennan virheet sekä anomalian tunnistuksen tulosteen (score ja tila).

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>

8. Versionhallinta

Moduuli Versio Muutokset
serialreader 0.0.18 Viimeisin testi versio
cleandata 0.0.16 Viimeisin testi versio

9. Tulevat kehitysideat

Huom: Tämä dokumentti on voimassa versioille 0.0.18 (serialreader) ja 0.0.16 (cleandata).