¿Cómo elijo los parámetros de un filtro Kalman?


8

Supongamos que quiero rastrear la posición de un automóvil en 2D. Lo que obtengo como datos del sensor es mi posición actual. Entonces mi estado es

x=(xyx˙y˙)

donde es la posición en m lejos de algún punto predefinido, es la velocidad en m / s en el momento de inicio y es la aceleración en . Las medidas sonxRx˙Rx¨Rm/s2

z=(x(M)y(M))

Lo que puedo elegir es mi aceleración en cada paso de tiempo (los pasos de tiempo tienen la longitud ):it

u=(x¨(u)y¨(u))

Como el filtro de Kalman es un filtro lineal, mi modelo de estado es:

x(P)=Ax+Bu

La medición depende del estado, con algo de ruido :v

z=Hx+v

con , . Como uno puede descomponer la aceleración / velocidad en las direcciones y la ecuación para la nueva posición esAR4×4HR2×4

xnew(t)=x+x˙t+0.5x¨t2ynew(t)=y+y˙t+0.5y¨t2x˙new(t)=x˙+x¨ty˙new(t)=y˙+y¨t

Entonces, dado nuestro modelo de estado, obtenemos:

x(P)=(10t0010t00100001)Aix+(0.5t2000.5t2t00t)Biui
  1. ¿Es este hasta ahora un escenario / enfoque razonable para el filtro de Kalman?

  2. ¿Cómo elijo la matriz de covarianza de incertidumbre inicial / el estado inicial ? He oído que uno hace que los valores de la matriz sean "grandes", sea lo que sea que eso signifique. Por ejemplo, si se trata de una matriz diagonal para algunos ? Por ejemplo, ya que el diámetro de la tierra es aproximadamente y ya que ir a más de nunca va a suceder para un automóvil.P0R4×4x

    P0=(a10000a20000a30000a4)
    aR+a1=a2=2000000040000 kma3=a4=90324 km/h

    Para el parámetro de estado inicial, esperaría dos pasos de tiempo:

    x0=(x1(M)y1(M)x1(M)x2(M)y1(M)y2(M))

Paso de predicción

La predicción de estado funciona como anteriormente:

xi+1(P)=Aixi+Biui

Predicción de covarianza:

(P)Pi+1(P)=APiAT+QwithQR4×4.
  1. ¿De dónde obtengo la covarianza de error de proceso ? ¿Qué propiedades tiene que tener? Supongo positivo definitivo? ¿Qué significa esta matriz?Q

Paso de innovación

Innovación, que compara la medición con la predicción:

y~i+1=zi+1Hxi+1(P)
  1. (resuelto) : ¿De dónde obtengo la matriz de observación ? Qué significa eso?HR2×4

EDITAR :

Lo tengo. En mi ejemplo, ya que codifica la relación entre el estado y la medición.

H=(10000100),

Covarianza de innovación:

Si+1=HPi+1(P)HT+R

Para la covarianza de error de medición tengo que saber algo sobre la forma en que funcionan mis sensores. Supongo que generalmente será una matriz diagonal, ya que los sensores serán independientes (?).RR2×2

Kalman Gain:

Ki+1=Pi+1(P)HTSi+11

Ahora, finalmente, el estado y la actualización de covarianza:

xi+1=xi+1(P)+Ki+1y~
Pi+1=(IKi+1H)Pi+1(P)

Fuentes:


martin-thoma.com/kalman-filter es un artículo que escribí basado en esta pregunta y las respuestas.
Martin Thoma

Consulte nuestros dos documentos en la edición de diciembre de 2016 de la revista SADHANA adjunta. Prof.MRAnanthasayanam.
ANANTHASAYANAM

@ANANTHASAYANAM: He convertido tu respuesta en un comentario. Sería bueno si tiene una respuesta en esos documentos para proporcionar enlaces a ellos.
Peter K.

Respuestas:


5

¿Es este hasta ahora un escenario / enfoque razonable para el filtro de Kalman?

Respuesta 1: Sí, su modelo se ve razonable. Sin embargo, estás tratando la aceleración como constante. Si va a cambiar en su experimento, debe incluirlo en la matriz de error su sistema .Q

¿Cómo elijo la matriz de covarianza de incertidumbre inicial / el estado inicial ?P0R4×4x

Respuesta 2: es su covarianza de estado inicial . Eso expresa cuánto sabe sobre la estimación inicial del estado . Si no tiene idea, es habitual configurar donde es grande. Ver, por ejemplo, esta respuesta que establece .P0x0

P0=σ2I4
σ2σ2=1000

¿De dónde obtengo la covarianza de error de proceso ? ¿Qué propiedades tiene que tener? Supongo positivo definitivo? ¿Qué significa esta matriz?Q

Respuesta 3: Esta matriz expresa su error del sistema. Las entradas en esta matriz representan la covarianza de los valores correspondientes en su modelo de sistema. Si supone, por ejemplo, que la aceleración es tan constante como lo hizo, pero que va a cambiar en el mundo real, entonces puede incluir aquí la covarianza correspondiente.

Aparte de eso, siempre es una buena idea experimentar mucho con sus matrices yHacer que más grande dependerá más de sus datos en vivo, hacer que más grande dependerá más de su predicción. Rara vez un modelo es perfecto sin sintonizar.QPQP


¿Pensé que podría ajustar el en cada paso de tiempo y así ajustar la aceleración en cada paso? ui
Martin Thoma

1
Respuesta 2: ¿Pensé que ya codificaría mi error de medición y codificaría la incertidumbre actual sobre el estado? RP
Martin Thoma

@ MartinThoma 1: ¿Pensé que habías dicho que solo tenías mediciones de distancia? ¿Cómo está obteniendo la aceleración si no puede medirla? 2: tienes razón. es su covarianza de estado inicial y es la covarianza de estado actual. En general, es independiente de cualquier medida. Según su ecuación ( ) [que acabo de etiquetar], a menos que o varíen en el tiempo, evolucionará independientemente de cualquier otra cosa que suceda en el sistema. P0PkPkPAQP
Peter K.

2
@Emiswelt: Tu respuesta 2 me parece incorrecta. La pregunta era ¿Cómo elijo la matriz de covarianza de incertidumbre inicial? que no se refiere al error de medición?
Peter K.

2
@Emiswelt: OK. He editado Avísame si está bien. Tengo una opinión ligeramente diferente sobre el punto 3 ... lo que me lleva a volver a pensar el punto 1 ... :-) Dejaré que se estire un poco antes de componer una respuesta.
Peter K.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.