Me está costando poner esta pregunta en palabras, pero básicamente tengo una IMU (MPU-6050) y puedo hacer que los datos se transmitan usando la biblioteca i2cDev.
La IMU está en una caja y quiero poder determinar de qué lado está la caja (que supongo que será fácil de usar usando la dirección gravitatoria como punto de referencia) y luego calcular la guiñada de ese lado.
En cierto sentido, quiero fingir que la guiñada, cabeceo y balanceo absolutos no existen para el dispositivo y, en cambio, cada lado de la caja tiene una guiñada relativa.
Jeff Roberg (autor de I2CDev) ha hecho un buen trabajo con su biblioteca MPU6050. Tenga en cuenta que cabeceo y balanceo son valores absolutos cuando los calcula a partir de los valores del acelerómetro, pero la guiñada es relativa ya que no hay magnetómetro en el MPU6050.
Cuando encienda el MPU6050, siempre comenzará a contar el valor de guiñada desde 0 o más grados (rango: 0 - 360 grados), y luego habrá algo de desviación. Pero, los valores de cabeceo y balanceo siempre serán absolutos en el rango de -90 a +90 grados.
Si desea calcular la orientación, ¡no siga el valor de guiñada! Use una combinación del componente de 'gravedad' y el componente de 'cabeceo' o 'balanceo'.
Brian Dohler
sabjorn