TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: jgpeiro06 en 22 de Febrero de 2009, 18:02:11

Título: Filtro de Kalman
Publicado por: jgpeiro06 en 22 de Febrero de 2009, 18:02:11
Me he propuesto implementar un filtro de kalman. He buscado ejemplos en la red y he encontrado algunos programas como http://home.comcast.net/~michael.p.thompson/kalman/kalman_test.c donde puedo ver exactamente el código del filtro, las entradas y la salida. Este ejemplo parte de dos sensores (acelerometro y giróscopo) y no se que es exactamente la salida pero creo que es la posición.
Tengo un circuito que solo lleva un acelerometro de 3 ejes y solo se usa uno para detectar el movimiento. Para obtener la posición debo hacer una doble integral de la aceleración medida. El mínimo error constante en la medida de la aceleración se convertirá en un error exponencial en la posición y para evitar esto creo que se usan los filtros de kalman.
Mi pregunta es si el filtro de kalman puede funcionar para obtener la posición con un solo sensor de aceleración. También me gustaría saber si el filtro de kalman realiza la doble integral o es algo que hay que realizar después de filtrar, antes, o si la señal integrada hay que reintroducirla al filtro como realimentación... y como ultima cosa, en el ejemplo hay unas constantes que no se si son una aproximación del comportamiento de los sensores o un estado inicial del filtro...¿sabe alguien que son?
Bueno, un saludo
Título: Re: Filtro de Kalman
Publicado por: jfh900 en 22 de Febrero de 2009, 18:38:44
Necesitas 2 sensores distintos para que funcione el filtro de Kalman (en este caso acelerómetro y giroscópio). El programa que has puesto es un filtro de Kalman que actúa sobre los datos que se han grabado previamente en la primera matriz doble para poder probar el filtro.

Un saludo
Título: Re: Filtro de Kalman
Publicado por: jgpeiro06 en 22 de Febrero de 2009, 19:34:30
No se si te refieres a que cualquier filtro de kalman necesita mínimo dos sensores o o solo al del link que he comentado...mi idea no es usar directamente el código de kalman_test.c, solo lo comento como referencia y xq es el único código que he visto.

Título: Re: Filtro de Kalman
Publicado por: jfh900 en 22 de Febrero de 2009, 20:01:57
Veamos, el filtro de Kalman trabaja en dos etapas, en la primera realiza una estimación y en la segunda etapa corrige el error. En este caso para corregir la deriva del giróscopio se utiliza el acelerómetro o a la inversa. Si solo se dispone de un sensor hace falta conocer la varianza del error cometido por el sensor.

Un saludo
Título: Re: Filtro de Kalman
Publicado por: Nocturno en 22 de Febrero de 2009, 20:50:21
Aquí hay un ejemplo que creo que te va a venir muy bien:
http://www.todopic.com.ar/foros/index.php?topic=12748.msg203375#msg203375
Título: Re: Filtro de Kalman
Publicado por: Suky en 23 de Febrero de 2009, 00:36:32
El filtro Kalman predice los valores de los estados de un sistema a través de medidas pasadas y presente de la salida, la cual presenta ruido, minimizando la variancia del error del estado.
Para desarrollar un filtro Kalman, se debe modelar el sistema a partir de las leyes físicas que definen la dinámica. Este sistema será una aproximación del real, ya que no existe un modelo matemático perfecto del sistema, existen perturbaciones que no se pueden modelar de forma deterministica y los sensores no son perfectos.
A la pregunta si con la medición de una sola salida se puede usar Kalman, es si. A partir de medidas pasadas y presente, se estima el estado con el cual después podemos aplicar un compensador para mejorar la dinámica del sistema. Claro está que se necesita conocimiento de control realimentado para desarrollar algo así.
Si estas interesado tengo algunos apuntes sobre la teoría de filtros Kalman para que veas mas o menos de que se trata.
Título: Re: Filtro de Kalman
Publicado por: gera en 23 de Febrero de 2009, 02:16:10
Suky, muchas gracias por la explicacion. La verdad q no habia sentido nunca del filtro kalman, y ahora q me entero de su existencia me interesa mucho. Si no es molestia, podrias subir esos apuntes?
Gracias!
Título: Re: Filtro de Kalman
Publicado por: Renatox_ en 23 de Febrero de 2009, 02:45:50
Hola, una pregunta, cual serían las ventajas de usar un filtro kalman en lugar de uno comun y corriente como por ejm un Butterwordh de tercer orden, que depende de su entrada actual y de tres entradas y salidas pasadas, además tiene una atenuacion moderada del ruido de 60db/dec y su mayor inconveniente el desfase entre la entrada y salida.

saludos.
Título: Re: Filtro de Kalman
Publicado por: Suky en 23 de Febrero de 2009, 03:16:53
Aqui subo los apuntes que comente, aclaro que hay que tener conocimientos de sistemas de control.

Renatox_. Son dos cosas muy distintas, el filtro de Kalman es para estimar estados de un sistema discreto a partir de la salida contaminada con ruido.
Butterworrdh es para procesamiento de señales.-
Título: Re: Filtro de Kalman
Publicado por: Suky en 23 de Febrero de 2009, 03:24:26
Otro apunte y ejemplo hecho en Matlab ejemplificando el uso.
Título: Re: Filtro de Kalman
Publicado por: jgpeiro06 en 23 de Febrero de 2009, 06:25:04
Citar
...Butterwordh de tercer orden...
Esa fue mi primera opcion. Trabaja bastante tiempo con filtros IIR para intentar eliminar la componente constante antes, entre y despues de las dos integrales, pero nunca llegue a conseguir nada adecuado. El error se acumulaba tan rapido que para eliminarlo tenia que poner filtros tan selectivos que al final la señal de salida no era sencilla de reconocer. Mi conclusion fue que los filtros modificaban la fase de todas las componentes de la señal en la banda de paso y esto modificaba su forma de onda.

Citar
apuntes sobre la teoría de filtros Kalman
Ya los he descargado y voy a hecharles un ojo. Soy estudiante de teleco y este año tengo una asignatura de control, quiero decir que no es que sea un experto en el tema, pero tengo una pequeña base...
Título: Re: Filtro de Kalman
Publicado por: xavimatch en 18 de Febrero de 2010, 08:13:17
Hola:
Estoy trabajando bastante con el filtro de Kalman, sólo que con sistemas no lineales. Estoy intentando a través de una sóla señal reproducir las que yo quiera mediante la técnica bootstrap, el caso es que hay mucho escrito para aplicarlo a sistemas lineales y no veo nada para sistemas no lineales, ¿alguien me podría echar una mano?
 :lol:
Título: Re: Filtro de Kalman
Publicado por: Juanma214 en 08 de Marzo de 2010, 21:53:03
Hola:
Estoy trabajando bastante con el filtro de Kalman, sólo que con sistemas no lineales. Estoy intentando a través de una sóla señal reproducir las que yo quiera mediante la técnica bootstrap, el caso es que hay mucho escrito para aplicarlo a sistemas lineales y no veo nada para sistemas no lineales, ¿alguien me podría echar una mano?

Hasta donde lei, para sistemas no lineales, se utiliza en Filtro extendido de Kalman, en el cual se "linealiza" a la funcion dentro de un area de interes (derivadas parciales y evaluadas en un punto).
Actualmente estoy leyendo Fundamentals of Statistical Signal Processing (solo consegui el libro de estimacion), que trata sobre eso. Estoy intentando aplicarlo en la prediccion y estimacion optima (minima varianza) de un puntero laser, tomado desde una webcam.

Kalman tiene como contras: se requiere del modelo del sistema y que el ruido sea Gaussiano.

Como determinaste la matriz de covarianza? Como te aseguraste que el ruido sea gaussiano?
Algo como este estilo?
http://en.wikipedia.org/wiki/Estimation_of_covariance_matrices

Saludos!