martes, 19 de noviembre de 2013

Agentes Reflexivos con ROBOT C


Laberinto

Para realizar nuestro laberinto, el robot debe de inicializar y definir los sensores del robot de la siguiente manera: #pragma config(Sensor, S4,     sonarSensor,         sensorSONAR)

#define SENSOR SensorValue[sonarSensor]
#define DERECHA motor[motorB]
#define IZQUIERDA motor[motorC]
#define POWER(izquierda, derecha) \

Nota: creamos macros para manejar más facilmente el código.

El robot revisa con el sensor sonar que distancia hay entre el y la pared y si la distancia es menor que una variable x, el robot sabe que ya esta cerca de la pared o está chocando con la misma, y procede a retroceder en reversa y a hacer una vuelta a la derecha y a la izquierda aleatoriamente, si no se cumple ninguna de estas condiciones procede a moverse derecho. Con esto aseguramos que el robot sale del laberinto en algun momento. 
El video es el siguiente: 


Linea Negra


El robot debe de detectar el valor del color negro a través del sensor de luz, mientras este senor esta detectado el robor avanza en linea recta con los motores a una velocidad determinada. Por el contrario, si el sensor detecta que el color es blanco va a avanzar hacia la izquierda con un motor en 40 y el otro en cero. Si no encuentra aún la linea negra y ya paso el valor del contador que controla los movimientos del robot, deberá de comenzar a moverse hacia la derecha del mismo modo que explicamos anteriormente. En el caso que no encuentre la linea negra, reiniciará todo a 0 y volverá a repetir el proceso de búsqueda del sensor por la izquierda.
El video es el siguiente:





Detectar y seguir un sonido

Nuestro algoritmo es muy sencillo y tan funcional que si el robot está completamente de espaldas al sonido es capaz de girar y seguirlo. 
El señorito robot se mueve dando giros sobre su propio eje y detecta el sonido mayor con el sensor de sonidos, lo sigue inmediatamente aunque la fuente de sonido debe estar próxima para que pueda detectarlo. 
El video es el siguiente:



Huir de la luz

Xoto debe usar su sonar para moverse por un cuarto mientras la luz esté apagada. En cuanto la luz se encienda, Xoto debe escapar de ella y esconderse en un rincón oscuro. Xoto recurre en más de una ocasión a algoritmos parecidos a los del laberinto para moverse usando su sonar y para escapar y esconderse. En cuanto ve la luz, comienza a girar buscando el punto donde menos iluminación perciba; luego avanza en esa dirección.
El video es el siguiente:



Detectar y seguir los bordes de un objeto

Para este ejercicio el robot Xoto debe moverse hasta encontrar un objeto y entonces recorrerlo toqueteando sus bordes. En nuestra implementación, Xoto se mueve aleatoriamente hasta topar con un objeto, y entonces lo agasaja con sus pequeños brazos construidos siguiendo el instructivo casi al pie de la letra. Cuando deja de sentir la presión en un brazo, se gira para tratar de encontrar el objeto de nuevo.
El video es el siguiente: