Cancelación del efecto de la aceleración gravitatoria constante en un registrador de datos

En un diseño que registra no solo las lecturas del acelerómetro (X + Y + Z) sino también las lecturas giroscópicas (X + Y + Z), ¿cómo es posible eliminar las lecturas del acelerómetro causadas por la gravedad?

He encontrado muchos conjuntos de datos de Crawdad que brindan mejores lecturas que no se ven afectadas por dicha aceleración inactiva causada por la gravedad.

He preparado un registrador de datos para registrar el movimiento de un animal específico. En la orientación inactiva, noté que el eje z registra continuamente 9.81 ms ^ -2. Me gustaría saber si hay algún método que pueda usar para reducir el efecto de este componente gravitacional no deseado. Sólo pretendo registrar la aceleración provocada por el movimiento de los animales. Cualquier otra sugerencia es bienvenida.

Los métodos más comunes son localizarlo en un eje y filtrar con un filtro de paso alto, o usar un estimador de estado para realizar un seguimiento del vector de gravedad y restarlo. Desafortunadamente, un acelerómetro práctico no puede medir la diferencia entre ser acelerado hacia arriba a 10 m/s^2 o estar sentado en el suelo.
Tal vez estoy siendo estúpido aquí, pero si el acelerómetro no se mueve (mantenido en un campo g constante), entonces no tendrá una compensación.
Por lo que entiendo, este no es un problema fácil. Necesita saber qué camino está hacia abajo (en el sistema de coordenadas de su sensor), luego reste 1g. Pero para saber qué camino está hacia abajo, es probable que necesite procesar los datos para generar una estimación continua de la actitud (con respecto al campo gravitatorio), la velocidad de rotación y la aceleración. Luego puedes restar el componente de gravedad de la aceleración. Sin embargo, creo que deberías explicar más sobre tu aplicación. Podría haber algunos "atajos". Supuestos agregados para simplificar el proceso.
Si no quieres decir exactamente qué tipo de animal es, al menos di si es un animal de movimiento lento, o si descansa con frecuencia, ¿alguna vez se pone boca abajo? ¿Puede volar?

Respuestas (1)

Dependiendo de si procesa datos registrados o datos en tiempo real, el método varía. Lo que necesita es suponer que el objeto no está acelerando constantemente, lo que puede probarse por el hecho de que el animal permanece en la Tierra.
Puede usar un filtro de promedio móvil para restar el valor medio (sesgo gravitatorio) de cada muestra. Esto se hace en Matlab mediante el uso de filtfilt(), que coincide correctamente con el estado inicial y final en función de los valores de los datos. Para el filtro, puede diseñar un filtro FIR de promedio simple con toques iguales o algún filtro FIR más adecuado. Una buena razón para usar un filtfilt() es que filtra hacia adelante y hacia atrás, por lo que se cancela el retraso del filtro, todas las señales permanecen en la fase exacta. Haces lo mismo con el giroscopio, luego fusionas ambos datos.