Estoy trabajando en un proyecto que me está desafiando. He investigado sobre el tema lo mejor que puedo, pero me gustaría recibir opiniones adicionales.
Tengo un canal C de aluminio de 4 'de largo (esencialmente, una barra metálica) con un sensor 9DOF en su extremo (FXOS8700 + FXAS21002, accel & mag + gyro). El sensor está bajo una aceleración constante a medida que gira en un círculo de radio 4 '. Esta "barra" descansa sobre una pequeña rueda giratoria que le permite moverse a lo largo del suelo. La base a la que se fija la varilla no se mueve lateralmente. Por lo tanto, el sensor se mueve en un círculo de 4 ', y sube y baja con los cambios en la elevación.
Este es nuestro objetivo: medir el tono del sensor a medida que se mueve a intervalos regulares
Primero que todo, porque el sensor está en constante aceleración, ¿tengo razón al entender que la ecuación de tono que usa arctan (usada para aplicaciones estáticas) no será correcta?
Creo que necesitamos usar una IMU en este caso. He intentado usar el filtro Mahony y un filtro de Kalman (escrito para nuestro sensor en particular, basado en el algoritmo Sensor Fusion de NXP, pero no es dependiente del hardware como es el algoritmo de NXP).
Ambos algoritmos son 9DOF, incorporando los tres sensores. Sin embargo, me pregunto si esto no es una buena idea para nosotros. Cuando usamos el mismo sensor para obtener la orientación, nuestros resultados tienden a variar terriblemente. Lo atribuí a los errores de hierro suave de los campos magnéticos fluctuantes. Los algoritmos funcionarían mejor cuando calibramos (usando el software MotionCal) para errores de hierro duro y suave, pero tan pronto como moviéramos el sistema a otro lugar tendríamos terribles problemas de precisión. Así que mi idea es ignorar la entrada del magnetómetro, ya que no estamos buscando obtener un rumbo, solo un tono.
Ahora, ¿esto significaría usar un algoritmo 6DOF en su lugar, si quisiéramos ignorar nuestro magnetómetro? No estoy seguro de que sea posible decirle a cualquiera de los algoritmos que "ignore" el magnetómetro.
También soy consciente del error de deriva del giro. He intentado seguir las instrucciones de este post: algoritmo AHRS bajo aceleraciones lineales continuas tomando varias lecturas del giro por unos segundos antes de cada ejecución, y luego promediándolas y restándolas de lecturas posteriores.
Este es nuestro problema en este momento: cuando leemos el tono de cualquiera de los algoritmos, incluso cuando el sensor no gira en un círculo, los valores están disminuyendo constantemente. Caerán a cero, y luego se envolverán. Ocasionalmente, parecen estar estables y responden de manera muy rápida y precisa a los cambios en el tono real del sensor, pero otras veces, simplemente caen sin detenerse.
Otros miembros de mi equipo creen que estoy complicando las cosas, y todo lo que realmente necesitamos es el componente y de las aceleraciones. Pero creo que no estamos buscando aceleraciones debidas a la gravedad exactamente, sino un tono dinámico, que se complica ligeramente por una aceleración radial.
¿Estoy equivocado en mi línea de pensamiento en algún lugar? Si es así, por favor corríjame.