¿Es posible el seguimiento de la cabeza con el sensor de acelerómetro giroscópico + Arduino e IMU 6050?

Para rastrear la posición de cualquier cosa, existe el reino absoluto y el reino relativo. La posición absoluta es la medida de la orientación exacta en el espacio. La posición relativa es la medida de la diferencia de posición con respecto a la orientación anterior.

Para medir la posición absoluta de los auriculares VR, suponiendo que el usuario de los auriculares no se mueva a una aceleración alta, puede usar un acelerómetro. El acelerómetro de 3 ejes en MPU6050 le dará los valores absolutos de aceleraciones lineales en tres direcciones. Como sabe que su usuario solo está experimentando la gravedad de la tierra, que actúa perpendicularmente a la superficie de la tierra. Puede calcular la orientación de los auriculares midiendo la aceleración resultante a partir de los datos del acelerómetro. También puede usar un magnetómetro para mejorar la precisión.

La parte más importante para cualquier auricular VR es capturar el movimiento relativo de la cabeza. Un giroscopio hace precisamente eso. El giroscopio de 3 ejes en MPU6050 le brinda la velocidad angular a lo largo de tres ejes. Básicamente es el movimiento rotacional relativo a lo largo de tres ejes. Por lo tanto, debe usar estos valores para calcular los movimientos realizados por el usuario y cambiar la vista del auricular en consecuencia.

Todos estos sensores tienen problemas con sesgos y son propensos a errores. Pero la ventaja de usarlos todos juntos es que puede usar algoritmos y filtros para obtener lecturas precisas. Los algoritmos de fusión de sensores aseguran que obtenga lecturas verdaderamente confiables de su acelerómetro giroscópico +. Puede comenzar usando un Arduino, pero es posible que necesite mejores microcontroladores (como un ARM Cortex M) si sus algoritmos se vuelven complejos. Como ha mencionado que está usando un Arduino, consulte los enlaces en la parte inferior de la respuesta, casi todos tienen ejemplos específicos de Arduino.

Y una última cosa …
Permítanme aclarar que estos sensores dependen de las propiedades de nuestra Tierra. (El cálculo de la orientación utilizando acelerómetros depende del campo de gravedad de la Tierra y los magnetómetros dependen del campo magnético incorporado en la Tierra, solo el giroscopio es independiente ya que le proporciona una velocidad de rotación relativa). Entonces, su implementación de seguimiento de la cabeza no funcionaría en la ISS, la Luna, Marte o cualquier otro cuerpo celeste que no sea la Tierra.

Referencias y lecturas adicionales

  1. Para la fusión de sensores en el MPU6050 en particular, aquí hay una fuente concreta de información con código
    • kriswiner / MPU-6050
  1. Guías prácticas realmente geniales sobre cómo funcionan un acelerómetro y un giroscopio
    • Conceptos básicos del acelerómetro
    • Giroscopio – learn.sparkfun.com
  1. Algunos enlaces con ejemplos de código y aplicaciones
    • Orientación estable – IMU digital 6DOF + Arduino
    • Orientación de detección con el ADXL335 + Arduino
    • L3G4200D Giroscopio de eje triple + Arduino

Espero que esto ayude … 🙂

Gracias por A2A.

Si te refieres a la detección de movimiento en el equipo de realidad virtual, es posible obtenerlos de Arduino y MPU6050. Sin embargo, como se menciona en algunas de las otras publicaciones, no necesita usar ningún algoritmo de fusión de sensores ya que MPU 6050 tiene un módulo de procesamiento incorporado llamado DMP, que se encarga de los cálculos y proporciona los movimientos resultantes: rodar, lanzar directamente . Puede usar la interfaz SPI o I2C entre Arduino y MPU6050.

PD: Supongo que tu pregunta es sobre MPU6050. No estoy seguro de por qué mencionó MPU6950 en la sección de detalles y 6050 en la pregunta.

Tenga en cuenta que MPU6050 por sí solo no le dará la medida correcta de guiñada. Tendrá que usar una brújula magnética digital o chips que tengan uno integrado con la detección de movimiento.

Espero que esto ayude. Solo deje un comentario, si necesita más ayuda con las cosas.

Sí, es posible ejecutar con precisión el seguimiento de cabezales con MPU 6050.

Hay dos opciones que sugeriría:

a) Use el filtro DMP para MPU6050 = Esto le daría un ángulo de guiñada, inclinación y balanceo muy preciso utilizando el filtro Kalman interno que está presente en MPU. Puede encontrar el código en github desarrollado por Kristian Lauszus, TKJ Electronics 2012
TKJElectronics / Ejemplo-Sketch-for-IMU-inclusive-Kalman-filter

b) Agregue el magnetómetro HMC5883L a sus auriculares y aplique ya sea un filtro kalman o un filtro complementario sobre los datos obtenidos para obtener datos de guiñada perfectos. Estos datos de guiñada serían realmente muy confiables para sus otros trabajos futuros también. El repositorio de github mencionado anteriormente también le dará el código para este enfoque.
¡La mejor de las suertes!

Gracias por A2A
Si es posible.
No necesitaría ningún otro software específico para hacer esto, solo use el software Arduino.
Pero tienes que hacer algunas (pueden ser muchas) calibraciones.
Te recomendaría que primero hagas la simulación usando “procesamiento IDE”
(consulte: http://playground.arduino.cc/int …)
Espero que esto te ayude.

Echa un vistazo a esto también:
http: /planetkris.com/2014/12/easier-better-arduino-imu-head-tracker/

Intenta buscar en Google con más precisión, puedes encontrar algunos proyectos de bricolaje similares.

El seguimiento de la cabeza es posible con MPU 6050 utilizando algún algoritmo para convertir el marco de referencia local del acelerómetro en el marco de referencia global con un circuito de retroalimentación del giroscopio. Pero es realmente dudoso si es posible implementar algún cálculo complejo en Arduino debido a su velocidad de reloj limitada.

Puede ver el proyecto openshoe.org donde han hecho lo mismo para MPU 9150. También puede ver el github donde muchas personas han realizado este tipo de proyecto.