Capítulo 17
Predicción óptima en procesos con perturbaciones aleatorias (filtro de Kalman)

17.1 Preliminares

El concepto de “observador”, introducido en el vídeo [ obs(13:55)], cuando las entradas son ruido blanco dio lugar a lo que se denomina Filtro de Kalman, abordado en esta sección1 . Si el concepto de observador del estado no le es familiar al lector, se recomienda visionar el vídeo [ obs(13:55)] que motiva el problema que se resuelve a continuación.

[580: obsruidoObservadores del estado: análisis de efecto de ruidos de proceso y medida *** PIC 08:57

17.2 El filtro de Bayes recursivo (motivación y ejemplo ‘tigre oculto’)

Como ejemplo motivador de la idea sobre un problema elemental, en esta sección se llegará a la fórmula más sencilla de filtro recursivo bayesiano recursivo a partir del caso de un ‘tigre oculto’ que ya sirvió para motivar cuestiones relacionadas con probabilidad conjunta, condicional, marginal, etc. en la revisión de conceptos básicos de estadística, ver vídeos [ tiger1(20:57)], [ tiger2(15:52)] y [ tiger3(21:57)].

[581: tiger4Tigre oculto (4): Probabilidad condicional y fórmula de Bayes DOS rugidos ** PIC 14:19 *Link to English version

[582: tiger5Tigre oculto (5): fórmula Bayes N rugidos (N arbitrario) NO recursiva *** PIC 17:46 *Link to English version

[583: tiger6brTigre oculto (6): fórmula Bayes Recursiva (demostración) **** PIC 17:31 *Link to English version

[584: tiger7rbsTigre oculto (7): fórmula Bayes Recursiva (simulación Matlab) *** PIC 17:44 *Link to English version

17.3 Predicción óptima en procesos gaussianos en tiempo discreto

Nota (prerrequisitos): Para comprender en su totalidad los desarrollos teóricos del filtro de Kalman a continuación, es muy recomendable el revisar los conceptos básicos sobre procesos estocásticos lineales discretos (Sección 7.2) y sobre predicción estadística, discutidos en la Sección B.5.

[585: kalteoPredicción óptima en sistemas dinámicos lineales: Filtro de Kalman tiempo discreto (demostración) **** PIC 15:46

Nota: El filtro de Kalman puede ser usado para estimar la media de una variable. Por ejemplo, planteando el modelo mk+1 = mk (ec. de estado), yk = mk + vk (ec. de salida) se está diciendo que la media de y es mk y se mantiene constante, y a partir de un estimado inicial a priori puede refinarse con futuras observaciones. Este enfoque, en el contexto de “test estadístico de media” en detección de fallos, se desarrolla en el vídeo [ thmdkal(15:25)], cuya visualización, si se dispone de tiempo, se aconseja en este momento. PIC

A continuación se presentan unos primeros ejemplos Matlab de uso del filtro de Kalman; la Sección 17.4 presenta ejemplos adicionales.

[586: tubokalFiltro de Kalman estacionario: ejemplo estimación temperatura de gas en tubería (Matlab) **** PIC 12:43

[587: kalmlFiltro de Kalman: ejemplo Matlab (filtro no estacionario) **** PIC 33:33

Nota 1: El filtro de Kalman está muy relacionado con los mínimos cuadrados recursivos en identificación de 𝜃 dado un modelo y = xT𝜃, a partir de series de datos (y1,y2,), (x1,x2,). En efecto, el filtro de Kalman es el estimador óptimo del proceso lineal 𝜃k+1 = 𝜃k (suponer parámetros constantes, esta vez entendido como una ecuación de estado), y = xT𝜃 (entendido como una ecuación de salida donde el “estado” es 𝜃). Los vídeos [ mcr1(11:18)] y [ mcr2(10:51)] discuten dicha relación en detalle. Suponiendo un hipotético ruido de proceso 𝜃k+1 = 𝜃k + wk ello permite incorporar un “olvido” de la información pasada (discutido en el vídeo [ mcr2(10:51)]). PIC

Nota 2: El observador óptimo estacionario (filtro de Kalman dlqe) y el controlador óptimo de horizonte infinito dlqr están muy relacionados con lo que se conoce en la literatura como control óptimo H2. Específicamente sobre la parte de observación (observador H2), el vídeo [ h2obsml(11:31)] discute (con un ejemplo de código) la equivalencia entre cierto problema de optimización H2 y el filtro de Kalman estacionario. Si cerramos el bucle (principio de separación), La equivalencia entre “Kalman+lqr” (estacionario) y control H2 se ilustra también mediante un breve ejemplo Matlab en el vídeo [ h2lqrml(27:21)]. ***** PIC

17.3.1 Predicción óptima no causal: suavizado RTS

[588: rtsmSuavizado no causal en representación interna (RTS smoother) **** PIC 14:05

17.4 Casos de estudio Kalman/RTS

17.4.1 Caso 1: estimación de fuerza aplicada sobre un sistema masa-muelle

[589: estfml1Estimación de fuerza de entrada a un sistema mecánico (1): planteamiento del problema y filtro de Kalman estacionario *** PIC 10:32

[590: estfml2Estimación de fuerza de entrada a sistema mecánico (2): Kalman no estacionario y suavizado RTS **** PIC 11:00

17.4.2 Caso 2: eliminación de tendencias (rampa)

Esta sección usa un modelo de generador de perturbaciones ([ ress(10:57)]) para eliminar una “tendencia” en forma de rampa de una señal, comparando diferentes enfoques. La comparación con la asignación de polos (vídeo [ drgenml(14:08)]) se deja al lector como ejercicio propuesto.

[591: rampdetrEliminación de derivas y rampas (1): detrend *** PIC 07:57

[592: rampkalesEliminación de derivas y rampas (2): filtro de Kalman estacionario **** PIC 12:38

[593: rampkalneEliminación de derivas y rampas (3): filtro de Kalman no estacionario **** PIC 06:49

[594: ramprtsEliminación de derivas y rampas (4): suavizado Rauch-Tung-Striebel no causal **** PIC 06:00

17.4.3 Caso 3: ejemplo donde NO funciona bien

[595: kalmalComparación observador óptimo (Kalman) versus derivación numérica en sistema de 2o orden: resultados inesperados **** PIC 14:57

17.5 Estimación aproximada en procesos no lineales

[596: normnlDeformación de distribuciones de probabilidad en sistemas no-lineales: ejemplo Matlab (estático) *** PIC 10:45

17.5.1 Filtro de Kalman extendido

[597: ekfteoFiltro de Kalman extendido para sistemas no lineales: teoría **** PIC 10:02 *Link to English version

[598: ekfml1Ejemplo filtro Kalman extendido (péndulo, I): modelado y linealización Matlab ** PIC 07:23

[599: ekfml2Ejemplo Filtro Kalman Extendido (II): simulación Matlab y comparación de opciones **** PIC 10:52

17.5.2 Filtro de Kalman-Uhlmann “unscented”

[600: errekfAnálisis de error del filtro de Kalman extendido (serie de Taylor) **** PIC 09:50

[601: ukft1Transformación unscented (Uhlmann-Julier): idea básica *** PIC 13:05

[602: sigptmlTransformación unscented (generación de sigma-points): ejemplo Matlab *** PIC 08:23

[603: ukft2Filtro Unscented para sistemas dinámicos no-lineales **** PIC 11:49

[604: ukf1mlPropagación de media y varianza en no-linealidades: ejemplo Matlab 1D *** PIC 07:49

[605: ukf2mlPropagación de media y varianza en no-linealidades: Unscented Transform, ejemplo Matlab 2D *** PIC 05:35

Transformación unscented escalada

[606: ukfescTransformación unscented escalada **** PIC 10:43

[607: ukfesc2Transformación unscented escalada: reescritura de pesos y eliminación función auxiliar ***** PIC 16:16

Ejemplo

[608: ekfukfmlComparación Kalman Extendido/Unscented: ejemplo péndulo no lineal Matlab *** PIC 04:07

17.5.3 Filtro de Partículas

No dispongo de material teórico sobre “particle filter” (simulación Monte-Carlo), que también es muy utilizado en este tipo de problemas cuando las no-linealidades son abruptas o/y las distribuciones de probabilidad usadas son no gaussianas. Se remite al lector a la amplia bibliografía sobre estos temas disponible en otras fuentes.

Una introducción “básica” (en inglés) muy fácil de entender, sin prácticamente fórmulas, aparece en https://www.youtube.com/watch?v=aUkBa1zMKv4

[609: pfmlFiltro partículas (control syst. toolbox matlab): ejemplo péndulo no lineal *** PIC 09:55

El filtro es muy usado en robótica (localización con sensores imperfectos):

https://www.youtube.com/watch?v=mBlsqSI7c1g

https://idecona.ai2.upv.es/content/localizaci\%C3\%B3n-robots-monte-carlo