¿Por qué necesito un filtro Kalman?


61

Estoy diseñando un vehículo aéreo no tripulado, que incluirá varios tipos de sensores:

  • Acelerómetro de 3 ejes
  • Giroscopio de 3 ejes
  • Magnetómetro de 3 ejes
  • sensor de horizonte
  • GPS
  • ultrasonido orientado hacia abajo.

Un amigo mío me dijo que tendré que poner todos estos datos del sensor a través de un filtro Kalman, pero no entiendo por qué. ¿Por qué no puedo simplemente poner esto directamente en mi microcontrolador? ¿Cómo me ayuda el filtro de Kalman sobre los datos de mi sensor?

Respuestas:


52

Tu haces conectar todos estos sensores directamente a un microcontrolador. El filtro Kalman no es un filtro electrónico como un filtro LRC que va entre los sensores y el microcontrolador. El filtro Kalman es un filtro matemático implementado como rutina de software dentro del microcontrolador.

Los sensores que ha enumerado le dan al microcontrolador 14 o 15 números sin procesar cada vez que se actualizan.

Cuando vuelo un pequeño avión, lo que realmente quiero saber es su posición y orientación y qué tan lejos está del suelo: 7 números.

Necesito algo que me dé esos 7 números.

Idealmente, quiero una nueva estimación de esos 7 números cada vez a través de mi ciclo de control. Las actualizaciones de una vez por segundo que obtengo de mi GPS barato no son lo suficientemente rápidas. ( ¿A qué frecuencia necesita mi bucle de actualización de salida-sentido-cálculo-salida de quadcopter para mantenerse estable? me dicen que incluso 50 veces por segundo no será lo suficientemente rápido).

De alguna manera voy a tener que reducir esos 14 o 15 números en bruto que tengo, algunos de los cuales solo se actualizan ocasionalmente, en (estimaciones de) los 7 números que realmente quiero.

Como señaló Josh, hay muchas formas ad-hoc para convertir esos números sin procesar en datos utilizables. Cualquier rutina que convierta 15 números en 7 números puede describirse como un "filtro".

No tienes que usar el filtro óptimo. Pero usará algún tipo de filtro, es decir, algo que convierta de los 15 números de datos sin procesar que tiene en (estimaciones de) los 7 números que realmente desea.

El filtro de Kalman es, en algunas condiciones, el filtro "óptimo", la mejor manera de convertir esos datos en bruto en los 7 números que realmente quiero.

Puede tomar menos trabajo de su parte usar un filtro de Kalman que otra persona ya haya escrito y depurado, que escribir otro filtro desde cero, depurarlo y seguir agregando cosas hasta que sea utilizable, un filtro que inevitablemente resulta ser subóptimo.


28

La respuesta corta y sarcástica es "pruébalo sin uno". La mejor respuesta es un ejemplo: cuando tus acelerómetros dicen que estás a 10 grados de la vertical, pero tu giroscopio dice que no has girado lejos de la vertical, y tus magnetómetros informan un desplazamiento de 30 grados desde el norte, pero tu giroscopio dice 32 grados. ¿Cuál es el rumbo y la inclinación actuales?

Probablemente encontrará un millón de formas ad-hoc que parecen funcionar en un ejemplo, pero fallan en otros. El filtro de Kalman (filtro de Kalman extendido (EKF) para esta tarea) le proporcionará una forma rigurosa de responder estas preguntas. La calidad de las respuestas aún se está investigando, aunque el historial de EKF es muy bueno, pero al menos todos estarán de acuerdo en cuáles son las respuestas .


1
Exactamente la respuesta que estaba buscando. "Qué pasaría si no uso el filtro de Kalman". ¡Gracias!
Manav Kataria

22

Los datos del sensor son ruidosos. Si no lo filtra, su vehículo al menos actuaría de manera errática si fuera lo suficientemente estable como para volar. El filtrado, a través de un filtro Kalman o de otro modo, puede reducir el ruido cuando se realiza correctamente, mejorando la estabilidad a su vez.

Un filtro Kalman es un filtro particularmente poderoso. Toma un modelo del sistema y modelos de ruido tanto para el sistema como para sus sensores. Luego estima el estado del vehículo en función de una estimación de estado proporcionada y los controles aplicados en cualquier momento. Este estado estimado será más preciso de lo que informan los sensores.


8

También podrías usar filtros de partículas. Para la introducción básica a los filtros de partículas, puede echar un vistazo a los videos del profesor Thrun en Programación de un automóvil robótico.

http://www.youtube.com/watch?v=H0G1yslM5rc

http://www.youtube.com/watch?v=QgOUu2sUDzg

Los filtros de partículas son más robustos y tienen una probabilidad mucho menor del error de cierre del bucle, que ocurre comúnmente al implementar un EKF.

Los videos describen el funcionamiento de un filtro de partículas.


En general, no se prefieren las respuestas que contienen no más de un enlace. Si pudieras escribir un párrafo o dos en la esencia del video, sería bueno ...
Manishearth

Habla por ti mismo. Veo poca ganancia al restablecer la información en otro enlace. El enlace puede contener información que no conocía y alguien no necesita volver a escribirla para informarme. Puedo hacer clic y leer muy fácilmente, gracias.
Clavado3

8

Un filtro de Kalman es un algoritmo que se usa comúnmente en UAV para fusionar múltiples mediciones de sensores para proporcionar una estimación "óptima" de la posición y / u orientación del UAV. Por ejemplo, un filtro Kalman puede fusionar mediciones de acelerómetro, giroscopio y magnetómetro con una estimación de velocidad para estimar la inclinación, inclinación y balanceo del UAV.

Para obtener más información sobre los sensores y algoritmos utilizados en la estimación del estado de los UAV, pruebe el artículo independiente Fundamentos del vuelo de pequeñas aeronaves no tripuladas .

El artículo también enlaza con el código de Matlab que acompaña la implementación de los algoritmos de estimación de estado de UAV de Kalman Filter descritos.