Kazanimlar:
- IMU, enkoder ve mesafe sensörü verilerini birleştiren füzyon mantığını (tümleyici/Kalman filtresi) AI ile kurgulayabilme
- MQTT tabanlı IoT veri akışını ve telemetriyi AI yardımıyla yapılandırıp yorumlayabilme
- Sensör gürültüsü, kalibrasyon ve zaman senkronizasyonu sorunlarını AI çıktısında fark edip düzeltebilme
Hiçbir sensör mükemmel değildir. Jiroskop kısa vadede çok doğrudur ama zamanla kayar (drift). İvmeölçer uzun vadede kararlıdır ama titreşimden gürültü kapar. Enkoder konumu hassas ölçer ama kayma (slip) olduğunda yanılır. GPS geniş alanda çalışır ama düşük frekanslı ve gürültülüdür. Mekatronik mühendisi bu kusurlu sensörlerden tek ve güvenilir bir gerçek üretmek zorundadır; işte sensör füzyonu budur. Üstelik modern sistemlerde bu veriler yalnızca yerelde kalmaz, IoT ağları üzerinden bulut ve kontrol merkezlerine akar. Yapay zeka hem füzyon algoritmalarını kurmakta hem de IoT telemetrisini yapılandırıp yorumlamakta güçlü bir yardımcıdır. Bu ünitede tümleyici filtre, Kalman filtresi mantığı ve MQTT tabanlı IoT akışını AI ile nasıl kuracağınızı, gürültü ve senkronizasyon tuzaklarını nasıl yakalayacağınızı işliyoruz.
Neden Sensör Füzyonu?
Her sensörün bir "iyi olduğu frekans bölgesi" vardır. Füzyonun amacı, her sensörü güçlü olduğu bölgede kullanıp zayıf olduğu bölgede diğeriyle desteklemektir.
Sensör
Güçlü yanı
Zayıf yanı
Jiroskop
Kısa vadeli açısal hız, hızlı tepki
Zamanla drift (kayma)
İvmeölçer
Uzun vadeli eğim referansı (yerçekimi)
Titreşim/harekette gürültülü
Enkoder
Yüksek çözünürlüklü konum
Kayma/backlash hatası
GPS
Mutlak konum
Düşük frekans, gürültü, iç mekanda yok
Tek bir sensöre güvenmek, o sensörün zayıf yanını sisteme taşır. Füzyon, örneğin jiroskopun hızlı ama kayan açısını ivmeölçerin yavaş ama kararlı referansıyla birleştirerek hem hızlı hem drift'siz bir açı verir.
Tümleyici (Complementary) Filtre
En basit ve en yaygın füzyon, tümleyici filtredir. Fikir sezgiseldir: jiroskopa yüksek frekansta (hızlı değişim), ivmeölçere düşük frekansta (yavaş, kararlı) güven. Tek satırlık öz:
# Tumleyici filtre: aci kestirimi (pitch)# alpha ~ 0.98 : jiroskopa cok, ivmeolcere az agirlikdef tumleyici_filtre(aci_onceki, gyro_hiz, ivme_acisi, dt, alpha=0.98): """ aci_onceki : bir onceki kestirilen aci (derece) gyro_hiz : jiroskop acisal hizi (derece/sn) ivme_acisi : ivmeolcerden hesaplanan aci (derece) dt : ornekleme periyodu (sn) """ gyro_aci = aci_onceki + gyro_hiz * dt # jiroskopu entegre et return alpha * gyro_aci + (1 - alpha) * ivme_acisi# Dogrulama mantigi: alpha=1 ise saf jiroskop (drift eder),# alpha=0 ise saf ivmeolcer (gurultulu). Ara deger ikisini dengeler.
Buradaki alpha katsayısı dengeyi belirler: 1'e yakınsa jiroskopa güvenir (drift riski artar), 0'a yakınsa ivmeölçere güvenir (gürültü artar). Tipik değer 0.95–0.98'dir. AI bu değeri önerebilir ama doğru alpha sizin sisteminizin örnekleme hızına ve gürültü karakterine bağlıdır; deneysel olarak ayarlanır.
İpucu: AI'a tümleyici filtre yazdırırken dt'nin nasıl ölçüldüğünü mutlaka sorun. Çoğu hata, dt'nin sabit varsayılması ama gerçekte döngü süresinin değişmesinden gelir. dt'yi millis()/zaman damgasıyla gerçek ölçün, sabit yazmayın.
Kalman Filtresi Mantığı
Tümleyici filtre basit ama gürültü istatistiğini modellemez. Kalman filtresi, sensör gürültüsü ve süreç belirsizliğini olasılıksal olarak modelleyerek optimal (belirli varsayımlar altında) bir kestirim üretir. İki adımda çalışır:
- Tahmin (predict): Sistem modeliyle bir sonraki durumu ve belirsizliğini öngör.
- Güncelleme (update): Yeni ölçümü, ölçüm güvenilirliğine (Kalman kazancı) göre tartıp kestirimi düzelt.
Kalman kazancı K, "ölçüme mi yoksa modele mi daha çok güveneyim" sorusunu her adımda otomatik yanıtlar. Ölçüm gürültüsü büyükse K küçülür (modele güven), süreç belirsizliği büyükse K büyür (ölçüme güven). AI, bir boyutlu bir Kalman filtresini kolayca yazar; ama gürültü kovaryanslarını (`Q`, `R`) doğru seçmek sizin işinizdir ve bunlar sistemin gerçek gürültüsünden gelir.
Dikkat: AI'ın verdiği Q (süreç gürültüsü) ve R (ölçüm gürültüsü) değerleri örnek/placeholder'dır. Bunları sistemin gerçek ölçüm gürültüsünden (örneğin sensör sabitken ölçülen varyanstan) belirlemezseniz, filtre ya çok yavaş ya çok gürültülü olur. AI'ın verdiği kovaryanslara "gerçek değer" gibi güvenmeyin.
IoT Veri Akışı: MQTT ve Telemetri
Füzyonla ürettiğiniz temiz veri genellikle bir IoT ağı üzerinden merkeze taşınır. Endüstride en yaygın protokol MQTT'dir: hafif, yayın-abone (publish-subscribe) modelli, düşük bant genişliğine uygun. AI, MQTT yayıncı/abone kodunu ve JSON telemetri şemasını hızla kurar.
import json, timeimport paho.mqtt.client as mqttclient = mqtt.Client()client.connect("broker.local", 1883, keepalive=60)def telemetri_yayinla(aci, sicaklik, titresim_rms): mesaj = { "ts": time.time(), # zaman damgasi -- senkronizasyon icin sart "aci_deg": round(aci, 2), "sicaklik_c": round(sicaklik, 1), "titresim_rms": round(titresim_rms, 3), "birim": {"aci": "deg", "sicaklik": "C", "titresim": "mm/s"} } client.publish("makine/hat1/sensor", json.dumps(mesaj), qos=1)# qos=1: en az bir kez teslim. Kritik veride qos=0 (kayip olabilir) kullanma.
Buradaki iki mühendislik kararı önemlidir: (1) her mesaja zaman damgası (ts) koymak—farklı sensörler farklı zamanda örneklenir, senkronizasyon ancak zaman damgasıyla mümkündür; (2) QoS seviyesi—kritik veride en az qos=1 (en az bir kez teslim) kullanılır, qos=0 mesaj kaybına izin verir.
Gürültü, Kalibrasyon ve Senkronizasyon
Füzyon ne kadar iyi olursa olsun, girdideki üç sorun sonucu bozar:
- Gürültü: Ham sensör verisi filtrelenmeden füzyona girerse, füzyon çıktısı da gürültülü olur. Ön filtreleme (medyan, alçak geçiren) gerekebilir.
- Kalibrasyon: Ofset ve ölçek hataları (örneğin ivmeölçerin sıfır noktası kaymış) füzyonu sistematik olarak yanıltır. Sensörler kullanımdan önce kalibre edilmelidir.
- Zaman senkronizasyonu: Farklı hızlarda örneklenen sensörleri (örneğin 1 kHz IMU ile 10 Hz GPS) hizalamak için zaman damgası ve enterpolasyon gerekir.
AI bu adımları koda ekleyebilir, ama her birinin gerekip gerekmediği ve parametreleri sizin sisteminize özgüdür. AI çıktısında "kalibrasyon nerede?" ve "zaman damgaları hizalı mı?" sorularını mutlaka sorun.
Zayıf Prompt / Güçlü Prompt
ZAYIF:"IMU verisinden açı hesapla."(Hangi filtre? drift ele alınıyor mu? dt nasıl? Belirsiz.)GÜÇLÜ:"MPU6050'den gelen ivmeölçer ve jiroskop verisini tümleyici filtreylebirleştirip pitch açısı kestir. dt'yi gerçek zaman damgasından hesapla,sabit varsayma. alpha'yı parametre yap (varsayılan 0.98). İvmeölçeraçısını atan2 ile hesapla. Filtreyi bir sınıf olarak yaz, önceki açıyısakla. Gürültü için isteğe bağlı medyan ön filtre ekle."
Mini Vaka
Robotik mühendisi Selin, iki tekerlekli dengeleyici bir robotta açı kestirimi için AI'dan tümleyici filtre istiyor. AI temiz bir kod veriyor ama robot yavaşça bir yöne yatıyor. Selin dt'yi kontrol ediyor: kod dt'yi sabit 0.01 s varsaymış, oysa döngü süresi Bluetooth telemetri yüzünden değişiyor. dt'yi gerçek zaman damgasından hesaplatınca yatma azalıyor ama tümden bitmiyor. Sonra ivmeölçerin kalibrasyonuna bakıyor; sensör sabitken bile 2° ofset var. Kalibrasyon ofsetini çıkarınca robot dik duruyor. Son olarak telemetriyi MQTT ile yayınlarken qos=0 kullandığını fark edip kritik açı verisi için qos=1'e çıkarıyor. AI füzyon iskeletini dakikalar içinde verdi; ama değişken dt, kalibrasyon ofseti ve QoS olmak üzere üç sistem-özel sorunu mühendisin doğrulaması yakaladı.
Yaygın Hatalar
- dt'yi sabit varsaymak, oysa döngü süresi değişiyor (füzyon kayar).
- Sensörleri kalibre etmeden füzyona sokmak (sistematik ofset).
- Farklı hızdaki sensörleri zaman damgası olmadan hizalamaya çalışmak.
- Kalman Q/R kovaryanslarını gerçek gürültüden ölçmeden AI'ın örnek değeriyle bırakmak.
- Kritik IoT verisinde qos=0 kullanıp mesaj kaybına izin vermek.
- Ham gürültülü veriyi ön filtrelemeden füzyona vermek.
Özetle
- Füzyon, her sensörü güçlü olduğu frekans bölgesinde kullanıp zayıf yanını telafi eder.
- Tümleyici filtre basittir; alpha ile jiroskop-ivmeölçer dengesini kurar.
- Kalman filtresi gürültüyü olasılıksal modeller; Q/R gerçek sistemden gelir.
- MQTT telemetride zaman damgası ve uygun QoS kritik mühendislik kararlarıdır.
- Gürültü, kalibrasyon ve zaman senkronizasyonu füzyon kalitesini belirler.
- dt gerçek zamandan ölçülür; kalibrasyon ve QoS AI'a bırakılmadan doğrulanır.
Uygulama görevi
Bir IMU (gerçek ya da simüle edilmiş jiroskop + ivmeölçer verisi) için AI'a tümleyici filtre ürettirin ve dt'nin gerçek zaman damgasından hesaplandığından emin olun. Ardından: (1) alpha'yı 0.90, 0.98 ve 1.0 için deneyip drift ile gürültü dengesini gözlemleyin, (2) sensöre kasıtlı bir sabit ofset (kalibrasyon hatası) ekleyip füzyon çıktısının nasıl kaydığını görün, (3) veriyi MQTT JSON şemasına dönüştürüp zaman damgası ve birim alanlarını ekleyin. Hangi alpha değerinin sizin veriniz için en dengeli sonucu verdiğini ve kalibrasyon ofsetinin çıktıyı ne kadar bozduğunu not edin.