Einheit 4 / 9

Sensorfusion und IoT-Datenintegration

Gewinne:

  • Fähigkeit zum Aufbau einer Fusionslogik (Integrator/Kalman-Filter), die IMU-, Encoder- und Abstandssensordaten mit KI kombiniert
  • Fähigkeit, MQTT-basierte IoT-Datenströme und Telemetrie mithilfe von KI zu konfigurieren und zu interpretieren
  • Möglichkeit zur Erkennung und Korrektur von Sensorrauschen, Kalibrierungs- und Zeitsynchronisationsproblemen in der KI-Ausgabe

Kein Sensor ist perfekt. Das Gyroskop ist kurzfristig sehr genau, driftet jedoch mit der Zeit ab. Der Beschleunigungsmesser ist auf Dauer stabil, verursacht aber durch Vibrationen Geräusche. Der Encoder misst die Position genau, bei Schlupf ist sie jedoch falsch. GPS funktioniert in einem weiten Bereich, ist jedoch niedrigfrequent und verrauscht. Der Mechatroniker muss aus diesen unvollkommenen Sensoren eine einzige, zuverlässige Wahrheit erzeugen; Das ist Sensorfusion. Darüber hinaus bleiben diese Daten in modernen Systemen nicht nur lokal, sondern fließen über IoT-Netzwerke in Cloud- und Kontrollzentren. Künstliche Intelligenz ist ein leistungsstarkes Hilfsmittel sowohl bei der Einrichtung von Fusionsalgorithmen als auch bei der Konfiguration und Interpretation von IoT-Telemetrie. In dieser Einheit behandeln wir den Komplementärfilter, die Kalman-Filterlogik und wie man einen MQTT-basierten IoT-Fluss mit KI einrichtet und Rausch- und Synchronisationsfallen abfängt.

Warum Sensorfusion?

Jeder Sensor verfügt über eine „gute Frequenzzone“. Der Zweck der Fusion besteht darin, jeden Sensor dort zu nutzen, wo er stark ist, und ihn mit dem anderen in dem Bereich zu unterstützen, wo er schwach ist.

Sensor

Stärke

Schwäche

Gyroskop

Kurzfristige Winkelgeschwindigkeit, schnelle Reaktion

Im Laufe der Zeit driften

Beschleunigungsmesser

Langfristige Hangreferenz (Schwerkraft)

Vibration/Geräusch bei Bewegung

Encoder

Hochauflösender Standort

Schlupf-/Spielfehler

GPS

absolute Position

Niedrige Frequenz, Lärm, kein Innenbereich

Wenn man sich auf einen einzigen Sensor verlässt, wird die Schwäche dieses Sensors in das System eingebracht. Fusion beispielsweise kombiniert den schnellen, aber driftenden Winkel des Gyroskops mit der langsamen, aber stetigen Referenz des Beschleunigungsmessers und ergibt so einen Winkel, der sowohl schnell als auch driftfrei ist.

Komplementärer Filter

Die einfachste und gebräuchlichste Fusion ist der Komplementärfilter. Die Idee ist intuitiv: Vertrauen Sie dem Gyroskop bei hoher Frequenz (schnelle Änderung), dem Beschleunigungsmesser bei niedriger Frequenz (langsam, stabil). Zusammenfassung in einer Zeile:

# Komplementärer Filter: Schmerzschätzung (Tonhöhe) # Alpha ~ 0,98: mehr zum Gyroskop, weniger zum Beschleunigungsmesser (Grad/Sekunde) Beschleunigung_ange: vom Beschleunigungsmesser berechneter Winkel (Grad) dt: Abtastperiode (Sekunde) """ gyro_pac = previous + gyro_speed * dt # Gyroskop integrieren Return Alpha * gyro_pace + (1 - Alpha) * Beschleunigungswinkel# Verifizierungslogik: reines Gyroskop (Drifts), wenn Alpha=1, # wenn Alpha=0 reiner Beschleunigungsmesser (verrauscht). Der Zwischenwert gleicht die beiden aus.

Der Koeffizient Alpha bestimmt hier das Gleichgewicht: Liegt er nahe bei 1, verlässt er sich auf das Gyroskop (Risiko einer Drift steigt), liegt er nahe bei 0, verlässt er sich auf den Beschleunigungsmesser (Rauschen nimmt zu). Der typische Wert liegt bei 0,95–0,98. AI schlägt diesen Wert möglicherweise vor, aber das richtige Alpha hängt von der Abtastrate und dem Rauschcharakter Ihres Systems ab; wird experimentell festgelegt.

Tipp: Wenn Sie einen Integralfilter in AI drucken, fragen Sie unbedingt nach, wie dt gemessen wird. Die meisten Fehler entstehen durch die Annahme, dass dt konstant ist, aber in Wirklichkeit variiert die Zykluszeit. Messen Sie dt real mit millis()/timestamp, schreiben Sie keine Konstanten.

Kalman-Filterlogik

Der Komplementärfilter ist einfach, modelliert aber keine Rauschstatistik. Der Kalman-Filter erzeugt (unter bestimmten Annahmen) eine optimale Schätzung, indem er Sensorrauschen und Prozessunsicherheit probabilistisch modelliert. Es funktioniert in zwei Schritten:

  1. Vorhersagen: Mit dem Systemmodell die nächste Situation und ihre Unsicherheit vorhersagen.
  2. Update: Wägen Sie die neue Messung gegen die Messzuverlässigkeit (Kalman-Verstärkung) ab und korrigieren Sie die Schätzung.

Kalman Gain K beantwortet bei jedem Schritt automatisch die Frage „Soll ich der Messung oder dem Modell mehr vertrauen?“. Ist das Messrauschen groß, wird K kleiner (Vertrauen in das Modell), ist die Prozessunsicherheit groß, wird K größer (Vertrauen in die Messung). KI schreibt problemlos einen eindimensionalen Kalman-Filter. Aber es ist Ihre Aufgabe, die Rauschkovarianzen („Q“, „R“) richtig zu wählen, und sie stammen aus dem tatsächlichen Rauschen des Systems.

Achtung: Die von AI angegebenen Werte Q (Prozessrauschen) und R (Messrauschen) sind Beispiele/Platzhalter. Wenn Sie diese nicht aus dem tatsächlichen Messrauschen des Systems (z. B. der bei stationärem Sensor gemessenen Varianz) ermitteln, ist der Filter entweder zu langsam oder zu verrauscht. Vertrauen Sie den von der KI angegebenen Kovarianzen nicht als „wahren Wert“.

IoT-Datenstrom: MQTT und Telemetrie

Die sauberen Daten, die Sie mit der Fusion erzeugen, werden normalerweise über ein IoT-Netzwerk zum Zentrum transportiert. Das in der Branche am häufigsten verwendete Protokoll ist MQTT: leichtes Publish-Subscribe-Modell, geeignet für niedrige Bandbreiten. KI erstellt schnell MQTT-Publisher/Subscriber-Code und JSON-Telemetrieschema.

import json, timeimport paho.mqtt.client as mqttclient = mqtt.Client()client.connect("broker.local", 1883, keepalive=60)def telemetry_broadcast(temperature, Temperature, vibration_rms): message = { "ts": time.time(), # timestamp -- Bedingung für die Synchronisierung "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.publish(“machine/line1/sensor“, json.dumps(message), qos=1)# qos=1: mindestens einmal geliefert. Verwendung von qos=0 (kann verloren gehen) für kritische Daten.

Zwei technische Entscheidungen sind hier wichtig: (1) Zeitstempel (ts) jeder Nachricht – verschiedene Sensoren werden zu unterschiedlichen Zeiten abgetastet, eine Synchronisierung ist nur mit Zeitstempel möglich; (2) QoS-Ebene – kritische Daten verwenden mindestens qos=1 (mindestens einmal zugestellt), qos=0 ermöglicht Nachrichtenverlust.

Rauschen, Kalibrierung und Synchronisation

Egal wie gut die Fusion ist, drei Probleme bei der Eingabe verfälschen das Ergebnis:

  • Rauschen: Wenn rohe Sensordaten ungefiltert in die Fusion eingehen, ist auch die Fusionsausgabe verrauscht. Möglicherweise ist eine Vorfilterung (Median, Tiefpass) erforderlich.
  • Kalibrierung: Offset- und Skalenfehler (z. B. der Nullpunkt des Beschleunigungsmessers ist verschoben) führen systematisch in die Irre der Fusion. Sensoren müssen vor der Verwendung kalibriert werden.
  • Zeitsynchronisation: Zeitstempel und Interpolation sind erforderlich, um Sensoren auszurichten, die mit unterschiedlichen Raten abgetastet werden (z. B. 10-Hz-GPS mit 1-kHz-IMU).

AI kann diese Schritte zum Code hinzufügen, aber ob jeder erforderlich ist und welche Parameter er hat, ist spezifisch für Ihr System. In der KI-Ausgabe „Wo ist die Kalibrierung?“ und „Sind die Zeitstempel ausgerichtet?“ Stellen Sie unbedingt Fragen.

Schwache Eingabeaufforderung / Starke Eingabeaufforderung

SCHWACH: „Winkel aus IMU-Daten berechnen.“ (Welcher Filter? Wird Drift behandelt? Wie dt? Unklar.) STARK: „Kombinieren Sie Beschleunigungsmesser- und Gyroskopdaten von MPU6050 mit integriertem Filter und schätzen Sie den Nickwinkel. Berechnen Sie dt aus dem tatsächlichen Zeitstempel, gehen Sie nicht von einer Konstanten aus. Legen Sie Alpha als Parameter fest (Standard 0,98). Berechnen Sie den Beschleunigungsmesserwinkel mit tane2. Filtern Sie als Schreibklasse, behalten Sie die vorherige bei Winkel, optionalen Median-Vorfilter für Rauschen hinzufügen.“

Mini-Koffer

Der Robotikingenieur Selin wünscht sich einen ergänzenden KI-Filter zur Winkelschätzung an einem zweirädrigen Auswuchtroboter. Die KI gibt einen sauberen Code, doch der Roboter neigt sich langsam zur Seite. Selin prüft dt: Der Code geht davon aus, dass dt konstant 0,01 s beträgt, wohingegen die Zykluszeit aufgrund der Bluetooth-Telemetrie variiert. Wenn dt aus dem echten Zeitstempel berechnet wird, nimmt die Drift ab, verschwindet aber nicht vollständig. Dann schaut er sich die Kalibrierung des Beschleunigungsmessers an; Selbst wenn der Sensor stationär ist, gibt es einen Versatz von 2°. Wenn ich den Kalibrierungsoffset entferne, steht der Roboter aufrecht. Schließlich stellt es fest, dass es bei der Übertragung von Telemetriedaten über MQTT qos=0 verwendet und es für kritische Winkeldaten auf qos=1 erhöht. Die KI lieferte innerhalb von Minuten ein Fusionsskelett. Bei der Überprüfung durch den Techniker wurden jedoch drei systemspezifische Probleme festgestellt: variabler dt, Kalibrierungsoffset und QoS.

Häufige Fehler

  • Vorausgesetzt, dt ist konstant, während die Zykluszeit variiert (Fusionsdrift).
  • Sensoren fusionieren, ohne sie zu kalibrieren (systematischer Offset).
  • Ich versuche, Sensoren unterschiedlicher Geschwindigkeit ohne Zeitstempel auszurichten.
  • Bleiben wir beim Beispielwert der KI, ohne die Kalman-Q/R-Kovarianzen vom realen Rauschen zu messen.
  • Zulassen von Nachrichtenverlust durch Verwendung von qos=0 für kritische IoT-Daten.
  • Übergabe verrauschter Rohdaten an die Fusion ohne Vorfilterung.

Zusammenfassend

  • Fusion nutzt jeden Sensor in dem Frequenzbereich, in dem er stark ist, und gleicht seine Schwächen aus.
  • Der Komplementfilter ist einfach; Stellt das Gyroskop-Beschleunigungsmesser-Gleichgewicht mit Alpha her.
  • Kalman-Filter modellieren Rauschen probabilistisch; Q/R stammt aus dem realen System.
  • Bei der MQTT-Telemetrie sind Zeitstempel und angemessene QoS wichtige technische Entscheidungen.
  • Rauschen, Kalibrierung und Zeitsynchronisation bestimmen die Qualität der Fusion.
  • dt wird in Echtzeit gemessen; Kalibrierung und QoS werden überprüft, ohne dass dies der KI überlassen werden muss.

Anwendungsaufgabe

Lassen Sie für eine IMU (echte oder simulierte Kreisel- und Beschleunigungsmesserdaten) die KI den Integralfilter generieren und stellen Sie sicher, dass der dt aus dem echten Zeitstempel berechnet wird. Dann: (1) Probieren Sie Alpha für 0,90, 0,98 und 1,0 aus und beobachten Sie Drift und Rauschgleichgewicht, (2) fügen Sie dem Sensor einen absichtlichen festen Offset (Kalibrierungsfehler) hinzu und sehen Sie, wie die Fusionsausgabe driftet, (3) konvertieren Sie die Daten in das MQTT-JSON-Schema und fügen Sie Zeitstempel- und Einheitenfelder hinzu. Beachten Sie, welcher Alpha-Wert das ausgewogenste Ergebnis für Ihre Daten liefert und wie stark der Kalibrierungsoffset die Ausgabe verzerrt.