Vienetas 4 / 9

Sensor Fusion ir IoT duomenų integravimas

Pelnas:

  • Galimybė sukurti sintezės logiką (integratorių / Kalmano filtrą), kuri sujungia IMU, koduotuvą ir atstumo jutiklio duomenis su AI
  • Galimybė konfigūruoti ir interpretuoti MQTT pagrįstus IoT duomenų srautus ir telemetriją naudojant AI
  • Galimybė aptikti ir ištaisyti jutiklio triukšmą, kalibravimo ir laiko sinchronizavimo problemas dirbtinio intelekto išvestyje

Nė vienas jutiklis nėra tobulas. Giroskopas yra labai tikslus per trumpą laiką, tačiau laikui bėgant dreifuoja. Pagreičio matuoklis yra stabilus ilgalaikėje perspektyvoje, tačiau vibracijos sukelia triukšmą. Koderis tiksliai išmatuoja padėtį, bet jis neteisingas, kai yra slydimas. GPS veikia plačioje vietoje, bet žemo dažnio ir triukšmingo. Mechatronikos inžinierius turi sukurti vieną, patikimą tiesą iš šių netobulų jutiklių; Tai jutiklių suliejimas. Be to, šiuolaikinėse sistemose šie duomenys ne tik lieka vietiniai, bet ir per IoT tinklus patenka į debesų ir valdymo centrus. Dirbtinis intelektas yra galinga pagalba nustatant sintezės algoritmus ir konfigūruojant bei interpretuojant daiktų interneto telemetriją. Šiame skyriuje aptariame papildomą filtrą, Kalmano filtro logiką ir tai, kaip nustatyti MQTT pagrįstą IoT srautą naudojant AI ir gaudyti triukšmo ir sinchronizavimo spąstus.

Kodėl Sensor Fusion?

Kiekvienas jutiklis turi „gero dažnio zoną“. Suliejimo tikslas yra naudoti kiekvieną jutiklį toje srityje, kurioje jis yra stiprus, ir palaikyti jį su kitu toje srityje, kurioje jis silpnas.

jutiklis

stiprioji vieta

silpnumas

giroskopas

Trumpalaikis kampinis greitis, greita reakcija

Dreifas laikui bėgant

akselerometras

Ilgalaikė nuolydžio atskaita (gravitacija)

Vibracija/triukšmas judant

kodavimo įrenginys

Didelės skiriamosios gebos vieta

Slydimo/atsilenkimo klaida

GPS

absoliuti pozicija

Žemas dažnis, triukšmas, nėra patalpų

Pasitikėjimas vienu jutikliu įveda į sistemą to jutiklio silpnumą. Pavyzdžiui, „Fusion“ sujungia greitą, bet slenkantį giroskopo kampą su lėta, bet pastovia akselerometro atskaita, todėl kampas yra greitas ir be dreifo.

Papildomas filtras

Paprasčiausias ir labiausiai paplitęs suliejimas yra papildomas filtras. Idėja intuityvi: pasitikėkite giroskopu aukštu dažniu (greitas pokytis), akselerometru žemu dažniu (lėtas, stabilus). Vienos eilutės santrauka:

# Papildomas filtras: skausmo įvertinimas (aukštis) # alfa ~ 0,98 : daugiau giroskopui, mažiau akselerometrui (laipsniais/sek.) acceleration_ange : kampas, apskaičiuotas iš akselerometro (laipsniais) dt : mėginių ėmimo laikotarpis (sek.) """ giroskopas_pakas = ankstesnis + giroskopas gyro_pace + (1 - alfa) * acceleration_angle# Tikrinimo logika: grynas giroskopas (dreifuoja), jei alfa = 1, # jei alfa = 0 grynas akselerometras (triukšmingas).

Koeficientas alfa čia nulemia balansą: jei jis artimas 1, remiasi giroskopu (didėja dreifo rizika), jei artimas 0 – akselerometru (triukšmas didėja). Tipinė vertė yra 0,95–0,98. AI gali pasiūlyti šią reikšmę, bet teisinga alfa priklauso nuo jūsų sistemos imties dažnio ir triukšmo pobūdžio; nustatomas eksperimentiniu būdu.

Patarimas: spausdindami integruotą filtrą į AI, būtinai paklauskite, kaip matuojamas dt. Dauguma klaidų kyla darant prielaidą, kad dt yra pastovus, tačiau iš tikrųjų ciklo laikas skiriasi. Išmatuokite dt real su millis()/timestamp, nerašykite konstantų.

Kalmano filtro logika

Papildomas filtras yra paprastas, tačiau nemoduliuoja triukšmo statistikos. Kalmano filtras sukuria optimalų (esant tam tikroms prielaidoms) įvertinimą tikimybiškai modeliuodamas jutiklio triukšmą ir proceso neapibrėžtį. Jis veikia dviem etapais:

  1. Numatyti: su sistemos modeliu nuspėti kitą situaciją ir jos neapibrėžtumą.
  2. Atnaujinimas: pasverkite naują matavimą su matavimo patikimumu (Kalmano padidėjimu) ir pataisykite įvertinimą.

Kalman gain K kiekviename žingsnyje automatiškai atsako į klausimą „ar turėčiau labiau pasitikėti matavimu ar modeliu“. Jei matavimo triukšmas didelis, K tampa mažesnis (pasitikėjimas modeliu), jei proceso neapibrėžtis didelis, K tampa didesnis (pasitikėjimas matavimu). AI lengvai įrašo vienmatį Kalmano filtrą; bet jūsų darbas yra teisingai parinkti triukšmo kovariacijas (Q, R) ir jos kyla iš tikrojo sistemos triukšmo.

Dėmesio: AI pateiktos Q (proceso triukšmo) ir R (matavimo triukšmo) vertės yra pavyzdys / vietos rezervuaras. Jei jų nenustatysite iš tikrojo sistemos matavimo triukšmo (pvz., dispersijos, išmatuotos, kai jutiklis nejuda), filtras bus per lėtas arba per triukšmingas. Nepasitikėkite kovariacijomis, kurias AI pateikia kaip „tikrąją vertę“.

IoT duomenų srautas: MQTT ir telemetrija

Švarūs duomenys, kuriuos sukuriate naudojant sintezę, paprastai per daiktų internetą perduodami į centrą. Pramonėje labiausiai paplitęs protokolas yra MQTT: lengvas, publikavimo ir prenumeratos modelis, tinkamas mažam pralaidumui. AI greitai nustato MQTT leidėjo / abonento kodą ir JSON telemetrijos schemą.

import json, timeimport paho.mqtt.client as mqttclient = mqtt.Client()client.connect("brokeris.local", 1883, keepalive=60)def telemetry_broadcast(temperatūra, temperatūra, vibracijos_rms): pranešimas = { "ts": # timestamp. "pain_deg": round(pain, 2), "temperature_c": round(temperature, 1), "vibration_rms": round(temperature_rms, 3), "unit": {"pain": "deg", "temperature": "C", "vibration": "mm/s"} } client ( qos=1)# qos=1: pristatyta bent kartą. Naudojant qos=0 (gali būti prarasta) svarbiems duomenims.

Čia svarbūs du inžineriniai sprendimai: (1) laiko žymėjimas (ts) kiekvienas pranešimas – skirtingi jutikliai imami skirtingu laiku, sinchronizuoti galima tik su laiko žymėjimu; (2) QoS lygis – kritiniams duomenims naudojama bent qos=1 (pateikta bent kartą), qos=0 leidžia prarasti pranešimą.

Triukšmas, kalibravimas ir sinchronizavimas

Kad ir koks geras būtų suliejimas, trys įvesties problemos iškraipo rezultatą:

  • Triukšmas: jei neapdoroti jutiklio duomenys patenka į sintezę nefiltruojami, sintezės išvestis taip pat bus triukšminga. Gali prireikti išankstinio filtravimo (vidutinis, žemo pralaidumo).
  • Kalibravimas: poslinkio ir mastelio paklaidos (pvz., pasislinkęs akselerometro nulinis taškas) sistemingai klaidina sintezę. Prieš naudojimą jutikliai turi būti sukalibruoti.
  • Laiko sinchronizavimas: norint suderinti jutiklius, paimtus skirtingais dažniais (pvz., 10 Hz GPS su 1 kHz IMU), reikia laiko žymos ir interpoliacijos.

AI gali pridėti šiuos veiksmus prie kodo, tačiau ar kiekvienas yra būtinas ir ar jo parametrai yra specifiniai jūsų sistemai. AI išvestyje "kur yra kalibravimas?" ir "ar laiko žymos suderintos?" Būtinai užduokite klausimus.

Silpnas raginimas / stiprus raginimas

WEAK:"Apskaičiuokite kampą pagal IMU duomenis."(Kuris filtras? Ar dreifas apdorojamas? Kaip dt? Neaišku.)STRONG:"Sujunkite pagreičio matuoklio ir giroskopo duomenis iš MPU6050 su integruotu filtru ir įvertinkite žingsnio kampą. Apskaičiuokite dt pagal realią laiko žymą, nemanykite, kad ji yra pastovi. Nustatyti alfa kampą su parametru accculmeter.9eleroult). tane2 Filtruoti kaip įrašą kaip klasę, išlaikyti ankstesnį kampą, pridėti pasirenkamą vidutinį triukšmo filtrą.

Mini dėklas

Robotikos inžinierius Selinas nori papildomo dirbtinio intelekto filtro, kad būtų galima įvertinti dviračio balansavimo roboto kampą. AI suteikia švarų kodą, tačiau robotas lėtai pasvira į vieną pusę. Selinas tikrina dt: kodas daro prielaidą, kad dt yra pastovus 0,01 s, o ciklo laikas skiriasi dėl „Bluetooth“ telemetrijos. Kai dt apskaičiuojamas pagal realią laiko žymą, poslinkis sumažėja, bet visiškai neišnyksta. Tada jis žiūri į akselerometro kalibravimą; Net kai jutiklis nejuda, yra 2° poslinkis. Kai pašalinu kalibravimo poslinkį, robotas atsistoja vertikaliai. Galiausiai jis pastebi, kad transliuodamas telemetriją per MQTT naudoja qos=0 ir padidina jį iki qos=1 kritinio kampo duomenims. AI per kelias minutes pristatė sintezės skeletą; tačiau inžinieriaus patikrinimas užfiksavo tris su sistema susijusias problemas: kintamąjį dt, kalibravimo poslinkį ir QoS.

Dažnos klaidos

  • Darant prielaidą, kad dt yra pastovus, o ciklo laikas skiriasi (susiliejimo dreifai).
  • Jutiklių lydymas jų nekalibruojant (sisteminis poslinkis).
  • Bandoma suderinti skirtingų greičių jutiklius be laiko žymėjimo.
  • Išeinant su AI imties verte, nematuojant Kalmano Q/R kovariacijų nuo tikro triukšmo.
  • Leidžiamas pranešimų praradimas naudojant qos=0 svarbiems IoT duomenims.
  • Neapdorotų triukšmingų duomenų suliejimas be išankstinio filtravimo.

Apibendrinant

  • Fusion naudoja kiekvieną jutiklį dažnio srityje, kur jis yra stiprus, ir kompensuoja jo silpnumą.
  • Komplemento filtras yra paprastas; Nustato giroskopo-akcelerometro balansą su alfa.
  • Kalmano filtras modeliuoja triukšmą tikimybiškai; Q/R ateina iš tikrosios sistemos.
  • MQTT telemetrijoje laiko žymėjimas ir tinkamas QoS yra svarbūs inžineriniai sprendimai.
  • Triukšmas, kalibravimas ir laiko sinchronizavimas lemia sintezės kokybę.
  • dt matuojamas realiuoju laiku; kalibravimas ir QoS tikrinami nepaliekant AI.

Taikymo užduotis

Jei naudojate IMU (tikrus arba imituotus giroskopus + akselerometro duomenis), AI sugeneruotų integruotą filtrą ir įsitikinkite, kad dt skaičiuojamas pagal realią laiko žymą. Tada: (1) išbandykite alfa 0,90, 0,98 ir 1,0 ir stebėkite dreifo ir triukšmo balansą, (2) pridėkite tyčinį fiksuotą poslinkį (kalibravimo klaidą) prie jutiklio ir pažiūrėkite, kaip keičiasi sintezės išvestis, (3) konvertuokite duomenis į MQTT JSON schemą ir pridėkite laiko žymos ir vieneto laukus. Atkreipkite dėmesį, kuri alfa vertė suteikia labiausiai subalansuotą duomenų rezultatą ir kiek kalibravimo poslinkis iškraipo išvestį.