Novedad: el cortafuegos de IA supervisa toda la plataforma y explica cada incidente con palabras sencillas. Vea cómo funciona

Respuesta: El rumbo de la brújula se retrasa en los giros, ¿el filtro está mal?

Traducido del Türkçe por IA ·

Ampliar la ventana aumenta el retraso, hay que hacer lo contrario. Tuve el mismo problema una vez mientras trabajaba con drones.La fuente del retraso es el promedio en sí: un promedio móvil de 20 lecturas llega con unos 1 segundo de retraso, y el error crece a medida que aumenta la velocidad de giro. La falta de calibración que mencionó Büşra Hanım también explica la diferencia entre el giro a la derecha y a la izquierda.La solución es combinarlo con el giroscopio. El giroscopio detecta la rotación al instante pero se desvía lentamente, el magnetómetro es lento pero no se desvía. Un filtro complementario combina ambos:

// 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);

Si la placa no tiene giroscopio, añadir un MPU6050 es la forma más barata. Primero, haga girar el barco dos vueltas completas en el agua y realice la calibración hard/soft iron.El problema del 180 es aparte: un ángulo no se puede promediar. El promedio de 359 y 1 da 180. El gráfico semanal lee valores agregados por hora y la función predeterminada es average. En el gráfico del rumbo, cambie la función a last, y para el análisis envíe heading_sin y heading_cos junto al rumbo; su promedio sale correctamente.

Kayıtta yoksa olmamıştır.
Solución aceptada♥ 7