CLICK HERE FOR THOUSANDS OF FREE BLOGGER TEMPLATES »

lunes, 8 de diciembre de 2008

Fe de Erratas

Una disculpa a mi estimadísimo profe de agentes  ya que olvidé (torpemente) citarlo en mi post Datos Curiosos sobre la I.A.


Saludos profe y mi mas sincera disculpa!

También quiero aclarar que mi equipo es Victor E. Mar Lizana y Oscar Zambrano Aguirre

Reporte Final Wumpus (Dom dom doom!)

Previamente habíamos explicado en que consistía el proyecto final, en grandes rasgos se explica en esta liga. Pues bien el objetivo era aplicar un poco lo que estudiamos de agentes deliberativos. Podemo considerar como agente deliberativo a todos aquellos sistemas capaces de formar una base de conocimiento de acuerdo a una manera lógica de inferir posibles soluciones al problema. 


En este caso desarrollamos un simulador del Wall-e en el mundo del Wumpus. La idea era construir un tablero con forma de matriz de 4x4 cuadrados de 30 cm cada uno. Cada cuadrito representaría una casilla que de acuerdo al color significaba la percepción del robot de acuerdo con lo enunciado en la práctica. Este  fue diseñado por uno de los equipos y hasta se tomaron la molestia de construir un Wumpus (el parecido con el compañero Ramiro es asombroso). 




Empleando el sensor de luz Wall-e intentaría distinguir cada casilla y con ello evitar morir en el laberinto. Wall-e iba creando un "mapa mental" del lugar conforme iba avanzando, sin embargo nos topamos con un problema con el asunto físico Wall-e no distinguía del todo los colores. (Véase relato de Pánico en el T) El problema es la reflexión de la luz, los colores resultaron ser muy brillantes y si de por si algunos compañeros no daltónicos eran incapaces de diferenciarlos, imaginemos al pobre Wall-e vuelto loco. 

Aqui tenemos una imagen del tablero, ciertamente los colores eran un tanto brillantes.




Después de pruebas y pruebas todos decidimos mejor hacer ua versión en simulador y aunque parecía fácil era una lógica medio complicada. La toma de decisiones sobre qué camino seguir y cual no nos tomó toda la noche y parte de la mañana. Al final el laberinto quedó configurado como lo pidió el profe:





El proyecto se encuentra en la siguiente liga: http://kino.iteso.mx/~is100566/AGENTES_INTELIGENTES/
Se encuentran dos carpetas en su interior: una que se llama wumpus que contiene las imagenes y se debe de guardar directamente en C: de la siguiente manera C:\\wumpus\\imagenes de lo contrario no funcionará.


Esta parado en una casilla si tiene alguna percepcion cambia los valores de las casillas adyacentes siempre y cuando estas no hayan sido marcadas previamente, esto asegura a Wall-e que no morirá. Cada valor esta descrito muy brevemente en la base de conocimientos. De esta manera Wall-e forma una imagen del mapa. Cada que avanza va notando percepciones y cambiando su mapa si es necesario.

A continuación encontramos una liga al documento de la base de conocimientos.

Finalmente posteamos el video del robot corriendo en el laberinto: 

Añadir imagen


Nuestras conclusiones es que fue una práctica un poco mas pesada de lo que creimos, si nos salió perfectamente pero tuvimos problemas como un Wall-e demasiado precavido (tirandole a cobarde), un Wall-e daltónico, un Wall-e humillado... pero al final todo salió mucho mejor de lo qe nos lo esperabamos. El código es claro y no es por presumir, pero estamos orgullosos de el. 

Agrego también la liga de los compañeros del Equipo:
http://iaoskr.blogspot.com/2008/12/primer-intento.html
http://veml.blogspot.com


Horror!!

Ehm... Ya es lunes vrdd? bueno pues yo sigo trabajando en el simulador de Wall-e vía remota con mis compañeros desde el ITESO. Peleando contra Java y C# (wuacalaaaa!!!) La idea es hacer una clase Laberinto que es un arreglo de clases Casilla que tiene los siguientes atributos: 


public boolean Wumpus = false;
public boolean Oro = false;
public boolean Pozo = false;
public boolean Brisa = false;
public boolean Peste = false;
public boolean Resplandor = false;

La clase Laberinto es sencillamente Casilla[][] casillas = new Casilla[4][4]; con las especficaciones que nos dio el profe:

casillas[2][1].bBrisa = true;
casillas[3][1].bPozo = true;
casillas[4][1].bBrisa = true;
  casillas[1][2].bPeste = true;
  casillas[3][2].bBrisa = true;
  casillas[1][3].bWumpus = true;
  casillas[2][3].bBrisa = true;
  casillas[2][3].bPeste = true;
  casillas[2][3].bOro = true;
  casillas[3][3].bPozo = true;
  casillas[4][3].bBrisa = true;
  casillas[1][4].bPeste = true;
  casillas[3][4].bBrisa = true;
  casillas[4][4].bPozo = true;   

Se crea tambien otra clase llamada LabWalle que es otro arreglo de casillas pero en este caso se encuentran vacías y serán llenadas conforme aprenda Wall-e. Lo difícil aquí es programar las reglas, que parecen sencillas pero oh sorpresa están destruyendo mi código jaja. Bueno seguimos en eso.

domingo, 7 de diciembre de 2008

Conclusión del compañero Oscar -.-'



Esta practica resulto muy interesante y al principio divertida (mas adelante mencionaré por qué solo al principio fue divertida), el inicio de la practica estuvo bien, comenzamos con los movimientos básicos de "Wall-e" y a decir verdad nos veíamos muy entusiasmados ya que resultaba hasta sorprendente ver como un robot podria caminar y reconocer cuando tenía una muro enfrente, después seguimos con las vueltas, ingenuamente creímos que si lograbamos que Wall-e diera un vuelta de 90 grados correctamente, siempre daría la vuelta de 90 grados exacta, pero es aquí cuando empiezan los problemas, y por más que modificabamos la cantidad de rotaciones necesarias para la vuelta de 90 grados, nunca se logró, y por lo tanto era muy raro que Wall-e saliera del laberinto, entonces fue cuando algunos de mis compañeros comenzaron a modificar la estructura física de Wall-e, pero yo nunca creí que era pudiera ser la solución, así que mi equipo y yo comenzamos a modificar el programa de Wall-e, de tal forma que si se empezaba a caminar en forma de diagonal se enderezara, lo cual nos costó unos tantos de problemas, porque se enderezaba, pero no podiamos saber que tanto se necesitaba enderezar, por lo tanto aunque logramos un algoritmo que resultaba mas factible y con mayor posibilidad de salir del laberinto, aun así no era 100% seguro, pero quede conforme con el trabajo que realizamos, ya que el agregado de "corregir ruta" de nuestro algoritmo fue algo que me pareció que nos hacia estar un paso mas cerca de la forma en que una persona recorrería un laberito.

Reporte de Laberintos

Hace dos entradas demostramos cómo nuestro Wall-e logra salir de los laberintos aquí ponemos las respuestas a las preguntas del profe.


Primero es importante mencionar nuestras herramientas: 
  • Wall-e
  • Sensor Ultrasónico
  • Motores
  • Un laberinto
Según las especificciones que vienen en el PDF del profe tenemos las siguientes percepciones: 

  • Pared o Camino libre
  • El sensor ultrasónico puede calcular la distancia a un obstáculo que se encuentre frente al robot.
Conforme con esto Wall-e podrá:
  • Avanzar hacia delante.
  • Detenerse 
  • Girar a la izquierda
  • Girar a la derecha
En un laberinto con las siguientes características:

  • Un laberinto con ángulos rectos.
  • La salida y/o la entrada pueden estar en cualquier punto del laberinto (no solamente en las esquinas).
Obviamente el objetivo es programar a Wall-e para que salga del laberinto. Primero que nada queremos destacar que Wall-e sale del primer laberinto en el primer video que posteamos hace dos entradas. La configuración mas sencilla es: 



Seguimos programando y salió bien de la siguiente configuración así que seguimos con la más dificil y cual fue nuestra sorpresa que ya salía!!! Fue tanta nuestra emoción que felicitamos a nuestro buen amigo Wall-e, le tomamos el video y fotos:

Preparandonos para el reto

Wall-e y yo sonriendo para la foto dentro del laberinto

Wall-e preparandose mentalmente para el reto


Ahora a resolver las preguntas.

¿Llegó el agente a la meta?Añadir imagen
Claro! Por que va siguiendo el muro y gira a la derecha.

¿Por qué crees que haya sucedido esto?
Le dimos instrucciones a Wall-e para que se fuera acomodando conforme se iba enchuecando con los giros y eso. Además le dejamos el espacio pertinente para que pudiera dar vuelta.

En el video podemos apreciar que Wall-e se va acomodando cuando percibe que esta muy cerca al muro y si tuviera manos seguiría a su mano derecha asi que en algún punto encontrará la salida. Intentamos que las vueltas fueran lo más precisas posibles.

A continuación tenemos el código que empleamos:


Aqui las fotos del modelo Walle empleado:

Wall-e humillado por que le quitaron su cosita (Sensor de Luz) y le pusieron el moño

"Si mi delito es rockear, me declaro culpable!"
Lo que piensa Wall-e del moño


Wall-e en PLENITUD



Conclusiones:

Primero que nada es importante mencionar que el T esta chueco!!!! Bueno el espacio físico no es el más apropiado para Wall-e por que los mosaicos provocan un ligero cambio de rumbo en Wall-e que si bien a simple vista no es relevante al final evidentemente provocara problemas con las vueltas. La conclusión del compañero Oscar es más detallada en este problema (le pedí una conclusión sencilla y me dijo el Padre Nuestro así que considero que merece su propia entrada XD.





Pánico en el T

Mucho intentar, poca luz, mucho programar, un Wall-e humillado y por ende poco cooperativo y las otras circunstancias atmosféricas nos hacen confiar en nuestro simulador. Lamentamos que Wall-e tomara esa actitud de no decirnos que realmente es daltónico hasta el final, no sabemos como decirle a nuestros compañeros que continuan construyendo el laberinto... 


Oh Wall-e Wall-e ¿Por qué no nos dijiste de tu defecto visual cuando aun había tiempo? Bueno ya que de todas maneras ya vamos algo avanzados con el simulador,  todo hecho desde cero con C#. Mínimo y sabemos bien que onda con lo que haremos, todo esta en la mente y claro en seudo-código. No sabemos como resultará el simulador pero a pesar de ello estamos contentos y confiados. Todo parece salir bien. 

El simulador ha sido la respuesta a nuestras penas desde el día de ayer. ¿Me pregunto si mis compañeros diseña-wumpus lo saben? Bueno pero hay que admitir que todos le estan echando ganas. 

La salida triunfal de Wall-e

Ok, la cosa estuvo rara, hace como dos fines de semana Wall-e logró salir del laberinto, desafortunadamente la configuración era completamente diferente a la nueva así que en esta ocasión tuvimos que rehacer el código para que saliera. De la manera más responsable obedecimos las reglas para usar al Wall-e el fin de semana: No retomamos la configuración que nos había funcionado sino que nos acoplamos a la configuración que por ironías de la vida nosotros mismos habiamos hecho durante la clase. 


Ciertamente he de afirmar que nuestro robótico amigo fue humillado al punto de que ya no quería cooperar con nosotros (Gracias Barbie por ponerle tan femenino moño a nuestro ahora indignado amigo) así que estuvimos trabajandole hasta que logró salir de cuantas configuraciones raras construyeron. 

Mostramos las triunfales salidas de Wall-e a continuación, por motivos de amistad removimos el moño de su pequeña cabeza:

Este primer video es de hace algunas semanas, esto se deduce por la configuración y por lo limpio del piso del T (No ha venido intendencia!) 




Ahora mostramos la salida de Wall-e del laberinto final de la práctica de agentes reflexivos, fue este domingo (07/12/2008) cuando por fin grabamos a Wall-e porque es medio tímido y cada que lo intentabamos grabar haciendo las cosas bien hacía alguna rancherada (creemos que se estuvo juntando con Jorge Gómez a.k.a. Autlán, FYI: profe le dará clase el siguiente semestre para que empiece a aprender a hablar totonaca) pero por fin lo logramos sin que hiciera nada raro. He aquí la prueba de su noble hazaña.





Llegó la hora de celebrar con Wall-e s hazaña y a seguir con el simulador (C# que esta en proceso). Que mejor manera de celebrar el asunto más que con un buen Rock Band, claro que Wall-e se puso de acuerdo con Wii y creemos que estaban haciendo trampa! 

No confien en esos ojitos de inocencia!!