--- /dev/null
+Teorias iniciales:\r
+Agrega teoria: Avanzar\r
+Agrega teoria\r
+Agrega teoria: Rotar a derecha\r
+\r
+\r
+Planificando...\r
+Entorno:\r
+0,0,0,0,0\r
+Teorias:\r
+Avanzar,adelante,1,1\r
+Retroceder,atras,1,1\r
+Rotar a derecha,derecha,1,1\r
+Rotar a izquierda,izquierda,1,1\r
+Plan:\r
+Avanzar,adelante,1,1\r
+Ejecutando teoria:\r
+Avanzar,adelante,1,1\r
+Verificacion...\r
+Entorno:\r
+0,0,0,0,0\r
+No verifica, aplicando heuristicas...\r
+Aplicando heuristica de observacion:\r
+Agrega teoria: Avanzar-o4\r
+Aplicando heuristica de retraccion:\r
+Se modifica teoria:\r
+Avanzar-r,adelante,1,2\r
+El dato final 'movido' puede tomar ahora cualquier valor\r
+Agrega teoria: Avanzar-r\r
+\r
+Planificando...\r
+Entorno:\r
+0,0,0,0,0\r
+Teorias:\r
+Avanzar-r,adelante,1,2\r
+Retroceder,atras,1,1\r
+Rotar a derecha,derecha,1,1\r
+Rotar a izquierda,izquierda,1,1\r
+Avanzar-o4,adelante,1,1\r
+Plan:\r
+Avanzar-o4,adelante,1,1\r
+Avanzar-r,adelante,1,2\r
+Ejecutando teoria:\r
+Avanzar-o4,adelante,1,1\r
+Verificacion...\r
+Entorno:\r
+0,0,0,0,1\r
+No verifica, aplicando heuristicas...\r
+Aplicando heuristica de observacion:\r
+Agrega teoria: Avanzar-o4\r
+Aplicando heuristica de retraccion:\r
+Se modifica teoria:\r
+Avanzar-o4-r,adelante,1,2\r
+El dato final 'movido' puede tomar ahora cualquier valor\r
+Agrega teoria: Avanzar-o4\r
+\r
+Planificando...\r
+Entorno:\r
+0,0,0,0,0\r
+Teorias:\r
+Avanzar-r,adelante,1,2\r
+Retroceder,atras,1,1\r
+Rotar a derecha,derecha,1,1\r
+Rotar a izquierda,izquierda,1,1\r
+Avanzar-o4-r,adelante,1,2\r
+Avanzar-o4-o5,adelante,1,1\r
+Plan:\r
+Avanzar-o4-o5,adelante,1,1\r
+Ejecutando teoria:\r
+Avanzar-o4-o5,adelante,1,1\r
+Verificacion...\r
+Entorno:\r
+0,0,0,0,1\r
+Verifica!\r
+\r
+Planificando...\r
+Entorno:\r
+0,0,0,0,0\r
+Teorias:\r
+Avanzar-r,adelante,1,2\r
+Retroceder,atras,1,1\r
+Rotar a derecha,derecha,1,1\r
+Rotar a izquierda,izquierda,1,1\r
+Avanzar-o4-r,adelante,1,2\r
+Avanzar-o4-o5,adelante,2,2\r
+Plan:\r
+Avanzar-o4-o5,adelante,2,2\r
+Ejecutando teoria:\r
+Avanzar-o4-o5,adelante,2,2\r
+Verificacion...\r
+Entorno:\r
+0,0,0,0,1\r
+Verifica!\r
+\r
+\r
+[... aplica varias veces la teoria de avanzar con exito ...]\r
+\r
+\r
+Planificando...\r
+Entorno:\r
+0,0,0,0,0\r
+Teorias:\r
+Avanzar-r,adelante,1,2\r
+Retroceder,atras,1,1\r
+Rotar a derecha,derecha,1,1\r
+Rotar a izquierda,izquierda,1,1\r
+Avanzar-o4-r,adelante,1,2\r
+Avanzar-o4-o5,adelante,14,14\r
+Plan:\r
+Avanzar-o4-o5,adelante,14,14\r
+Ejecutando teoria:\r
+Avanzar-o4-o5,adelante,14,14\r
+Verificacion...\r
+Entorno:\r
+0,0,0,0,1\r
+Verifica!\r
+\r
+Planificando...\r
+Entorno:\r
+0,0,0,0,0\r
+Teorias:\r
+Avanzar-r,adelante,1,2\r
+Retroceder,atras,1,1\r
+Rotar a derecha,derecha,1,1\r
+Rotar a izquierda,izquierda,1,1\r
+Avanzar-o4-r,adelante,1,2\r
+Avanzar-o4-o5,adelante,15,15\r
+Plan:\r
+Avanzar-o4-o5,adelante,15,15\r
+Ejecutando teoria:\r
+Avanzar-o4-o5,adelante,15,15\r
+Verificacion...\r
+Entorno:\r
+0,0,0,1,1\r
+No verifica, aplicando heuristicas...\r
+Aplicando heuristica de observacion:\r
+Agrega teoria: Avanzar-o4\r
+Aplicando heuristica de retraccion:\r
+Se modifica teoria:\r
+Avanzar-o4-o5-r,adelante,15,16\r
+El dato final 'sensor_r' puede tomar ahora cualquier valor\r
+Agrega teoria: Avanzar-o4\r
+\r
+Planificando...\r
+Entorno:\r
+0,0,0,1,0\r
+Teorias:\r
+Avanzar-r,adelante,1,2\r
+Retroceder,atras,1,1\r
+Rotar a derecha,derecha,1,1\r
+Rotar a izquierda,izquierda,1,1\r
+Avanzar-o4-r,adelante,1,2\r
+Avanzar-o4-o5-r,adelante,15,16\r
+Avanzar-o4-o5-o6,adelante,1,1\r
+Plan:\r
+Avanzar-o4-o5-o6,adelante,1,1\r
+Ejecutando teoria:\r
+Avanzar-o4-o5-o6,adelante,1,1\r
+Verificacion...\r
+Entorno:\r
+0,0,0,0,1\r
+No verifica, aplicando heuristicas...\r
+Aplicando heuristica de observacion:\r
+Agrega teoria: Avanzar-o4\r
+Aplicando heuristica de retraccion:\r
+Se modifica teoria:\r
+Avanzar-o4-o5-o6-r,adelante,1,2\r
+El dato final 'sensor_r' puede tomar ahora cualquier valor\r
+Agrega teoria: Avanzar-o4\r
+\r
+Planificando...\r
+Entorno:\r
+0,0,0,0,0\r
+Teorias:\r
+Avanzar-r,adelante,1,2\r
+Retroceder,atras,1,1\r
+Rotar a derecha,derecha,1,1\r
+Rotar a izquierda,izquierda,1,1\r
+Avanzar-o4-r,adelante,1,2\r
+Avanzar-o4-o5-r,adelante,15,16\r
+Avanzar-o4-o5-o6-r,adelante,1,2\r
+Avanzar-o4-o5-o6-o7,adelante,1,1\r
+Plan:\r
+Avanzar-o4-o5-o6-o7,adelante,1,1\r
+Ejecutando teoria:\r
+Avanzar-o4-o5-o6-o7,adelante,1,1\r
+Verificacion...\r
+Entorno:\r
+0,0,0,0,1\r
+Verifica!\r
+\r
+Planificando...\r
+Entorno:\r
+0,0,0,0,0\r
+Teorias:\r
+Avanzar-r,adelante,1,2\r
+Retroceder,atras,1,1\r
+Rotar a derecha,derecha,1,1\r
+Rotar a izquierda,izquierda,1,1\r
+Avanzar-o4-r,adelante,1,2\r
+Avanzar-o4-o5-r,adelante,15,16\r
+Avanzar-o4-o5-o6-r,adelante,1,2\r
+Avanzar-o4-o5-o6-o7,adelante,2,2\r
+Plan:\r
+Avanzar-o4-o5-o6-o7,adelante,2,2\r
+Ejecutando teoria:\r
+Avanzar-o4-o5-o6-o7,adelante,2,2\r
+Verificacion...\r
+Entorno:\r
+0,1,0,0,1\r
+No verifica, aplicando heuristicas...\r
+Aplicando heuristica de observacion:\r
+Agrega teoria: Avanzar-o4\r
+Aplicando heuristica de retraccion:\r
+Se modifica teoria:\r
+Avanzar-o4-o5-o6-o7-r,adelante,2,3\r
+El dato final 'sensor_f' puede tomar ahora cualquier valor\r
+Agrega teoria: Avanzar-o4\r
+\r
+Planificando...\r
+Entorno:\r
+0,1,0,0,0\r
+Teorias:\r
+Avanzar-r,adelante,1,2\r
+Retroceder,atras,1,1\r
+Rotar a derecha,derecha,1,1\r
+Rotar a izquierda,izquierda,1,1\r
+Avanzar-o4-r,adelante,1,2\r
+Avanzar-o4-o5-r,adelante,15,16\r
+Avanzar-o4-o5-o6-r,adelante,1,2\r
+Avanzar-o4-o5-o6-o7-r,adelante,2,3\r
+Avanzar-o4-o5-o6-o7-o8,adelante,1,1\r
+Plan:\r
+Retroceder,atras,1,1\r
+Ejecutando teoria:\r
+Retroceder,atras,1,1\r
+Verificacion...\r
+Entorno:\r
+0,1,0,0,0\r
+No verifica, aplicando heuristicas...\r
+Aplicando heuristica de observacion:\r
+Agrega teoria: Retroceder-o9\r
+Aplicando heuristica de retraccion:\r
+Se modifica teoria:\r
+Retroceder-r,atras,1,2\r
+El dato final 'movido' puede tomar ahora cualquier valor\r
+Agrega teoria: Retroceder-r\r
+\r
+Planificando...\r
+Entorno:\r
+0,1,0,0,0\r
+Teorias:\r
+Avanzar-r,adelante,1,2\r
+Retroceder-r,atras,1,2\r
+Rotar a derecha,derecha,1,1\r
+Rotar a izquierda,izquierda,1,1\r
+Avanzar-o4-r,adelante,1,2\r
+Avanzar-o4-o5-r,adelante,15,16\r
+Avanzar-o4-o5-o6-r,adelante,1,2\r
+Avanzar-o4-o5-o6-o7-r,adelante,2,3\r
+Avanzar-o4-o5-o6-o7-o8,adelante,1,1\r
+Retroceder-o9,atras,1,1\r
+Plan:\r
+Rotar a derecha,derecha,1,1\r
+Avanzar-o4-o5-o6-o7-o8,adelante,1,1\r
+Ejecutando teoria:\r
+Rotar a derecha,derecha,1,1\r
+Verificacion...\r
+Entorno:\r
+0,0,0,0,1\r
+No verifica, aplicando heuristicas...\r
+Aplicando heuristica de observacion:\r
+Agrega teoria: Rotar a derecha\r
+Aplicando heuristica de retraccion:\r
+Se modifica teoria:\r
+Rotar a derecha-r,derecha,1,2\r
+El dato final 'movido' puede tomar ahora cualquier valor\r
+Agrega teoria: Rotar a derecha\r
\r
@define CELDAS_MAX_VELOCITY 5.\r
@define CELDAS_TURNO 30.\r
-@define CELDAS_SENSOR_THRESHOLD 10.\r
+@define CELDAS_SENSOR_THRESHOLD 6.\r
\r
PhysicalControl : CeldasControl {\r
% This class is used for building simple vehicle \r
return ((rfWheel get-velocity) + (lfWheel get-velocity)) / 2.\r
\r
+ to turn-right: \r
- #tright++.\r
- #self rotate around-axis (0,1,0) by (-1.5709/CELDAS_TURNO)*tright. \r
- #if (tright == CELDAS_TURNO): tright=0.\r
- if (tright == 0): self set-global-velocity to 0.\r
+ tright++.\r
self rotate around-axis (0,1,0) by (-1.5709/CELDAS_TURNO)*tright. \r
- if (tright == CELDAS_TURNO): tright=0.\r
- else tright++.\r
+#!\r
+ if (tright == CELDAS_TURNO):\r
+ {\r
+ fSensor set-direction to (-1,0,0).\r
+ bSensor set-direction to (1,0,0).\r
+ lSensor set-direction to (0,0,-1).\r
+ rSensor set-direction to (0,0,1).\r
+ }\r
+!#\r
\r
\r
+ to turn-left:\r
- #tleft++.\r
- #self rotate around-axis (0,1,0) by (1.5709/CELDAS_TURNO)*tleft. \r
- #if (tleft == CELDAS_TURNO): tleft=0.\r
- if (tleft == 0): self set-global-velocity to 0.\r
- self rotate around-axis (0,1,0) by (1.5709/CELDAS_TURNO)*tleft.\r
- if (tleft == CELDAS_TURNO): tleft=0.\r
- else tleft++.\r
-\r
+ tleft++.\r
+ self rotate around-axis (0,1,0) by (1.5709/CELDAS_TURNO)*tleft. \r
+#!\r
+ if (tleft == CELDAS_TURNO):\r
+ {\r
+ fSensor set-direction to (-1,0,0).\r
+ bSensor set-direction to (1,0,0).\r
+ lSensor set-direction to (0,0,-1).\r
+ rSensor set-direction to (0,0,1).\r
+ }\r
+!#\r
\r
+ to get-sensor-value:\r
return (fSensor get-sensor-value).\r
teorias{0} set-dato-final name "sensor_l" value ANY.\r
teorias{0} set-dato-final name "movido" value 1.\r
\r
- teorias{1} init named "Retroceder" with-action "atras" executed 2.\r
+ teorias{1} init named "Retroceder" with-action "atras".# executed 2.\r
teorias{1} set-dato-inicial name "sensor_f" value 1.\r
teorias{1} set-dato-inicial name "sensor_b" value ANY.\r
teorias{1} set-dato-inicial name "sensor_r" value ANY.\r
teorias{2} set-dato-final name "sensor_l" value 1.\r
teorias{2} set-dato-final name "movido" value 0.\r
\r
- teorias{3} init named "Rotar a izquierda" with-action "izquierda" executed 2.\r
+ teorias{3} init named "Rotar a izquierda" with-action "izquierda". # executed 2.\r
teorias{3} set-dato-inicial name "sensor_f" value 1.\r
teorias{3} set-dato-inicial name "sensor_b" value ANY.\r
teorias{3} set-dato-inicial name "sensor_r" value ANY.\r
\r
+to iterate:\r
\r
+ # Movimiento del robot\r
+ if (avanzando):\r
+ {\r
+ self set-global-velocity to (CELDAS_MAX_VELOCITY).\r
+ }\r
+ if (retrocediendo):\r
+ {\r
+ self set-global-velocity to (-CELDAS_MAX_VELOCITY).\r
+ }\r
+ if (girando_izq):\r
+ {\r
+ self set-global-velocity to 0.\r
+ self turn-left.\r
+ #if (iterate): self rotate around-axis (0,1,0) by (1.570796/CELDAS_TURNO)*iterate.\r
+ print "izq: ", (1.570796/CELDAS_TURNO)*iterate.\r
+ }\r
+ if (girando_der):\r
+ {\r
+ self set-global-velocity to 0.\r
+ self turn-right.\r
+ #if (iterate): self rotate around-axis (0,1,0) by (-1.570796/CELDAS_TURNO)*iterate. \r
+ print "der: ", (-1.570796/CELDAS_TURNO)*iterate.\r
+ }\r
+ #print "vel: ", (bodyLink get-velocity).\r
+\r
# Actualiza entorno\r
self update-entorno.\r
\r
if (iterate == CELDAS_TURNO):\r
{\r
# Actualiza entorno segun si se movio o no\r
- if (self near position posicion-inicial with-error 2.0):\r
+ if (self near position posicion-inicial with-error 1.0):\r
{\r
sa set-entorno value 0 with-name "movido".\r
}\r
iterate++.\r
}\r
\r
- # Movimiento del robot\r
- if (avanzando):\r
- self set-global-velocity to (CELDAS_MAX_VELOCITY).\r
- if (retrocediendo):\r
- self set-global-velocity to (-CELDAS_MAX_VELOCITY).\r
- if (girando_izq):\r
- self turn-left.\r
- if (girando_der):\r
- self turn-right.\r
-\r
}\r
\r
Stationary : CeldasObstacle (aka CeldasObstacles) {\r
des2=0.\r
if(dot(direction,(1,1,1))<0):\r
{ \r
- if((dot((self get-location),positiveDirection))>(dot(obsLoc,positiveDirection))):\r
- des2=1. \r
+ if(dot((body get-location),positiveDirection) > dot((self get-location),positiveDirection)):\r
+ {\r
+ if((dot((self get-location),positiveDirection))>(dot(obsLoc,positiveDirection))):\r
+ des2=1.\r
+ }\r
+ else\r
+ if((dot((self get-location),positiveDirection))<(dot(obsLoc,positiveDirection))):\r
+ des2=1. \r
}\r
else\r
{\r
- if((dot((self get-location),positiveDirection))<(dot(obsLoc,positiveDirection))):\r
+ if(dot((body get-location),positiveDirection) < dot((self get-location),positiveDirection)):\r
+ {\r
+ if((dot((self get-location),positiveDirection))<(dot(obsLoc,positiveDirection))):\r
des2=1. \r
+ }\r
+ else\r
+ if((dot((self get-location),positiveDirection))>(dot(obsLoc,positiveDirection))):\r
+ des2=1.\r
+ \r
} \r
\r
\r