Unité 4 / 9

Fusion de capteurs et intégration de données IoT

Gains :

  • Capacité à construire une logique de fusion (intégrateur/filtre de Kalman) qui combine les données de l'IMU, de l'encodeur et du capteur de distance avec l'IA
  • Capacité à configurer et à interpréter les flux de données et la télémétrie IoT basés sur MQTT à l'aide de l'IA
  • Capacité à détecter et à corriger les problèmes de bruit du capteur, d'étalonnage et de synchronisation temporelle dans la sortie AI

Aucun capteur n'est parfait. Le gyroscope est très précis à court terme, mais dérive avec le temps. L'accéléromètre est stable à long terme mais génère du bruit dû aux vibrations. L'encodeur mesure la position avec précision, mais il se trompe en cas de glissement. Le GPS fonctionne sur une vaste zone mais est basse fréquence et bruyant. L’ingénieur mécatronique doit produire une vérité unique et fiable à partir de ces capteurs imparfaits ; C'est la fusion de capteurs. De plus, dans les systèmes modernes, ces données ne restent pas seulement locales, mais circulent vers le cloud et les centres de contrôle via les réseaux IoT. L’intelligence artificielle est une aide puissante à la fois pour la mise en place d’algorithmes de fusion et pour la configuration et l’interprétation de la télémétrie IoT. Dans cette unité, nous abordons le filtre complémentaire, la logique du filtre de Kalman et comment configurer un flux IoT basé sur MQTT avec l'IA et capturer les pièges de bruit et de synchronisation.

Pourquoi Sensor Fusion ?

Chaque capteur possède une « bonne zone de fréquence ». Le but de la fusion est d'utiliser chaque capteur dans la zone où il est fort et de l'appuyer avec l'autre dans la zone où il est faible.

capteur

point fort

faiblesse

gyroscope

Vitesse angulaire à court terme, réponse rapide

Dérive au fil du temps

accéléromètre

Référence de pente à long terme (gravité)

Vibration/bruyant lors du mouvement

encodeur

Localisation haute résolution

Erreur de glissement/jeu

GPS

position absolue

Basse fréquence, bruit, pas d'intérieur

S'appuyer sur un seul capteur introduit la faiblesse de ce capteur dans le système. Fusion, par exemple, combine l'angle rapide mais dérivé du gyroscope avec la référence lente mais constante de l'accéléromètre, produisant un angle à la fois rapide et sans dérive.

Filtre complémentaire

La fusion la plus simple et la plus courante est le filtre complémentaire. L'idée est intuitive : faire confiance au gyroscope à haute fréquence (changement rapide), à ​​l'accéléromètre à basse fréquence (lent, stable). Résumé en une ligne :

# Filtre complémentaire : estimation de la douleur (pitch) # alpha ~ 0.98 : plus au gyroscope, moins à l'accéléromètre (degrés/sec) accélération_ange : angle calculé à partir de l'accéléromètre (degrés) dt : période d'échantillonnage (sec) """ gyro_pac = précédent + gyro_speed * dt # intégrer le retour du gyroscope alpha * gyro_pace + (1 - alpha) * accélération_angle# Logique de vérification : gyroscope pur (dérives) si alpha=1, # si alpha=0 accéléromètre pur (bruyant) La valeur intermédiaire équilibre les deux.

Le coefficient alpha détermine ici l'équilibre : s'il est proche de 1, il s'appuie sur le gyroscope (le risque de dérive augmente), s'il est proche de 0, il s'appuie sur l'accéléromètre (le bruit augmente). La valeur typique est de 0,95 à 0,98. L'IA peut suggérer cette valeur, mais l'alpha correct dépend de la fréquence d'échantillonnage et du caractère du bruit de votre système ; est fixé expérimentalement.

Astuce : lors de l'impression d'un filtre intégré sur AI, assurez-vous de demander comment dt est mesuré. La plupart des erreurs proviennent du fait de supposer que dt est constant mais en réalité le temps de cycle varie. Mesurez dt real avec millis()/timestamp, n'écrivez pas de constantes.

Logique du filtre de Kalman

Le filtre complémentaire est simple mais ne modélise pas les statistiques de bruit. Le filtre de Kalman produit une estimation optimale (sous certaines hypothèses) en modélisant de manière probabiliste le bruit du capteur et l'incertitude du processus. Cela fonctionne en deux étapes :

  1. Prédire : prédisez la situation suivante et son incertitude avec le modèle du système.
  2. Mise à jour : comparez la nouvelle mesure à la fiabilité de la mesure (gain de Kalman) et corrigez l'estimation.

Le gain de Kalman K répond automatiquement à la question « dois-je faire davantage confiance à la mesure ou au modèle » à chaque étape. Si le bruit de mesure est important, K devient plus petit (confiance dans le modèle), si l'incertitude du processus est grande, K devient plus grand (confiance dans la mesure). L'IA écrit facilement un filtre de Kalman unidimensionnel ; mais c'est votre travail de choisir correctement les covariances du bruit (« Q », « R ») et elles proviennent du bruit réel du système.

Attention : les valeurs Q (bruit de processus) et R (bruit de mesure) fournies par l'IA sont des échantillons/espaces réservés. Si vous ne les déterminez pas à partir du bruit de mesure réel du système (par exemple la variance mesurée lorsque le capteur est à l'arrêt), le filtre sera soit trop lent, soit trop bruyant. Ne vous fiez pas aux covariances données par l'IA comme « vraie valeur ».

Flux de données IoT : MQTT et télémétrie

Les données propres que vous produisez grâce à la fusion sont généralement transportées vers le centre via un réseau IoT. Le protocole le plus courant dans l'industrie est MQTT : un modèle léger de publication-abonnement, adapté aux faibles bandes passantes. L'IA établit rapidement le code éditeur/abonné MQTT et le schéma de télémétrie JSON.

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 -- condition de synchronisation "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 : livré au moins une fois. Utilisation de qos=0 (peut être perdu) sur les données critiques.

Deux décisions techniques sont importantes ici : (1) l'horodatage (ts) de chaque message : différents capteurs sont échantillonnés à des moments différents, la synchronisation n'est possible qu'avec l'horodatage ; (2) Niveau de QoS : les données critiques utilisent au moins qos=1 (livrées au moins une fois), qos=0 permet la perte de messages.

Bruit, calibrage et synchronisation

Quelle que soit la qualité de la fusion, trois problèmes d'entrée faussent le résultat :

  • Bruit : si les données brutes du capteur sont fusionnées sans être filtrées, la sortie de fusion sera également bruyante. Un pré-filtrage (médiane, passe-bas) peut être nécessaire.
  • Calibrage : les erreurs de décalage et d'échelle (par exemple, le point zéro de l'accéléromètre est décalé) induisent systématiquement la fusion en erreur. Les capteurs doivent être calibrés avant utilisation.
  • Synchronisation temporelle : l'horodatage et l'interpolation sont nécessaires pour aligner les capteurs échantillonnés à différentes fréquences (par exemple, GPS 10 Hz avec IMU 1 kHz).

L'IA peut ajouter ces étapes au code, mais si chacune est requise et si ses paramètres sont spécifiques à votre système. Dans la sortie AI "où est l'étalonnage ?" et "les horodatages sont-ils alignés ?" Assurez-vous de poser des questions.

Invite faible/Invite forte

FAIBLE : "Calculez l'angle à partir des données IMU." ajoutez un préfiltre médian en option pour le bruit.

Mini-étui

L'ingénieur en robotique Selin souhaite un filtre complémentaire issu de l'IA pour l'estimation de l'angle sur un robot d'équilibrage à deux roues. L'IA donne un code clair, mais le robot se penche lentement sur le côté. Selin vérifie dt : le code suppose que dt est constant de 0,01 s, alors que le temps de cycle varie en raison de la télémétrie Bluetooth. Lorsque dt est calculé à partir de l’horodatage réel, la dérive diminue mais ne disparaît pas complètement. Puis il regarde l’étalonnage de l’accéléromètre ; Même lorsque le capteur est à l'arrêt, il y a un décalage de 2°. Lorsque je supprime le décalage d'étalonnage, le robot se tient debout. Enfin, il remarque qu'il utilise qos=0 lors de la diffusion de télémétrie via MQTT et l'augmente à qos=1 pour les données d'angle critique. L'IA a livré un squelette de fusion en quelques minutes ; mais la vérification de l'ingénieur a détecté trois problèmes spécifiques au système : dt variable, décalage d'étalonnage et QoS.

Erreurs courantes

  • En supposant que dt est constant, alors que le temps de cycle varie (dérives de fusion).
  • Fusionner les capteurs sans les calibrer (offset systématique).
  • Essayer d'aligner des capteurs de différentes vitesses sans horodatage.
  • Repartir avec la valeur d'échantillon de l'IA sans mesurer les covariances Kalman Q/R à partir du bruit réel.
  • Autoriser la perte de messages en utilisant qos=0 sur les données IoT critiques.
  • Donner des données brutes bruyantes à la fusion sans pré-filtrage.

En résumé

  • Fusion utilise chaque capteur dans la région de fréquence où il est fort et compense sa faiblesse.
  • Le filtre complémentaire est simple ; Établit l'équilibre gyroscope-accéléromètre avec alpha.
  • Le filtre de Kalman modélise le bruit de manière probabiliste ; Q/R vient du système réel.
  • Dans la télémétrie MQTT, l'horodatage et la qualité de service appropriée sont des décisions d'ingénierie critiques.
  • Le bruit, l'étalonnage et la synchronisation temporelle déterminent la qualité de la fusion.
  • dt est mesuré en temps réel ; l'étalonnage et la qualité de service sont vérifiés sans laisser le soin à l'IA.

Tâche de candidature

Pour une IMU (gyroscope réel ou simulé + données d'accéléromètre), demandez à l'IA de générer le filtre intégral et assurez-vous que le dt est calculé à partir de l'horodatage réel. Ensuite : (1) essayez alpha pour 0,90, 0,98 et 1,0 et observez la dérive et l'équilibre du bruit, (2) ajoutez un décalage fixe intentionnel (erreur d'étalonnage) au capteur et voyez comment la sortie de fusion dérive, (3) convertissez les données en schéma MQTT JSON et ajoutez des champs d'horodatage et d'unité. Notez quelle valeur alpha donne le résultat le plus équilibré pour vos données et dans quelle mesure le décalage d'étalonnage déforme la sortie.