Return to Video

cs373_hw2_05_p_programming-exercise

  • 0:00 - 0:03
    Vamos ahora a nuestro ejercicio de programación.
  • 0:03 - 0:08
    Y quiero que programes exactamente lo que acabo de hablar.
  • 0:08 - 0:11
    Nos dan un mundo de dos dimensiones
  • 0:11 - 0:18
    donde se observa en 2D mediciones de un objeto en movimiento
  • 0:18 - 0:21
    con una velocidad desconocida pero fija.
  • 0:21 - 0:27
    Y usando un vector de estado de este tipo, me gustaría que implementes un filtro de Kalman.
  • 0:27 - 0:30
    Ahora, este filtro Kalman ahora cuenta con 4 variables de estado
  • 0:30 - 0:33
    mientras que la que usamos antes tenia 2 variables de estado.
  • 0:33 - 0:36
    Yo te daré todo el código para el filtro de Kalman,
  • 0:36 - 0:52
    pero quiero que crees el vector de estado x, el movimiento u, P, F, H,R e I,
  • 0:52 - 0:57
    que son todas aquellas variables que definen el filtro de Kalman.
  • 0:57 - 1:01
    Comience con la tarea que teníamos en 2D
  • 1:01 - 1:05
    y hazla para que funcione en 4D.
  • 1:05 - 1:10
    Esta es exactamente la misma clase matrix que escribí antes.
  • 1:10 - 1:14
    Este es el procedimiento del filtro de Kalman.
  • 1:14 - 1:18
    Vamos a recorrer nuestras medidas y a aplicar las ecuaciones del filtro de Kalman.
  • 1:18 - 1:21
    Debo señalar que hay una ligera diferencia con el código que te di anteriormente
  • 1:21 - 1:24
    donde he insertado Z.transpose().
  • 1:24 - 1:29
    Esto hace que sea un poco más fácil trabajar con las mediciones multidimensionales que la forma en que lo había hecho antes.
  • 1:29 - 1:33
    Pero usted no tiene que prestar atención a esto. Se acaba de arreglar. Había una especie de bug antes.
  • 1:33 - 1:40
    Y desplazandose hacia abajo, la salida de la rutina del filtro de Kalman será una x y una P.
  • 1:40 - 1:43
    En nuestro ejemplo, las mediciones serán una secuencia de mediciones
  • 1:43 - 1:46
    ahora en dos espacios de dimensión, en x e y.
  • 1:46 - 1:49
    Mira las x 5, 6, 7, 8, 9, 10.
  • 1:49 - 1:53
    Las y's van 10, 8, 6, 4, 2.
  • 1:53 - 1:56
    Usted puede imaginar lo que es la regularidad y la velocidad.
  • 1:56 - 2:00
    Se parte con una dt de 0.1.
  • 2:00 - 2:04
    Esto significa que cuando se va desde 5 a 6, la velocidad es en realidad 10, no 1.
  • 2:04 - 2:09
    No se lo diremos al sistema, pero vamos a decir al sistema nuestra localización inicial x,y, que es 4.
  • 2:09 - 2:16
    Eso va muy bien en 5, 6, 7, y 12. Que combina muy bien con 10, 8 y 6.
  • 2:16 - 2:20
    El vector de estado inicial que te doy, es la inicial x e y.
  • 2:20 - 2:24
    y 0,0 para las dos velocidades desconocidas.
  • 2:24 - 2:29
    Y el vector de movimiento, simplemente por rellenarlo, serán sólo [0, 0, 0, 0].
  • 2:29 - 2:31
    No tenemos ningún movimiento externo.
  • 2:31 - 2:35
    Eso es un poco confuso, porque en realidad hay movimiento en el propio sistema,
  • 2:35 - 2:38
    pero esto es más como un cambio externo del movimiento
  • 2:38 - 2:41
    como si alguien golpeará el objeto con una fuerza externa.
  • 2:41 - 2:43
    Así que es [0, 0, 0, 0], por favor no lo cambie.
  • 2:43 - 2:46
    P es la incertidumbre inicial,
  • 2:46 - 2:51
    y quiero que lo inicialice por lo que la incertidumbre de las coordenadas x,y es 0,
  • 2:51 - 2:56
    pero el término covarianza de las velocidades es 1000,
  • 2:56 - 2:59
    lo que indica que realmente no conocemos la velocidad inicial.
  • 2:59 - 3:01
    Acabamos de conocer la posición inicial.
  • 3:01 - 3:04
    Quiero que ponga la matriz F.
  • 3:04 - 3:07
    Quiero que diseñe una matriz H que es una matriz de proyección
  • 3:07 - 3:10
    desde el espacio de estados de 4 dimensiones a 2 dimensiones,
  • 3:10 - 3:14
    reflejando el hecho de que sólo podemos observar las dos primeras variables de estado, x e y,
  • 3:14 - 3:16
    pero no las velocidades.
  • 3:16 - 3:20
    Quiero que definas la matriz de incertidumbre de la medición, que ahora es una 2x2
  • 3:20 - 3:25
    que tiene 0.1 en la diagonal principal como el ruido de medición.
  • 3:25 - 3:27
    Y esta es una matriz de identidad.
  • 3:27 - 3:33
    Una vez que diseñe todo esto, debe obtener la siguiente salida.
  • 3:33 - 3:36
    Así que cuando ejecuto esto, me sale esta salida
  • 3:36 - 3:42
    para mi ejemplo de 4 dimensionesa la coordenada x 10 y 0.
  • 3:42 - 3:46
    Y esto tiene sentido ya que estas secuencias de aquí
  • 3:46 - 3:55
    tenían como medición final 10 y 0; 5, 6, 7, 8, 9, 10, 10, 8, 6, 4, 2, 0.
  • 3:55 - 4:00
    La cosa interesante que quiero que programes es producir las velocidades.
  • 4:00 - 4:06
    Son aproximadamente 10, lo cual tiene sentido dado un incremento de t de 0.1
  • 4:06 - 4:12
    nos da por el paso de tiempo un 10 dividido por 10 que es igual a un incremento de 1 por aquí.
  • 4:12 - 4:17
    Y la segunda velocidad es -20 multiplicado por 0,1 nos da -2.
  • 4:17 - 4:21
    Y usted lo puede ver por aquí 10, 8, 6, 4 y 2.
  • 4:21 - 4:25
    También quiero la salida de la matriz de covarianza,
  • 4:25 - 4:29
    que tiene la certeza de que algunos elementos son 0, como estos de aquí.
  • 4:29 - 4:34
    Y nos encontramos con que a lo largo de la diagonal principal nuestra incertidumbre se ha reducido sustancialmente.
  • 4:34 - 4:40
    Es 0.03 para las estimaciones de las coordenadas y 0.1 para las estimaciones de la velocidad.
  • 4:40 - 4:44
    Recuerde que este número de aquí era 1000 antes.
  • 4:44 - 4:48
    He aquí un segundo ejemplo en el que tenemos una coordenada inicial de -4 y 8.
  • 4:48 - 4:52
    Podemos ver las mediciones 1, 6, 11, 16.
  • 4:52 - 4:55
    Parece que los incrementos en dirección x son 5.
  • 4:55 - 5:00
    En la dirección Y son -4; 8, 4, 0, -4, -8.
  • 5:00 - 5:06
    Si ahora ejecuta esto, obtengo para mi vector x aproximadamente 16, el número de aquí,
  • 5:06 - 5:08
    aproximadamente -8, el número de aquí.
  • 5:08 - 5:13
    Y estas son las velocidades, 50 y -40 aproximadamente,
  • 5:13 - 5:21
    que multiplicado por 0.1 da nuestro 5 y nuestro -4.
  • 5:21 - 5:25
    He aquí otro ejemplo. Estado inicial 1 y 19.
  • 5:25 - 5:29
    Usted puede ver que la primera coordenada no cambia en absoluto. Usted debe conseguir una velocidad de 0.
  • 5:29 - 5:34
    La segunda coordenada va 19, 17, 15, 13, y 11.
  • 5:34 - 5:39
    Al ejecutarlo nos da 1, que no cambia y 11.
  • 5:39 - 5:43
    Las velocidades son 0 y -20 para los decrementos de -2.
  • 5:43 - 5:50
    Y en la covarianza, vemos los valores a lo largo de las diagonal principal,
  • 5:50 - 5:55
    0.05, 0.05, 0.33, y 0.33 para las velocidades.
  • 5:55 - 5:58
    Hay certeza en los elementos fuera de la diagonal.
  • 5:58 - 6:03
    Asegúrese de que todos coinciden con lo que el código produce.
  • 6:03 - 6:08
    Ahora puedo cambiar algunas de estas medidas para realizar una medición ruidosa.
  • 6:08 - 6:12
    Una forma de hacer esto es establecer una medición oscilante entre 2 y 0.
  • 6:12 - 6:15
    Recuerde que este filtro Kalman asume una velocidad fija.
  • 6:15 - 6:20
    No hay manera de explicar estas mediciones a una velocidad fija,
  • 6:20 - 6:22
    así que tiene que ser el ruido de medición.
  • 6:22 - 6:24
    Por lo tanto, ejecutamos de nuevo el filtro de Kalman.
  • 6:24 - 6:27
    El filtro muestra los siguientes valores:
  • 6:27 - 6:34
    0.7 en el estado actual, 11 como antes, y aquí están nuestras dos estimaciones de velocidad.
  • 6:34 - 6:38
    En realidad, cree que hay una ligera velocidad de -0.66
  • 6:39 - 6:42
    en la dirección x en el que la entrada del sensor tuvo ruido.
  • 6:42 - 6:45
    La matriz de covarianza debe ser exactamente igual que antes,
  • 6:45 - 6:48
    porque no se ve alterada por las propias medidas.
  • 6:48 - 6:53
    Así que su trabajo es rellenar estas matrices. ¡Buena suerte!
Title:
cs373_hw2_05_p_programming-exercise
Description:

dummy description

more » « less
Video Language:
English
Team:
Udacity
Project:
CS373 - Artificial Intelligence
Duration:
06:53
almartinflorido added a translation

Spanish subtitles

Revisions