jueves, 18 de febrero de 2010

Perdone, ¿me puede decir dónde estoy?

Filtro de partículas. Me gusta pronunciarlo, aunque la verdad, no entiendo por qué se llama así. Vale, lo del filtro lo pillo, pero ¿por qué llamar partículas a las hipótesis de situación?

Bueno resulta que Kubus le cogió el gusto a eso de salir por las noches, y la última acabó tan mal que no sabía ni volver a casa… Así que le hemos incorporado un programa sencillito que dadas las coordenadas de su casa sea capaz de llegar hasta ella. También le hemos añadido un filtro de partículas y ahora Kubus es capaz de autolocalizarse (¡la última vez, ni sabía dónde estaba!)

La idea del primer ejercicio es que Kubus se mueva describiendo un cuadrado de 40 cm de lado desde la posición (30,30) y que muestre por pantalla dónde cree él que está situado en el mapa.

A ver si consigo explicar esto del filtro de forma simple:

Creamos un mapa (en este caso un cuadrado 1mx1m) y proponemos cien hipótesis de situación, es decir, cien lugares posibles en los que el robot puede estar. Mediante el filtro, se asigna una probabilidad a cada posición y se recogen las más probables. También mediante el filtro, podemos aplicar un movimiento (el del robot) a cada partícula, con el ruido correspondiente, creando así una nueva generación de partículas a partir de las más probables de la generación anterior, que ya no nos sirve puesto que Kubus se ha movido.

Para empezar inicializamos todas las partículas en las coordenadas (30,30), que es dónde Kubus está en principio. No tomamos (0,0) porque si se desviara podría tomar valores negativos y se saldría del mapa. Así pues, al mostrar por pantalla las partículas, solo aparecerá un punto (30,30) en el que están las cien. Kubus empieza a moverse, y el filtro aplica el movimiento a las partículas. De esta manera, cuando haya recorrido toda la trayectoria, en la pantalla debería mostrarse un cuadrado (todas las posiciones en las que ha estado Kubus) y es lo que aparece.

Pero el filtro no le aplica el mismo movimiento exacto a cada partícula, porque tiene en cuenta la imprecisión (ruido) de movimiento de giro y desplazamiento, así que Kubus sabe que puede que no esté de vuelta exactamente en el origen. Aparecen pues los lugares en los que más probablemente esté, quedando como resultado una “mancha” alrededor del destino.

Quizá no sea demasiado vistoso, pero es muy interesante saber dónde esta uno mismo en el mapa para decidir lo próximo que se va a hacer.

En el segundo ejercicio, queremos que, introducidas unas coordenadas y un ángulo mediante los botones de Kubus, éste vaya hacia dicho punto. Para ello, primero rota en dirección al destino y avanza la distancia exacta. Una vez allí, se coloca en la dirección que le hayamos dicho.

Si tomamos (0,0) como la posición de Kubus, el ángulo de la trayectoria es el arco tangente de la coordenada Y entre la coordenada X (trigonometría simple). Y la distancia a recorrer se halla con el teorema de Pitágoras (la raíz cuadrada de la suma de los cuadrados de X e Y).

Aquí, Kubus se coloca en dirección a la tiza (coordenadas 60,40) y va hacia ella. El ángulo introducido es 180º, con lo que termina en dirección opuesta a la original.

Hacer el recorrido mediante curvas no lo hemos conseguido implementar, porque pensábamos que no estaba tan enfocado a la geometría y que había otra forma de hacerlo. Después de las explicaciones en clase hemos visto que no es tan difícil.

Sin más, nos despedimos hasta la próxima práctica, ¡que es la última de Kubus!

¡Un saludo!

No hay comentarios:

Publicar un comentario