Vienība 4 / 9

Sensoru saplūšana un IoT datu integrācija

Ieguvumi:

  • Spēja izveidot saplūšanas loģiku (integratoru/Kalmana filtru), kas apvieno IMU, kodētāja un attāluma sensora datus ar AI
  • Spēja konfigurēt un interpretēt uz MQTT balstītas IoT datu straumes un telemetriju ar AI palīdzību
  • Spēja atklāt un labot sensora trokšņus, kalibrēšanas un laika sinhronizācijas problēmas mākslīgā intelekta izvadē

Neviens sensors nav ideāls. Žiroskops ir ļoti precīzs īstermiņā, bet laika gaitā dreifē. Akselerometrs ir stabils ilgtermiņā, bet rada troksni no vibrācijas. Kodētājs precīzi mēra pozīciju, bet tas ir nepareizi, ja ir slīdēšana. GPS darbojas plašā teritorijā, bet ir zemas frekvences un trokšņains. Mehatronikas inženierim no šiem nepilnīgajiem sensoriem ir jāizveido viena, uzticama patiesība; Šī ir sensoru saplūšana. Turklāt mūsdienu sistēmās šie dati ne tikai paliek lokāli, bet caur IoT tīkliem plūst uz mākoņiem un vadības centriem. Mākslīgais intelekts ir spēcīgs palīgs gan saplūšanas algoritmu iestatīšanā, gan IoT telemetrijas konfigurēšanā un interpretācijā. Šajā nodaļā mēs aplūkojam papildu filtru, Kalmana filtra loģiku un to, kā iestatīt uz MQTT balstītu IoT plūsmu ar AI un uztvert trokšņa un sinhronizācijas slazdus.

Kāpēc Sensor Fusion?

Katram sensoram ir "labas frekvences zona". Kodolsintēzes mērķis ir izmantot katru sensoru zonā, kur tas ir spēcīgs, un atbalstīt to ar otru zonā, kur tas ir vājš.

sensors

stiprā puse

vājums

žiroskops

Īstermiņa leņķiskais ātrums, ātra reakcija

Drift laika gaitā

akselerometrs

Ilgtermiņa slīpuma atsauce (smaguma spēks)

Vibrācija/trokšņa kustībā

kodētājs

Augstas izšķirtspējas atrašanās vieta

Slīdēšanas/atgriezes kļūda

GPS

absolūtā pozīcija

Zema frekvence, troksnis, nav iekštelpu

Paļaušanās uz vienu sensoru ievieš šī sensora vājumu sistēmā. Piemēram, Fusion apvieno žiroskopa ātru, bet dreifējošu leņķi ar lēnu, bet vienmērīgu akselerometra atskaiti, radot leņķi, kas ir gan ātrs, gan bez novirzes.

Papildu filtrs

Vienkāršākā un visizplatītākā saplūšana ir papildu filtrs. Ideja ir intuitīva: uzticieties žiroskopam augstā frekvencē (ātra maiņa), akselerometram zemā frekvencē (lēni, stabili). Vienas rindiņas kopsavilkums:

# Papildu filtrs: sāpju novērtējums (soli) # alfa ~ 0,98 : vairāk uz žiroskopu, mazāk pret akselerometru (grādi/s) acceleration_ange : leņķis, kas aprēķināts no akselerometra (grādi) dt : paraugu ņemšanas periods (s) """ gyrod_pact # gyroscope # atgriešanās * gyroscope = iepriekšējā + giroskops gyro_pace + (1 - alfa) * acceleration_angle# Pārbaudes loģika: tīrs žiroskops (dreifē), ja alfa=1, # ja alfa=0 tīrs akselerometrs (trokšņains).

Koeficients alfa šeit nosaka līdzsvaru: ja tas ir tuvu 1, tas paļaujas uz žiroskopu (palielinās dreifēšanas risks), ja tas ir tuvu 0, tas paļaujas uz akselerometru (troksnis palielinās). Tipiskā vērtība ir 0,95–0,98. AI var ieteikt šo vērtību, taču pareizā alfa vērtība ir atkarīga no sistēmas izlases ātruma un trokšņa rakstura; ir iestatīts eksperimentāli.

Padoms. Drukājot AI integrēto filtru, noteikti jautājiet, kā tiek mērīts dt. Lielākā daļa kļūdu rodas, pieņemot, ka dt ir nemainīgs, bet patiesībā cikla laiks mainās. Izmēriet dt real ar millis()/laikspiedolu, nerakstiet konstantes.

Kalmana filtra loģika

Papildu filtrs ir vienkāršs, taču nemodelē trokšņa statistiku. Kalmana filtrs rada optimālu (ar noteiktiem pieņēmumiem) novērtējumu, iespējams, modelējot sensora troksni un procesa nenoteiktību. Tas darbojas divos posmos:

  1. Paredzēt: prognozējiet nākamo situāciju un tās nenoteiktību, izmantojot sistēmas modeli.
  2. Atjauninājums: nosveriet jauno mērījumu pret mērījumu ticamību (Kalmana pastiprinājumu) un labojiet novērtējumu.

Kalman gain K katrā solī automātiski atbild uz jautājumu "vai man vairāk uzticēties mērījumam vai modelim". Ja mērījumu troksnis ir liels, K kļūst mazāks (pārliecība modelī), ja procesa nenoteiktība ir liela, K kļūst lielāka (pārliecība mērījumā). AI viegli raksta viendimensijas Kalmana filtru; bet jūsu uzdevums ir pareizi izvēlēties trokšņu kovariācijas (`Q`, `R`), un tās nāk no sistēmas faktiskā trokšņa.

Uzmanību: Q (procesa troksnis) un R (mērīšanas troksnis) vērtības, ko sniedz AI, ir paraugs/vietturis. Ja jūs tos nenosakāt no sistēmas faktiskā mērījumu trokšņa (piemēram, dispersijas, kas izmērīta, sensoram nekustīgi), filtrs būs pārāk lēns vai pārāk trokšņains. Neuzticieties kovariācijām, ko AI sniedz kā "patieso vērtību".

IoT datu straume: MQTT un telemetrija

Tīrie dati, ko iegūstat, izmantojot kodolsintēzi, parasti tiek transportēti uz centru, izmantojot IoT tīklu. Nozarē visizplatītākais protokols ir MQTT: viegls, publicēšanas un abonēšanas modelis, piemērots mazam joslas platumam. AI ātri izveido MQTT izdevēja/abonenta kodu un JSON telemetrijas shēmu.

importēt json, timeimport paho.mqtt.client kā mqttclient = mqtt.Client()client.connect("broker.local", 1883, keepalive=60)def telemetry_broadcast(temperatūra, temperatūra, vibrācijas_rms): ziņojums = { "ts": # timechron.mp. "pain_deg": round(pain, 2), "temperatūra_c": round(temperatūra, 1), "vibration_rms": round(temperatūras_rms, 3), "unit": {"pain": "deg", "temperature": "C", "vibration": "mm/s"} } client,/publish ("sensssore)",/ qos=1)# qos=1: piegādāts vismaz vienu reizi. Izmantojot qos=0 (var tikt zaudēts) kritiskiem datiem.

Šeit ir svarīgi divi inženiertehniskie lēmumi: (1) laikspiedols (ts) katrs ziņojums — dažādi sensori tiek ņemti dažādos laikos, sinhronizācija iespējama tikai ar laika zīmogu; (2) QoS līmenis — kritiskie dati izmanto vismaz qos=1 (piegādāts vismaz vienu reizi), qos=0 pieļauj ziņojumu zudumu.

Troksnis, kalibrēšana un sinhronizācija

Neatkarīgi no tā, cik laba ir saplūšana, trīs problēmas ar ievadi izkropļo rezultātu:

  • Troksnis: ja neapstrādāti sensora dati tiek sapludināti bez filtrēšanas, arī kodolsintēzes izvade būs trokšņaina. Var būt nepieciešama iepriekšēja filtrēšana (vidējā, zemā caurlaidība).
  • Kalibrēšana: nobīdes un mēroga kļūdas (piemēram, akselerometra nulles punkts ir nobīdīts) sistemātiski maldina saplūšanu. Pirms lietošanas sensori ir jākalibrē.
  • Laika sinhronizācija: lai saskaņotu sensorus, kas atlasīti dažādos ātrumos (piemēram, 10 Hz GPS ar 1 kHz IMU), ir nepieciešama laika zīmogs un interpolācija.

AI var pievienot šīs darbības kodam, taču tas, vai katra ir nepieciešama, un to parametri ir specifiski jūsu sistēmai. AI izvadē "kur ir kalibrēšana?" un "vai laikspiedoli ir saskaņoti?" Noteikti uzdodiet jautājumus.

Vāja uzvedne / spēcīga uzvedne

VĀJS:"Aprēķināt leņķi no IMU datiem."(Kurš filtrs? Vai tiek apstrādāts novirzes? Kā dt? Neskaidrs.)STRONG:"Apvienojiet akselerometra un žiroskopa datus no MPU6050 ar integrēto filtru un aprēķiniet leņķa leņķi. Aprēķiniet dt no reālā laika zīmoga, nepieņemiet konstantu. Iestatiet alfa leņķi 0 kā parametru (default) ar accculatemeter.9. tane2 Filtrējiet kā ierakstu kā klasi, saglabājiet iepriekšējo leņķi, pievienojiet papildu vidējo priekšfiltru trokšņiem.

Mini futrālis

Robotikas inženieris Selins vēlas papildu filtru no AI, lai noteiktu leņķi divriteņu balansēšanas robotā. AI dod tīru kodu, bet robots lēnām noliecas uz vienu pusi. Selins pārbauda dt: kods pieņem, ka dt ir nemainīgs 0,01 s, savukārt cikla laiks mainās Bluetooth telemetrijas dēļ. Kad dt tiek aprēķināts no reālā laikspiedola, novirze samazinās, bet nepazūd pilnībā. Tad viņš skatās uz akselerometra kalibrēšanu; Pat tad, kad sensors ir nekustīgs, pastāv 2° nobīde. Kad es noņemu kalibrēšanas nobīdi, robots stāv vertikāli. Visbeidzot, tas pamana, ka tas izmanto qos=0, pārraidot telemetriju, izmantojot MQTT, un palielina to līdz qos=1 kritiskā leņķa datiem. AI piegādāja kodolsintēzes skeletu minūtēs; taču inženiera pārbaudē tika konstatētas trīs ar sistēmu saistītas problēmas: mainīgais dt, kalibrēšanas nobīde un QoS.

Biežākās kļūdas

  • Pieņemot, ka dt ir nemainīgs, turpretim cikla laiks mainās (saplūšanas novirzes).
  • Sensoru sakausēšana bez to kalibrēšanas (sistemātiska nobīde).
  • Mēģina saskaņot dažādu ātrumu sensorus bez laika zīmogošanas.
  • Atstājot ar AI izlases vērtību, nemērot Kalmana Q/R kovariācijas no reālā trokšņa.
  • Ziņojumu zaudēšanas atļaušana, izmantojot qos=0 kritiskajiem IoT datiem.
  • Neapstrādātu trokšņainu datu piešķiršana saplūšanai bez iepriekšējas filtrēšanas.

Rezumējot

  • Fusion izmanto katru sensoru frekvences reģionā, kur tas ir spēcīgs, un kompensē tā vājumu.
  • Komplementa filtrs ir vienkāršs; Izveido žiroskopa-akselerometra līdzsvaru ar alfa.
  • Kalmana filtrs modelē troksni varbūtiski; Q/R nāk no reālās sistēmas.
  • MQTT telemetrijā laika zīmogs un atbilstošs QoS ir kritiski inženiertehniskie lēmumi.
  • Troksnis, kalibrēšana un laika sinhronizācija nosaka saplūšanas kvalitāti.
  • dt mēra no reālā laika; kalibrēšana un QoS tiek pārbaudītas, neatstājot to AI ziņā.

Lietojumprogrammas uzdevums

IMU (reāli vai simulēti žiroskopa + akselerometra dati) AI ģenerē integrēto filtru un pārliecinieties, vai dt tiek aprēķināts no reālā laikspiedola. Pēc tam: (1) izmēģiniet alfa vērtību 0,90, 0,98 un 1,0 un novērojiet novirzes un trokšņu līdzsvaru, (2) pievienojiet sensoram tīšu fiksētu nobīdi (kalibrēšanas kļūdu) un skatiet, kā notiek saplūšanas izvades novirze, (3) konvertējiet datus par MQTT JSON shēmu un pievienojiet laikspiedolu un vienību laukus. Ņemiet vērā, kura alfa vērtība nodrošina līdzsvarotāko rezultātu jūsu datiem un cik daudz kalibrēšanas nobīde izkropļo izvadi.