domingo, 21 de marzo de 2010

Practica 4.

Nos encontramos con la cuarta práctica junto a nuestra querida Roxxxy. Gracias a dios, esta vez Roxxxy no necesitaba tantos complementos estéticos y pudimos concentrarnos en la programación de los ejercicios y no en ponerla guapa.
Esta práctica nos explicaba como funcionaba la Auto-localización mediante filtros de partículas. La teoría es bastante sencilla: Tenemos un espacio donde el robot puede encontrarse pero no sabemos exactamente su localización. Lo primero que hacemos es situar un número elevado de partículas aleatoriamete en ese espacio, cada una de ellas con una posición x,una y, un peso igual a todas y una dirección a la que apunta. Cada vez que el robot se mueve actualizamos cada particula con ese movimiento, ya sea giro o translación, añadiendo a cada una un error aleatorio calculado teoricamente. Una vez que el robot detecta una pared, ya tenemos un primer indicio de que partículas no son correctas, y estas son las que estan mas alejadas de la distancia a la pared, asi que asignamos diferentes pesos a cada partícula en función de la posibilidad de que esa partícula sea la correcta. Ahora que tenemos diferentes pesos, borramos todas las partículas creadas anteriormente y volvemos a generarlas basandonos en los pesos obtenidos, esto hará que las partículas se concentren en las zonas clave. Así, tras varias informaciones recibidas, sabremos con bastante exactitud por que zona se encuentra el robot.
Trás este muermo de explicación teórica nos pusimos con los ejercicios.

Antes de ponernos a realizar los ejercicios, decidimos hacer un calculo del error al avanzar de Roxxxy. Al haber cambiado el diseño, los datos obtenidos podían ser distintos asi que ejecutamos un programa en el que Roxxxy solo tenia que caminar 20 cm y medimos la medida real.Repetimos el proceso 10 veces hasta tener un numero de muestras aceptables y realizamos los calculos para calcular la desviacion tipica. Trás realizar los cálculos el error de Roxxxy es de mas menos 0.25 cm cuando camina y 2 grados al girar.

Ahora ya con todo listo, nos pusimos con el primer ejercicio: En él, Roxxxy debia describir un cuadrado e ir actualizando las particulas en funcion de su movimiento, e ir mostrandolas por pantalla. Nos costo un poco de tiempo encontrar las funciones adecuadas y entendernos con los filtros de particulas, pero consultando la API y probando, sobre todo probando conseguimos realizarla.
Aqui dejamos un video de como dibuja el cuadrado por pantalla.



El segundo ejercicio, consistía en crear un menu para que el usuario pudiera introducir unas coordenadas en Roxxxy, una X, una Y, y un angulo de giro, y una vez introducidas Roxxxy debía ir a esas coordenadas en linea recta, y posteriormente orientarse con el angulo indicado.
Aquí os dejamos la muestra de como lo realiza.

miércoles, 10 de marzo de 2010

Practica 3 Falling to Hell

Bienvenidos a la practica 3. Esta práctica nos ha traido por el camino de la amargura y hemos acabao totalmente desquiciados. Parte de ello se ha debido a la nueva reestructuracion de Roxxxy, ella no queria ser como el resto de los robots, tenia que ser especial y nos pusimos manos a la obra a complacerla. Tras miles de intentos, piezas por alli, motores por alla y cables por todos lados conseguimos un diseño con el que quedamos medianamente complacidos. Señoras y señores les presentamos a la nueva Roxxxy.





Esta práctica era mas corta que las demás en cuanto a ejercicios y además disponiamos de mas tiempo para hacerla, pero la inclusion de vectores de fuerzas nos ha dado muchos quebraderos de cabeza. A parte de los ya mencionados vectores, se nos pedia programar el codigo como comportamientos frente a diferentes estimulos. Si me choco-esquivo objeto, si no estoy orientado- me oriento, si todo es favorable-avanzo etc.
El primero ejercicio era sencillo. Roxxxy caminaba hacia delante hasta chocar contra un objeto, una vez colisionado lo esquivaba a capon. Esto era sencillo, vas para atrás, giras para alante etc.
Aqui os dejamos una muestra de como lo realiza.




En el ejercicio dos el comportamiento a efectuar por Roxxxy era el mismo, pero la diferencia de este era que a la hora de esquivar el objeto Roxxxy debia hacerlo basandose en suma de vectores de repulsion y atraccion. La trigonometria no es algo que nos fascine, y a esto habia que añadirle que cuanto mas lejos esta el objeto menos tiene que afectarte su vector de repulsion y vicebersa. Tras miles de intentos en el que Roxxxy se atuoahoracaba con el cable, bailaba la conga y giraba incomprensiblemente el cuello mas veces de las que ponía el código conseguimos que esquivara el objeto.
Aqui os dejamos el resultado de tan ardua tarea.




El tercer ejercicio era una ampliacion del segundo ya que ahora Roxxxy en vez de dirigirse siempre hacia alante, tenia que orientarse hacia la luz e ir directamente hacia ella. Si por el camino encontraba un obstaculo debía esquivarlo convenientemente y orientarse de nuevo. El problema de este ejercicio fue conectar los dos sensores a nuestro diseño personal ya que no parecía haber manera eficiente de hacerlo. Una vez conseguido, el codigo para orientarlo hacia la luz fue sencillo. Aqui os dejamos una muestra del resultado final.