Satuan 4 / 9

Sensor Fusion dan Integrasi Data IoT

Keuntungan:

  • Kemampuan untuk membangun logika fusi (integrator/filter Kalman) yang menggabungkan data IMU, encoder, dan sensor jarak dengan AI
  • Kemampuan untuk mengonfigurasi dan menafsirkan aliran data dan telemetri IoT berbasis MQTT dengan bantuan AI
  • Kemampuan untuk mendeteksi dan memperbaiki gangguan sensor, kalibrasi, dan masalah sinkronisasi waktu dalam keluaran AI

Tidak ada sensor yang sempurna. Giroskop sangat akurat dalam jangka pendek, tetapi berubah seiring berjalannya waktu. Akselerometer stabil dalam jangka panjang tetapi mendapat kebisingan dari getaran. Encoder mengukur posisi dengan tepat, tetapi salah jika terjadi slip. GPS bekerja di area yang luas namun frekuensinya rendah dan berisik. Insinyur mekatronik harus menghasilkan satu kebenaran yang dapat diandalkan dari sensor-sensor yang tidak sempurna ini; Ini adalah fusi sensor. Terlebih lagi, dalam sistem modern, data ini tidak hanya bersifat lokal, namun mengalir ke cloud dan pusat kendali melalui jaringan IoT. Kecerdasan buatan adalah bantuan yang ampuh dalam menyiapkan algoritme fusi serta mengonfigurasi dan menafsirkan telemetri IoT. Dalam unit ini, kami membahas filter pelengkap, logika filter Kalman, dan cara menyiapkan aliran IoT berbasis MQTT dengan AI serta menangkap kebisingan dan perangkap sinkronisasi.

Mengapa Sensor Fusi?

Setiap sensor memiliki "zona frekuensi yang baik". Tujuan fusi adalah untuk menggunakan masing-masing sensor di area yang kuat dan mendukungnya dengan sensor lainnya di area yang lemah.

sensor

titik kuat

kelemahan

giroskop

Kecepatan sudut jangka pendek, respon cepat

Melayang seiring waktu

akselerometer

Referensi kemiringan jangka panjang (gravitasi)

Getaran/berisik saat bergerak

pembuat enkode

Lokasi resolusi tinggi

Kesalahan slip/serangan balik

GPS

posisi absolut

Frekuensi rendah, kebisingan, tidak ada di dalam ruangan

Mengandalkan satu sensor akan memperkenalkan kelemahan sensor tersebut ke dalam sistem. Fusion, misalnya, menggabungkan sudut giroskop yang cepat namun melayang dengan referensi akselerometer yang lambat namun stabil, menghasilkan sudut yang cepat dan bebas penyimpangan.

Filter Pelengkap

Fusi yang paling sederhana dan umum adalah filter komplementer. Idenya intuitif: percayakan giroskop pada frekuensi tinggi (perubahan cepat), akselerometer pada frekuensi rendah (lambat, stabil). Ringkasan satu baris:

# Filter pelengkap: estimasi nyeri (nada) # alpha ~ 0,98 : lebih ke giroskop, lebih sedikit ke akselerometer (derajat/dtk) akselerasi_ange : sudut dihitung dari akselerometer (derajat) dt : periode pengambilan sampel (dtk) """ gyro_pac = sebelumnya + gyro_speed * dt # mengintegrasikan giroskop kembali alpha * gyro_pace + (1 - alpha) * percepatan_sudut# Logika verifikasi: murni giroskop (melayang) jika alpha=1, # jika alpha=0 accelerometer murni (berisik).

Koefisien alpha di sini menentukan keseimbangan: jika mendekati 1, bergantung pada giroskop (risiko penyimpangan meningkat), jika mendekati 0, bergantung pada akselerometer (kebisingan meningkat). Nilai tipikalnya adalah 0,95–0,98. AI mungkin menyarankan nilai ini, tetapi alfa yang benar bergantung pada laju sampel dan karakter kebisingan sistem Anda; diatur secara eksperimental.

Tip: Saat mencetak filter integral ke AI, pastikan untuk menanyakan bagaimana dt diukur. Kebanyakan kesalahan berasal dari asumsi dt konstan namun pada kenyataannya waktu siklus bervariasi. Ukur dt nyata dengan millis()/timestamp, jangan tulis konstanta.

Logika Filter Kalman

Filter pelengkapnya sederhana tetapi tidak memodelkan statistik kebisingan. Filter Kalman menghasilkan estimasi optimal (di bawah asumsi tertentu) dengan memodelkan noise sensor dan ketidakpastian proses secara probabilistik. Ini bekerja dalam dua langkah:

  1. Predict: Memprediksi situasi selanjutnya dan ketidakpastiannya dengan model sistem.
  2. Pembaruan: Timbang pengukuran baru terhadap keandalan pengukuran (perolehan Kalman) dan perbaiki perkiraannya.

Kalman gain K secara otomatis menjawab pertanyaan "haruskah saya lebih mempercayai pengukuran atau model" di setiap langkah. Jika noise pengukuran besar maka K menjadi lebih kecil (keyakinan terhadap model), jika ketidakpastian proses besar maka K menjadi lebih besar (keyakinan terhadap pengukuran). AI dengan mudah menulis filter Kalman satu dimensi; namun tugas Anda adalah memilih kovarians derau (`Q`, `R`) dengan benar dan kovarian tersebut berasal dari derau sistem yang sebenarnya.

Perhatian: Nilai Q (kebisingan proses) dan R (kebisingan pengukuran) yang diberikan oleh AI adalah sampel/placeholder. Jika Anda tidak menentukannya berdasarkan derau pengukuran aktual sistem (misalnya varians yang diukur saat sensor tidak bergerak), filter akan menjadi terlalu lambat atau terlalu derau. Jangan percaya kovarians yang diberikan oleh AI sebagai "nilai sebenarnya".

Aliran Data IoT: MQTT dan Telemetri

Data bersih yang Anda hasilkan dengan fusi biasanya diangkut ke pusat melalui jaringan IoT. Protokol yang paling umum di industri ini adalah MQTT: ringan, model terbitkan-berlangganan, cocok untuk bandwidth rendah. AI dengan cepat menetapkan kode penerbit/pelanggan MQTT dan skema telemetri JSON.

import json, timeimport paho.mqtt.client as mqttclient = mqtt.Client()client.connect("broker.local", 1883, keepalive=60)def telemetry_broadcast(suhu, suhu, vibrasi_rms): message = { "ts": time.time(), # timestamp -- kondisi untuk sinkronisasi "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: dikirim setidaknya sekali. Menggunakan qos=0 (mungkin hilang) pada data penting.

Dua keputusan teknik penting di sini: (1) stempel waktu (ts) setiap pesan—sensor yang berbeda diambil sampelnya pada waktu berbeda, sinkronisasi hanya dapat dilakukan dengan stempel waktu; (2) Tingkat QoS—data penting menggunakan setidaknya qos=1 (dikirim setidaknya sekali), qos=0 memungkinkan hilangnya pesan.

Kebisingan, Kalibrasi dan Sinkronisasi

Tidak peduli seberapa bagus fusinya, ada tiga masalah dengan input yang mendistorsi hasilnya:

  • Kebisingan: Jika data sensor mentah dimasukkan ke dalam fusi tanpa difilter, keluaran fusi juga akan menimbulkan noise. Pra-filtering (median, low pass) mungkin diperlukan.
  • Kalibrasi: Kesalahan offset dan skala (misalnya titik nol akselerometer bergeser) secara sistematis menyesatkan fusi. Sensor harus dikalibrasi sebelum digunakan.
  • Sinkronisasi waktu: Stempel waktu dan interpolasi diperlukan untuk menyelaraskan sensor yang diambil sampelnya pada kecepatan yang berbeda (misalnya GPS 10 Hz dengan IMU 1 kHz).

AI dapat menambahkan langkah-langkah ini ke kode, tetapi apakah masing-masing langkah tersebut diperlukan dan parameternya spesifik untuk sistem Anda. Di output AI "di mana kalibrasinya?" dan “apakah stempel waktunya selaras?” Pastikan untuk mengajukan pertanyaan.

Prompt Lemah / Prompt Kuat

LEMAH:"Hitung sudut dari data IMU."(Filter mana? Apakah penyimpangan ditangani? Bagaimana dt? Tidak jelas.)KUAT:"Gabungkan data akselerometer dan giroskop dari MPU6050 dengan filter integral dan perkirakan sudut nada. Hitung dt dari stempel waktu nyata, jangan asumsikan konstan. Tetapkan alfa sebagai parameter (default 0,98). Hitung sudut akselerometer dengan tane2. Filter sebagai tulis sebagai kelas, pertahankan sudut sebelumnya, tambahkan median opsional prafilter untuk kebisingan."

Kasus Mini

Insinyur robotika Selin menginginkan filter pelengkap dari AI untuk estimasi sudut pada robot penyeimbang roda dua. AI memberikan kode yang bersih, tetapi robot perlahan-lahan bersandar ke satu sisi. Selin memeriksa dt: kode mengasumsikan dt konstan 0,01 detik, sedangkan waktu siklus bervariasi karena telemetri Bluetooth. Ketika dt dihitung dari stempel waktu sebenarnya, penyimpangannya berkurang tetapi tidak hilang sepenuhnya. Lalu dia melihat kalibrasi accelerometer; Bahkan ketika sensor diam, terdapat offset 2°. Saat saya melepas offset kalibrasi, robot berdiri tegak. Terakhir, ia mengetahui bahwa ia menggunakan qos=0 saat menyiarkan telemetri melalui MQTT dan meningkatkannya menjadi qos=1 untuk data sudut kritis. AI mengirimkan kerangka fusi dalam hitungan menit; namun verifikasi teknisi menemukan tiga masalah khusus sistem: variabel dt, offset kalibrasi, dan QoS.

Kesalahan Umum

  • Dengan asumsi dt konstan, sedangkan waktu siklus bervariasi (fusion drifts).
  • Memadukan sensor tanpa mengkalibrasinya (offset sistematis).
  • Mencoba menyelaraskan sensor dengan kecepatan berbeda tanpa cap waktu.
  • Meninggalkan nilai sampel AI tanpa mengukur kovarians Kalman Q/R dari noise sebenarnya.
  • Mengizinkan hilangnya pesan dengan menggunakan qos=0 pada data IoT penting.
  • Memberikan data mentah yang berisik ke fusi tanpa pra-pemfilteran.

Singkatnya

  • Fusion menggunakan setiap sensor di wilayah frekuensi yang kuat dan mengkompensasi kelemahannya.
  • Filter pelengkapnya sederhana; Menetapkan keseimbangan giroskop-akselerometer dengan alfa.
  • Filter Kalman memodelkan kebisingan secara probabilistik; Q/R berasal dari sistem nyata.
  • Dalam telemetri MQTT, stempel waktu dan QoS yang sesuai merupakan keputusan teknis yang penting.
  • Kebisingan, kalibrasi, dan sinkronisasi waktu menentukan kualitas fusi.
  • dt diukur dari waktu nyata; kalibrasi dan QoS diverifikasi tanpa menyerahkannya kepada AI.

Tugas aplikasi

Untuk IMU (data gyro + accelerometer nyata atau simulasi) minta AI menghasilkan filter integral dan pastikan dt dihitung dari stempel waktu sebenarnya. Kemudian: (1) coba alfa untuk 0,90, 0,98, dan 1,0 dan amati keseimbangan penyimpangan dan kebisingan, (2) tambahkan offset tetap yang disengaja (kesalahan kalibrasi) ke sensor dan lihat bagaimana keluaran fusi menyimpang, (3) ubah data ke skema MQTT JSON dan tambahkan bidang stempel waktu dan unit. Catat nilai alfa mana yang memberikan hasil paling seimbang untuk data Anda dan seberapa besar offset kalibrasi mendistorsi keluarannya.