Cálculo de la posición actual con el acelerómetro (IMU)

Tras la llegada del IMU de 5 grados de libertad (LINK) puedo empezar a desarrollar el código que me permitirá calcular en todo momento la posición del cuatricoptero.

Con este aparatito tengo un acelerómetro de 3 ejes, un giroscopio de 2 ejes y un termómetro que de momento no usaré para nada.

La teoría es que el gestor de posición comprobará cada ciertos milisegundos los valores marcados por el IMU y calculará la posición actual.

Esta posición se podrá consultar a través de 3 propiedades públicas que marcarán el Pitch, el Yaw y el Roll.

En una primera instancia solo voy a usar el acelerómetro para calcular la posición, más adelante añadiré los valores del giroscopio al algorítmo para afinar el cálculo. Además no voy a calcular el Yaw ya que no tengo muy claro que pueda hacerlo con esta IMU. Creo que lo suyo para esto sería una brujula digital pero como no es una cosa grave creo que de momento no hace falta.

Hay varios métodos para calcular la posición del aparato. Yo me voy a basar en este tutorial: A Guide To using IMU (Accelerometer and Gyroscope Devices) in Embedded Applications.

El bucle principal del programa hace lo siguiente

  1. Leemos los valores del acelerómetro
  2. Transformamos esos valores en G’s
  3. Normalizamos los valores obtenidos
  4. Calculamos los ángulos Pitch y Roll

El código tiene algunas constantes referentes a voltajes y sensibilidades que he sacado del DataSheet del IMU y que luego he ido retocando a mano tras ir probando.

Tras un par de días trasteando creo que he llegado a obtener los valores de una forma bastante precisa.

Un comentario en «Cálculo de la posición actual con el acelerómetro (IMU)»

Los comentarios están cerrados.