Jednostka 4 / 9

Fuzja czujników i integracja danych IoT

Zyski:

  • Możliwość skonstruowania logiki fuzyjnej (integrator/filtr Kalmana), która łączy dane IMU, enkodera i czujnika odległości z AI
  • Możliwość konfigurowania i interpretowania strumieni danych IoT i telemetrii opartych na protokole MQTT za pomocą sztucznej inteligencji
  • Możliwość wykrywania i korygowania szumów czujnika, problemów z kalibracją i synchronizacją czasu na wyjściu AI

Żaden czujnik nie jest idealny. Żyroskop jest bardzo dokładny na krótką metę, ale z czasem zmienia się. Akcelerometr jest stabilny w dłuższej perspektywie, ale hałasuje w wyniku wibracji. Enkoder mierzy pozycję precyzyjnie, jednak błędnie mierzy pozycję w przypadku poślizgu. GPS działa na dużym obszarze, ale ma niską częstotliwość i jest głośny. Inżynier mechatronik musi na podstawie tych niedoskonałych czujników uzyskać jedną, wiarygodną prawdę; To jest fuzja czujników. Co więcej, w nowoczesnych systemach dane te nie tylko pozostają lokalne, ale przepływają do chmur i centrów kontroli za pośrednictwem sieci IoT. Sztuczna inteligencja stanowi potężną pomoc zarówno w konfigurowaniu algorytmów fuzyjnych, jak i konfigurowaniu i interpretowaniu telemetrii IoT. W tej części omawiamy filtr komplementarny, logikę filtra Kalmana oraz konfigurowanie przepływu IoT opartego na MQTT za pomocą sztucznej inteligencji oraz wychwytywanie szumów i pułapek synchronizacji.

Dlaczego Sensor Fusion?

Każdy czujnik ma „strefę dobrej częstotliwości”. Celem fuzji jest wykorzystanie każdego czujnika w obszarze, w którym jest mocny, i wsparcie go drugim w obszarze, w którym jest słaby.

czujnik

mocny punkt

słabość

żyroskop

Krótkoterminowa prędkość kątowa, szybka reakcja

Dryf w czasie

akcelerometr

Długoterminowe odniesienie do nachylenia (grawitacja)

Wibracje/hałas podczas ruchu

koder

Lokalizacja w wysokiej rozdzielczości

Błąd poślizgu/luzu

GPS

stanowisko absolutne

Niska częstotliwość, hałas, brak pomieszczeń

Poleganie na pojedynczym czujniku powoduje wprowadzenie słabości tego czujnika do systemu. Na przykład Fusion łączy szybki, ale zmienny kąt żyroskopu z powolnym, ale stałym odniesieniem akcelerometru, uzyskując kąt, który jest zarówno szybki, jak i wolny od dryftu.

Filtr uzupełniający

Najprostszym i najczęstszym połączeniem jest filtr uzupełniający. Pomysł jest intuicyjny: zaufaj żyroskopowi przy wysokiej częstotliwości (szybka zmiana), akcelerometrowi przy niskiej częstotliwości (wolna, stabilna). Podsumowanie w jednej linijce:

# Filtr uzupełniający: szacowanie bólu (wysokość) # alfa ~ 0,98: więcej dla żyroskopu, mniej dla akcelerometru (stopnie/s) przyspieszenie_ange: kąt obliczony z akcelerometru (stopnie) dt: okres próbkowania (s) """ gyro_pac = poprzedni + prędkość_żyroskopu * dt # integruj powrót żyroskopu alfa * tempo_żyroskopu + (1 - alfa) * kąt_przyspieszenia# Logika weryfikacji: czysty żyroskop (dryfty), jeśli alfa=1, #, jeśli alfa=0 czysty akcelerometr (zakłócony). Wartość pośrednia równoważy oba.

Współczynnik alfa wyznacza tutaj równowagę: jeśli jest bliski 1, opiera się na żyroskopie (wzrasta ryzyko dryftu), jeśli jest bliski 0, opiera się na akcelerometrze (wzrasta szum). Typowa wartość to 0,95–0,98. Sztuczna inteligencja może sugerować tę wartość, ale prawidłowa wartość alfa zależy od częstotliwości próbkowania systemu i charakteru szumu; ustala się eksperymentalnie.

Wskazówka: Drukując filtr całkujący do AI, pamiętaj, aby zapytać, jak mierzony jest dt. Większość błędów wynika z założenia, że ​​dt jest stałe, ale w rzeczywistości czas cyklu jest różny. Zmierz dt real za pomocą millis()/timestamp, nie zapisuj stałych.

Logika filtra Kalmana

Filtr uzupełniający jest prosty, ale nie modeluje statystyk szumu. Filtr Kalmana generuje optymalne (przy pewnych założeniach) oszacowanie poprzez probabilistyczne modelowanie szumu czujnika i niepewności procesu. Działa to w dwóch krokach:

  1. Przewiduj: Przewiduj następną sytuację i jej niepewność za pomocą modelu systemu.
  2. Aktualizacja: Porównaj nowy pomiar z wiarygodnością pomiaru (wzmocnienie Kalmana) i popraw oszacowanie.

Wzmocnienie Kalmana K automatycznie na każdym kroku odpowiada na pytanie „czy bardziej ufać pomiarowi czy modelowi”. Jeśli szum pomiarowy jest duży, K zmniejsza się (ufność modelu), jeśli niepewność procesu jest duża, K rośnie (ufność pomiaru). AI z łatwością pisze jednowymiarowy filtr Kalmana; ale Twoim zadaniem jest prawidłowe wybranie kowariancji szumu („Q”, „R”) i pochodzą one z rzeczywistego szumu systemu.

Uwaga: Wartości Q (szum procesowy) i R (szum pomiarowy) podane przez AI są próbkami/symbolami zastępczymi. Jeśli nie określisz ich na podstawie rzeczywistego szumu pomiarowego systemu (np. wariancji zmierzonej, gdy czujnik jest nieruchomy), filtr będzie albo zbyt wolny, albo zbyt zaszumiony. Nie ufaj kowariancjom podanym przez sztuczną inteligencję jako „prawdziwej wartości”.

Strumień danych IoT: MQTT i telemetria

Czyste dane generowane za pomocą technologii Fusion są zwykle transportowane do centrum za pośrednictwem sieci IoT. Najpopularniejszym protokołem w branży jest MQTT: lekki model typu publikacja-subskrypcja, odpowiedni dla małej przepustowości. Sztuczna inteligencja szybko ustala kod wydawcy/subskrybenta MQTT i schemat telemetryczny JSON.

import json, timeimport paho.mqtt.client as mqttclient = mqtt.Client()client.connect("broker.local", 1883, keepalive=60)def telemetry_broadcast(temperatura, temperatura, wibracje_rms): message = { "ts": time.time(), # znacznik czasu -- warunek synchronizacji "pain_deg": round(ból, 2), "temperatura_c": round(temperatura, 1), "vibration_rms": round(temperatura_rms, 3), "unit": {"pain": "deg", "temperature": "C", "vibration": "mm/s"} } client.publish("maszyna/linia1/czujnik", json.dumps(message), qos=1)# qos=1: dostarczono co najmniej raz. Używanie qos=0 (może zostać utracone) w przypadku krytycznych danych.

Ważne są tutaj dwie decyzje inżynieryjne: (1) znacznik czasu (ts) każdej wiadomości — różne czujniki są próbkowane w różnym czasie, synchronizacja jest możliwa tylko przy użyciu znacznika czasu; (2) Poziom QoS — dane krytyczne wykorzystują co najmniej qos=1 (dostarczone co najmniej raz), qos=0 umożliwia utratę wiadomości.

Szum, kalibracja i synchronizacja

Niezależnie od tego, jak dobra jest fuzja, trzy problemy z danymi wejściowymi zniekształcają wynik:

  • Szum: Jeśli surowe dane z czujnika zostaną poddane fuzji bez filtrowania, sygnał wyjściowy fuzji również będzie zaszumiony. Może być wymagane wstępne filtrowanie (mediana, dolnoprzepustowy).
  • Kalibracja: Błędy przesunięcia i skali (np. przesunięcie punktu zerowego akcelerometru) systematycznie wprowadzają w błąd zgrzewanie. Czujniki należy skalibrować przed użyciem.
  • Synchronizacja czasu: znacznik czasu i interpolacja są wymagane w celu dostosowania czujników próbkowanych z różnymi częstotliwościami (np. GPS 10 Hz z IMU 1 kHz).

Sztuczna inteligencja może dodać te kroki do kodu, ale to, czy każdy z nich jest wymagany i jego parametry, są specyficzne dla Twojego systemu. Na wyjściu AI „gdzie jest kalibracja?” i „czy znaczniki czasu są zgodne?” Pamiętaj, aby zadawać pytania.

Słaba podpowiedź/silna podpowiedź

SŁABY: „Oblicz kąt na podstawie danych IMU.” (Który filtr? Obsługiwany jest dryf? Jak dt? Niejasne.) SILNY: „Połącz dane akcelerometru i żyroskopu z MPU6050 z filtrem całkującym i oszacuj kąt nachylenia. Oblicz dt z rzeczywistego znacznika czasu, nie zakładaj stałej. Ustaw alfa jako parametr (domyślnie 0,98). Oblicz kąt akcelerometru za pomocą tane2. Filtruj jako klasę zapisu jako, zachowaj poprzedni kąt, dodaj opcjonalny medianowy filtr wstępny szumu.

Mini etui

Inżynier robotyki Selin potrzebuje filtra uzupełniającego od AI do szacowania kąta w dwukołowym robocie balansującym. Sztuczna inteligencja podaje czysty kod, ale robot powoli przechyla się na bok. Selin sprawdza dt: w kodzie zakłada się, że dt jest stałe i wynosi 0,01 s, podczas gdy czas cyklu zmienia się ze względu na telemetrię Bluetooth. Kiedy dt jest obliczane na podstawie rzeczywistego znacznika czasu, dryft zmniejsza się, ale nie znika całkowicie. Następnie patrzy na kalibrację akcelerometru; Nawet gdy czujnik jest nieruchomy, występuje przesunięcie o 2°. Kiedy usunę przesunięcie kalibracji, robot stoi pionowo. Na koniec zauważa, że ​​podczas transmisji danych telemetrycznych przez MQTT używa qos=0 i zwiększa ją do qos=1 dla danych dotyczących kąta krytycznego. Sztuczna inteligencja dostarczyła szkielet fuzyjny w ciągu kilku minut; ale weryfikacja inżyniera wychwyciła trzy problemy specyficzne dla systemu: zmienną dt, przesunięcie kalibracji i QoS.

Typowe błędy

  • Zakładając, że dt jest stały, natomiast czas cyklu jest zmienny (dryfty topnienia).
  • Łączenie czujników bez ich kalibracji (przesunięcie systematyczne).
  • Próba wyrównania czujników o różnych prędkościach bez znacznika czasu.
  • Pozostawienie z przykładową wartością AI bez pomiaru kowariancji Kalmana Q/R z rzeczywistego szumu.
  • Zezwalanie na utratę wiadomości przy użyciu qos=0 w przypadku krytycznych danych IoT.
  • Przekazywanie surowych, zaszumionych danych do fuzji bez wstępnego filtrowania.

Podsumowując

  • Fusion wykorzystuje każdy czujnik w obszarze częstotliwości, w którym jest mocny i kompensuje jego słabości.
  • Filtr dopełniacza jest prosty; Ustala równowagę żyroskopowo-akcelerometru z alfa.
  • Filtr Kalmana modeluje szum probabilistycznie; Q/R pochodzi z prawdziwego systemu.
  • W telemetrii MQTT znacznik czasu i odpowiednia jakość usług to krytyczne decyzje inżynieryjne.
  • Hałas, kalibracja i synchronizacja czasu decydują o jakości zgrzewania.
  • dt mierzony jest w czasie rzeczywistym; kalibracja i QoS są weryfikowane bez pozostawiania tego sztucznej inteligencji.

Zadanie aplikacji

W przypadku IMU (rzeczywiste lub symulowane dane żyroskopu + akcelerometr) AI wygeneruje filtr całkujący i upewni się, że dt jest obliczany na podstawie rzeczywistego znacznika czasu. Następnie: (1) spróbuj alfa dla 0,90, 0,98 i 1,0 i obserwuj balans dryfu i szumu, (2) dodaj celowe stałe przesunięcie (błąd kalibracji) do czujnika i zobacz, jak dryfuje sygnał wyjściowy fuzji, (3) przekonwertuj dane do schematu MQTT JSON i dodaj znacznik czasu i pola jednostek. Zwróć uwagę, która wartość alfa daje najbardziej zrównoważony wynik dla danych i jak bardzo przesunięcie kalibracji zniekształca sygnał wyjściowy.