Hola,
Un ejemplo muy interesante de integración, lo tienes al usar un gyroscopio.
Los Gyros te entregan (analógicos) una tensión proporcional a la velocidad angular.
Si derivamos la posicion en el tiempo, obtenemos la velocidad a la que nos hemos desplazado:
d x = v x
entonces, el angular rate que es la velocidad a la que desplazamos el gyro (la que nos da a la salida en forma de tensión), nos va a dar la derivada de la posición angular del gyro (alpha) que será:
d alpha = angular rate = salida gyro
Tenemos la relación entre la posición del gyro y su velocidad de desplazamiento angular, entonces para conocer la posición en un determinado estado del tiempo, necesitamos integrar:
∫ angular rate = ∫ salida gyro = alpha
Y ya tendríamos el ángulo que se ha desplazado el gyro en el intervalo de tiempo de la integración.
Pero la cosa no es tan sencilla tampoco.
Esta es la salida de un Gyro que se ha girado 90º a la izquierda, retorno a la posición inicial, giro 50º a la derecha y retorno a la posición inicial:
En rojo es un filtro pasobajo aplicado a los datos leídos.
Lo que tenemos, son las velocidades angulares en cada momento + más el drift (deriva) del gyro y algo de ruido.
El siguiente paso sería normalizarlo sobre un eje 0 y así tener velocidades negativas y positivas:
El siguiente paso sería ir integrando todos los puntos que vayamos obteniendo en la gráfica con respecto a la posición en el tiempo ( integramos, porque estamos usando la velocidad y queremos el desplazamiento angular )
Una integración simple podría ser aplicar
integration(i) = integration (i-1) + val(i)
en nuestro caso:
gyroVal = gyroVal + rawGyro*(dt)
El valor de la posición en el tiempo t, será el valor de la posición anterior + ( la velocidad angular leída * el tiempo transcurrido desde la última muestra) y vamos obteniendo nuestra gráfica en el tiempo con nuestras porciones dentro de la integral.
Un ejemplo de las sumas de las porciones en una función respento al tiempo , para una integral de Riemman:
Pero esto no nos compensaría el drift de nuestro gyro, aún podríamos darle una vuelta de tuerca más y sobre los valores obtenidos, pues por ejemplo hayar medias cada 5 valores e ir restando un pequeño offset que hayamos medido inicialmente, o que midamos en condiciones estáticas cada cierto tiempo, para compensar este tipo de desviación, el gyro es el rojo, observad la desviación:
Y aquí es cuando podemos usar más métods complejos de integración (que no lo son tanto) como un Runge-Kutta de 4º orden y eliminarnos parte del jitter de los datos obtenidos
En nuestro caso, la aplicación sería:
integration(i) = integration(i-1) + 1⁄6 ( vali-3 + 2 vali-2 + 2 vali-1 + vali)
Y obtendríamos ya normalizando a grados, algo parecido a esto:
Y con un drift menor :
Ahora toca corregir ese drift que aún queda y que ya es parte de otro post.
Una pista: los acelerómetros no tienen drift y pueden compensar el del Gyro, pero el gyro tiene que compensar las aceleraciones si el aparato está en movimiento..... Kalman, PID...
Salu2