Un filtro alfa beta (también llamado filtro alfa-beta, filtro fg o filtro gh [1] ) es una forma simplificada de observador para aplicaciones de estimación, suavizado de datos y control. Está estrechamente relacionado con los filtros de Kalman y con los observadores de estado lineal utilizados en la teoría de control . Su principal ventaja es que no requiere un modelo de sistema detallado.
Un filtro alfa beta presupone que un sistema se aproxima adecuadamente mediante un modelo que tiene dos estados internos, donde el primer estado se obtiene integrando el valor del segundo estado a lo largo del tiempo. Los valores de salida del sistema medidos corresponden a las observaciones del primer estado del modelo, más las perturbaciones. Esta aproximación de orden muy bajo es adecuada para muchos sistemas simples, por ejemplo, sistemas mecánicos donde la posición se obtiene como la integral temporal de la velocidad. Con base en una analogía de sistema mecánico, los dos estados pueden denominarse posición x y velocidad v . Suponiendo que la velocidad permanece aproximadamente constante durante el pequeño intervalo de tiempo ΔT entre mediciones, el estado de posición se proyecta hacia adelante para predecir su valor en el siguiente tiempo de muestreo utilizando la ecuación 1.
Dado que la variable de velocidad v se presume constante, su valor proyectado en el próximo tiempo de muestreo es igual al valor actual.
Si se conoce información adicional sobre cómo una función de conducción cambiará el estado v durante cada intervalo de tiempo, se puede modificar la ecuación 2 para incluirla.
Se espera que la medición de salida se desvíe de la predicción debido al ruido y a los efectos dinámicos no incluidos en el modelo dinámico simplificado. Este error de predicción r también se denomina residual o innovación , según las interpretaciones de filtrado estadístico o de Kalman .
Supongamos que el residuo r es positivo. Esto podría deberse a que la estimación anterior de x fue baja, la estimación anterior de v fue baja o a una combinación de ambas. El filtro alfa beta toma constantes alfa y beta seleccionadas (de las cuales el filtro obtiene su nombre), usa alfa multiplicado por la desviación r para corregir la estimación de la posición y usa beta multiplicado por la desviación r para corregir la estimación de la velocidad. Un factor ΔT adicional sirve convencionalmente para normalizar las magnitudes de los multiplicadores.
Las correcciones pueden considerarse pequeños pasos a lo largo de una estimación de la dirección del gradiente. A medida que estos ajustes se acumulan, el error en las estimaciones de estado se reduce. Para la convergencia y la estabilidad, los valores de los multiplicadores alfa y beta deben ser positivos y pequeños: [2]
El ruido sólo se suprime si , de lo contrario el ruido se amplifica.
Los valores de alfa y beta suelen ajustarse experimentalmente. En general, las ganancias de alfa y beta más altas tienden a producir una respuesta más rápida para el seguimiento de cambios transitorios, mientras que las ganancias de alfa y beta más pequeñas reducen el nivel de ruido en las estimaciones de estado. Si se encuentra un buen equilibrio entre el seguimiento preciso y la reducción de ruido, y el algoritmo es eficaz, las estimaciones filtradas son más precisas que las mediciones directas. Esto motiva que se denomine al proceso alfa-beta un filtro .
Inicializar.
Actualización. Repetir para cada paso de tiempo ΔT:
El filtro Alfa Beta se puede implementar en C [3] de la siguiente manera:
#include <stdio.h> #include <stdlib.h> int main () { flotante dt = 0.5 ; flotante xk_1 = 0 , vk_1 = 0 , a = 0.85 , b = 0.005 ; flotar xk , vk , rk ; flotar xm ; mientras ( 1 ) { xm = rand () % 100 ; // señal de entrada xk = xk_1 + ( vk_1 * dt ); vk = vk_1 ; rk = xm - xk ; xk += a * rk ; vk += ( b * rk ) / dt ; xk_1 = xk ; vk_1 = vk ; printf ( "%f \t %f \n " , xm , xk_1 ); dormir ( 1 ); } }
Las siguientes imágenes muestran el resultado del programa anterior en formato gráfico. En cada imagen, el trazo azul es la señal de entrada; la salida es roja en la primera imagen, amarilla en la segunda y verde en la tercera. En las dos primeras imágenes, la señal de salida es visiblemente más suave que la señal de entrada y carece de picos extremos, como los que se observan en la entrada. Además, la salida se mueve en una dirección de gradiente estimada de la entrada.
Cuanto mayor sea el parámetro alfa, mayor será el efecto de la entrada x y menor será la amortiguación observada. Un valor bajo de beta es eficaz para controlar picos repentinos de velocidad. Además, a medida que alfa aumenta más allá de la unidad, la salida se vuelve más áspera y desigual que la entrada. [3]
Los observadores de estado más generales, como el observador de Luenberger para sistemas de control lineal, utilizan un modelo de sistema riguroso. Los observadores lineales utilizan una matriz de ganancia para determinar las correcciones de estimación de estado a partir de múltiples desviaciones entre las variables medidas y los resultados previstos que son combinaciones lineales de variables de estado. En el caso de los filtros alfa beta, esta matriz de ganancia se reduce a dos términos. No existe una teoría general para determinar los mejores términos de ganancia del observador y, por lo general, las ganancias se ajustan experimentalmente para ambos.
Las ecuaciones del observador lineal de Luenberger se reducen al filtro alfa beta aplicando las siguientes especializaciones y simplificaciones.
Un filtro de Kalman estima los valores de las variables de estado y los corrige de manera similar a un filtro alfa beta o a un observador de estado. Sin embargo, un filtro de Kalman lo hace de una manera mucho más formal y rigurosa. Las principales diferencias entre los filtros de Kalman y los filtros alfa beta son las siguientes.
Un filtro Kalman diseñado para rastrear un objeto en movimiento utilizando un modelo de dinámica de objetivo (proceso) de velocidad constante (es decir, velocidad constante entre actualizaciones de medición) con la covarianza del ruido del proceso y la covarianza de medición mantenidas constantes convergerá a la misma estructura que un filtro alfa-beta. Sin embargo, la ganancia de un filtro Kalman se calcula de forma recursiva en cada paso de tiempo utilizando las estadísticas de error de medición y proceso asumidas, mientras que la ganancia del filtro alfa-beta se calcula ad hoc.
El filtro alfa-beta se convierte en un filtro Kalman de estado estable si los parámetros del filtro se calculan a partir del intervalo de muestreo , la varianza del proceso y la varianza del ruido de esta manera [4] [5]
Esta elección de parámetros de filtro minimiza el error cuadrático medio.
La varianza de la innovación en estado estacionario se puede expresar como:
Un miembro más simple de esta familia de filtros es el filtro alfa, que observa solo un estado:
con el parámetro óptimo calculado así: [4]
Este cálculo es idéntico para un promedio móvil y un filtro de paso bajo . El suavizado exponencial es matemáticamente idéntico al filtro alfa propuesto.
Cuando la segunda variable de estado varía rápidamente, es decir, cuando la aceleración del primer estado es grande, puede ser útil extender los estados del filtro alfa beta en un nivel. En esta extensión, la segunda variable de estado v se obtiene a partir de la integración de un tercer estado de aceleración , de manera análoga a la forma en que se obtiene el primer estado al integrar el segundo. Se agrega una ecuación para el estado a al sistema de ecuaciones. Se selecciona un tercer multiplicador, gamma , para aplicar correcciones a las nuevas estimaciones del estado a . Esto produce las ecuaciones de actualización alfa beta gamma . [1]
Son posibles extensiones similares a órdenes superiores adicionales, pero la mayoría de los sistemas de orden superior tienden a tener interacciones significativas entre los múltiples estados, [ cita requerida ] por lo que aproximar la dinámica del sistema como una cadena integradora simple tiene menos probabilidades de resultar útil.
El cálculo de los parámetros óptimos para el filtro alfa-beta-gamma es un poco más complejo que para el filtro alfa-beta: [5]