Kompass-Heading hinkt bei Kurven hinterher, ist der Filter falsch?
Von Türkçe mit KI übersetzt ·
Wir arbeiten an einem kleinen autonomen Boot zur Wasserqualitätsmessung, das auf einer Route zu Probenahmepunkten in Teichen fährt. Ich bin für die Daten zuständig, aber das Elektronikteam ist im Urlaub, deshalb liegt das Problem bei mir.Für das Heading haben wir einen QMC5883L-Magnetometer, und der ESP32 liest mit 10 Hz. Fährt das Boot geradeaus, ist das Heading in Ordnung, aber bei Kurven hinkt es 2–3 Sekunden hinterher: Das Boot hat sich gedreht, der Wert zeigt noch den alten Stand und holt dann langsam auf. Die Verzögerung scheint bei Rechts- und Linkskurven unterschiedlich zu sein. Deshalb schwankt die Routenverfolgung.Die Werte gehen außerdem an Hermetry, wo wir die Route auf einer Karte zeichnen. Außerdem gibt es etwas Merkwürdiges: Im Wochendiagramm erscheint das Heading manchmal um 180, obwohl das Boot an diesem Tag nach Norden gefahren und zurückgekommen ist.
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ş.
Von Türkçe mit KI übersetzt ·
Wenden Sie einen Filter auf den gelesenen Wert an?
Okunan değere bir filtre uyguluyor musunuz?
Von Türkçe mit KI übersetzt ·
Ja, es ist der Mittelwert der letzten 20 Messwerte. Bei 10 Hz dauert es 2 Sekunden.
Evet, son 20 okumanın ortalaması. 10 Hz’de 2 saniye ediyor.
Von Türkçe mit KI übersetzt ·
Stellen Sie das Fenster auf 50, dann wird es stabiler.
Pencereyi 50’ye çıkarın, daha stabil olur.
Von Türkçe mit KI übersetzt ·
Wurde die Kalibrierung durchgeführt? Wenn die Hard-Iron- und Soft-Iron-Kalibrierung nicht gemacht wurde, treten je nach Drehrichtung unterschiedliche Fehler auf, und der Unterschied zwischen links und rechts könnte daher kommen.
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.
Von Türkçe mit KI übersetzt ·
Das Vergrößern des Fensters erhöht die Verzögerung, man muss das Gegenteil tun. Ich hatte dasselbe Problem einmal, als ich mich mit Drohnen beschäftigt habe.Die Ursache der Verzögerung ist der Mittelwert selbst: Ein gleitender Mittelwert über 20 Messwerte kommt etwa 1 Sekunde verspätet an, und der Fehler wächst mit steigender Drehgeschwindigkeit. Der von Büşra Hanım erwähnte Kalibrierungsmangel erklärt außerdem den Unterschied zwischen rechts und links.Die Lösung ist die Kombination mit dem Gyroskop. Das Gyroskop erfasst die Drehung sofort, driftet aber langsam, das Magnetometer ist langsam, driftet aber nicht. Ein komplementärer Filter kombiniert beide:
// 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);
Falls auf der Platine kein Gyroskop vorhanden ist, ist das Hinzufügen eines MPU6050 der günstigste Weg. Drehen Sie das Boot zuerst im Wasser zwei volle Umdrehungen und führen Sie die Hard- und Soft-Iron-Kalibrierung durch.Das 180-Problem ist davon getrennt: Ein Winkel lässt sich nicht mitteln. Der Mittelwert von 359 und 1 ergibt 180. Das Wochendiagramm liest stündlich aggregierte Werte, und die Standardfunktion ist Mittelwert. Stellen Sie im Kursdiagramm die Funktion auf last und senden Sie für die Analyse zusätzlich heading_sin und heading_cos neben dem Kurs; deren Mittelwert ergibt das richtige Ergebnis.
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.
Von Türkçe mit KI übersetzt ·
Mit dem komplementären Filter ist die Verzögerung fast verschwunden, das Team hatte ohnehin schon einen MPU6050 gefunden. Wir haben auch die Kalibrierung gemacht, der Unterschied links-rechts ist weg. Beim Grafik-last ist auch der 180-Unsinn verschwunden. Gut, dass ich diesen Beitrag gelesen habe, bevor ich Hakan Beys Vorschlag ausprobiert habe 🙂
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 🙂
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.
Mitdiskutieren
Melde dich an, um Fragen zu stellen und zu beantworten, hilfreiche Beiträge mit „Gefällt mir“ zu markieren und die Antwort zu kennzeichnen, die dein Problem gelöst hat. Jeder Beitrag bringt Punkte und Stufen.

