Yeni: Yapay zekâ güvenlik duvarı tüm platformu izliyor ve her olayı sade bir dille açıklıyor. Nasıl çalıştığını görün

Pusula başlığı dönüşlerde geriden geliyor, filtre mi yanlış?

Pusula başlığı dönüşlerde geriden geliyor, filtre mi yanlış?

Çözüldü 6 5

Su kalitesi ölçümü için küçük bir otonom tekne üzerinde çalışıyoruz, göletlerde rota üzerinde numune noktalarına gidiyor. Ben veri tarafındayım ama elektronik ekibi tatilde, sorun bana kaldı.

Başlık (heading) için QMC5883L manyetometre var, ESP32 10 Hz okuyor. Tekne düz giderken başlık güzel, ama dönüşlerde 2-3 saniye geriden geliyor: tekne dönmüş, değer hâlâ eskiyi gösteriyor, sonra yavaşça yetişiyor. Sağa ve sola dönüşte gecikme farklı gibi. Rota takibi bu yüzden yalpalıyor.

Değerler Hermetry’ye de gidiyor, haritada rota çiziyoruz. Bir de tuhaf bir şey var: haftalık grafikte başlık bazen 180 civarı görünüyor, oysa tekne o gün kuzeye gidip gelmiş.

♥ 0

Okunan değere bir filtre uyguluyor musunuz?

Sahadan selamlar.
♥ 0

Evet, son 20 okumanın ortalaması. 10 Hz’de 2 saniye ediyor.

♥ 1

Pencereyi 50’ye çıkarın, daha stabil olur.

Ağ geçidi yine bağlanıyor…
♥ 0

Kalibrasyon yapıldı mı? Hard iron ve soft iron kalibrasyonu yapılmamışsa dönüş yönüne göre farklı hata çıkar, sağ-sol farkı ondan olabilir.

♥ 0

Pencereyi büyütmek gecikmeyi artırır, tersini yapmak lazım. Bir dönem drone ile uğraşırken aynı şeyi yaşadım.

Gecikmenin kaynağı ortalamanın kendisi: 20 okumalık hareketli ortalama yaklaşık 1 saniye geriden gelir, dönüş hızı arttıkça hata büyür. Büşra Hanım’ın dediği kalibrasyon eksikliği de sağ-sol farkını açıklıyor.

Çözüm jiroskopla birleştirmek. Jiroskop dönüşü anında görür ama yavaşça kayar, manyetometre yavaş ama kaymaz. Tamamlayıcı filtre ikisini birleştirir:

// dt = 0.1 s, gz = derece/s (z ekseni jiroskop)
float a = 0.98;
heading = a * (heading + gz * dt) + (1 - a) * magHeading;
// 0/360 geçişini düzelt
float fark = magHeading - heading;
if (fark > 180) heading += 360 * (1 - a);
if (fark < -180) heading -= 360 * (1 - a);
heading = fmod(heading + 360, 360);

Kartta jiroskop yoksa bir MPU6050 eklemek en ucuz yol. Önce tekneyi suda iki tam tur döndürüp hard/soft iron kalibrasyonunu yapın.

180 meselesi ayrı: açının ortalaması alınamaz. 359 ile 1’in ortalaması 180 çıkar. Haftalık grafik saatlik toplu değerleri okuyor ve varsayılan fonksiyon ortalama. Başlık grafiğinde fonksiyonu last yapın, analiz için de başlığın yanında heading_sin ve heading_cos gönderin, onların ortalaması doğru çıkar.

Kayıtta yoksa olmamıştır.
Kabul edilen çözüm♥ 7

Tamamlayıcı filtre ile gecikme neredeyse kayboldu, ekip bir MPU6050 bulmuştu zaten. Kalibrasyonu da yaptık, sağ-sol farkı gitti. Grafikte last yapınca 180 saçmalığı da bitti. Hakan Bey’in önerisini denemeden önce bu yazıyı okumuş olmam iyi oldu 🙂

♥ 2
7 yazı görüntüleniyor – 1 ile 7 arası (toplam 7)
  • Bu konuyu yanıtlamak için giriş yapmış olmalısınız.

Sohbete katılın

Soru sormak ve yanıtlamak, yararlı gönderileri beğenmek ve sorununuzu çözen yanıtı işaretlemek için oturum açın. Her katkı puan ve seviye kazandırır.

Paylaş