From: Leandro Lucarella Date: Tue, 19 Dec 2006 03:26:41 +0000 (+0000) Subject: Últimos cambios y documentación. X-Git-Tag: entrega-20061218^0 X-Git-Url: https://git.llucax.com/z.facultad/75.68/celdas.git/commitdiff_plain?ds=sidebyside Últimos cambios y documentación. --- diff --git a/trunk/doc/Documentacion.doc b/trunk/doc/Documentacion.doc index da037ac..0bf517f 100644 Binary files a/trunk/doc/Documentacion.doc and b/trunk/doc/Documentacion.doc differ diff --git a/trunk/doc/Documentacion.odt b/trunk/doc/Documentacion.odt new file mode 100644 index 0000000..50cb21e Binary files /dev/null and b/trunk/doc/Documentacion.odt differ diff --git a/trunk/doc/robot.jpg b/trunk/doc/robot.jpg new file mode 100644 index 0000000..46335a2 Binary files /dev/null and b/trunk/doc/robot.jpg differ diff --git a/trunk/doc/salida.csv b/trunk/doc/salida.csv new file mode 100644 index 0000000..1fee7c1 --- /dev/null +++ b/trunk/doc/salida.csv @@ -0,0 +1,278 @@ +Teorias iniciales: +Agrega teoria: Avanzar +Agrega teoria +Agrega teoria: Rotar a derecha + + +Planificando... +Entorno: +0,0,0,0,0 +Teorias: +Avanzar,adelante,1,1 +Retroceder,atras,1,1 +Rotar a derecha,derecha,1,1 +Rotar a izquierda,izquierda,1,1 +Plan: +Avanzar,adelante,1,1 +Ejecutando teoria: +Avanzar,adelante,1,1 +Verificacion... +Entorno: +0,0,0,0,0 +No verifica, aplicando heuristicas... +Aplicando heuristica de observacion: +Agrega teoria: Avanzar-o4 +Aplicando heuristica de retraccion: +Se modifica teoria: +Avanzar-r,adelante,1,2 +El dato final 'movido' puede tomar ahora cualquier valor +Agrega teoria: Avanzar-r + +Planificando... +Entorno: +0,0,0,0,0 +Teorias: +Avanzar-r,adelante,1,2 +Retroceder,atras,1,1 +Rotar a derecha,derecha,1,1 +Rotar a izquierda,izquierda,1,1 +Avanzar-o4,adelante,1,1 +Plan: +Avanzar-o4,adelante,1,1 +Avanzar-r,adelante,1,2 +Ejecutando teoria: +Avanzar-o4,adelante,1,1 +Verificacion... +Entorno: +0,0,0,0,1 +No verifica, aplicando heuristicas... +Aplicando heuristica de observacion: +Agrega teoria: Avanzar-o4 +Aplicando heuristica de retraccion: +Se modifica teoria: +Avanzar-o4-r,adelante,1,2 +El dato final 'movido' puede tomar ahora cualquier valor +Agrega teoria: Avanzar-o4 + +Planificando... +Entorno: +0,0,0,0,0 +Teorias: +Avanzar-r,adelante,1,2 +Retroceder,atras,1,1 +Rotar a derecha,derecha,1,1 +Rotar a izquierda,izquierda,1,1 +Avanzar-o4-r,adelante,1,2 +Avanzar-o4-o5,adelante,1,1 +Plan: +Avanzar-o4-o5,adelante,1,1 +Ejecutando teoria: +Avanzar-o4-o5,adelante,1,1 +Verificacion... +Entorno: +0,0,0,0,1 +Verifica! + +Planificando... +Entorno: +0,0,0,0,0 +Teorias: +Avanzar-r,adelante,1,2 +Retroceder,atras,1,1 +Rotar a derecha,derecha,1,1 +Rotar a izquierda,izquierda,1,1 +Avanzar-o4-r,adelante,1,2 +Avanzar-o4-o5,adelante,2,2 +Plan: +Avanzar-o4-o5,adelante,2,2 +Ejecutando teoria: +Avanzar-o4-o5,adelante,2,2 +Verificacion... +Entorno: +0,0,0,0,1 +Verifica! + + +[... aplica varias veces la teoria de avanzar con exito ...] + + +Planificando... +Entorno: +0,0,0,0,0 +Teorias: +Avanzar-r,adelante,1,2 +Retroceder,atras,1,1 +Rotar a derecha,derecha,1,1 +Rotar a izquierda,izquierda,1,1 +Avanzar-o4-r,adelante,1,2 +Avanzar-o4-o5,adelante,14,14 +Plan: +Avanzar-o4-o5,adelante,14,14 +Ejecutando teoria: +Avanzar-o4-o5,adelante,14,14 +Verificacion... +Entorno: +0,0,0,0,1 +Verifica! + +Planificando... +Entorno: +0,0,0,0,0 +Teorias: +Avanzar-r,adelante,1,2 +Retroceder,atras,1,1 +Rotar a derecha,derecha,1,1 +Rotar a izquierda,izquierda,1,1 +Avanzar-o4-r,adelante,1,2 +Avanzar-o4-o5,adelante,15,15 +Plan: +Avanzar-o4-o5,adelante,15,15 +Ejecutando teoria: +Avanzar-o4-o5,adelante,15,15 +Verificacion... +Entorno: +0,0,0,1,1 +No verifica, aplicando heuristicas... +Aplicando heuristica de observacion: +Agrega teoria: Avanzar-o4 +Aplicando heuristica de retraccion: +Se modifica teoria: +Avanzar-o4-o5-r,adelante,15,16 +El dato final 'sensor_r' puede tomar ahora cualquier valor +Agrega teoria: Avanzar-o4 + +Planificando... +Entorno: +0,0,0,1,0 +Teorias: +Avanzar-r,adelante,1,2 +Retroceder,atras,1,1 +Rotar a derecha,derecha,1,1 +Rotar a izquierda,izquierda,1,1 +Avanzar-o4-r,adelante,1,2 +Avanzar-o4-o5-r,adelante,15,16 +Avanzar-o4-o5-o6,adelante,1,1 +Plan: +Avanzar-o4-o5-o6,adelante,1,1 +Ejecutando teoria: +Avanzar-o4-o5-o6,adelante,1,1 +Verificacion... +Entorno: +0,0,0,0,1 +No verifica, aplicando heuristicas... +Aplicando heuristica de observacion: +Agrega teoria: Avanzar-o4 +Aplicando heuristica de retraccion: +Se modifica teoria: +Avanzar-o4-o5-o6-r,adelante,1,2 +El dato final 'sensor_r' puede tomar ahora cualquier valor +Agrega teoria: Avanzar-o4 + +Planificando... +Entorno: +0,0,0,0,0 +Teorias: +Avanzar-r,adelante,1,2 +Retroceder,atras,1,1 +Rotar a derecha,derecha,1,1 +Rotar a izquierda,izquierda,1,1 +Avanzar-o4-r,adelante,1,2 +Avanzar-o4-o5-r,adelante,15,16 +Avanzar-o4-o5-o6-r,adelante,1,2 +Avanzar-o4-o5-o6-o7,adelante,1,1 +Plan: +Avanzar-o4-o5-o6-o7,adelante,1,1 +Ejecutando teoria: +Avanzar-o4-o5-o6-o7,adelante,1,1 +Verificacion... +Entorno: +0,0,0,0,1 +Verifica! + +Planificando... +Entorno: +0,0,0,0,0 +Teorias: +Avanzar-r,adelante,1,2 +Retroceder,atras,1,1 +Rotar a derecha,derecha,1,1 +Rotar a izquierda,izquierda,1,1 +Avanzar-o4-r,adelante,1,2 +Avanzar-o4-o5-r,adelante,15,16 +Avanzar-o4-o5-o6-r,adelante,1,2 +Avanzar-o4-o5-o6-o7,adelante,2,2 +Plan: +Avanzar-o4-o5-o6-o7,adelante,2,2 +Ejecutando teoria: +Avanzar-o4-o5-o6-o7,adelante,2,2 +Verificacion... +Entorno: +0,1,0,0,1 +No verifica, aplicando heuristicas... +Aplicando heuristica de observacion: +Agrega teoria: Avanzar-o4 +Aplicando heuristica de retraccion: +Se modifica teoria: +Avanzar-o4-o5-o6-o7-r,adelante,2,3 +El dato final 'sensor_f' puede tomar ahora cualquier valor +Agrega teoria: Avanzar-o4 + +Planificando... +Entorno: +0,1,0,0,0 +Teorias: +Avanzar-r,adelante,1,2 +Retroceder,atras,1,1 +Rotar a derecha,derecha,1,1 +Rotar a izquierda,izquierda,1,1 +Avanzar-o4-r,adelante,1,2 +Avanzar-o4-o5-r,adelante,15,16 +Avanzar-o4-o5-o6-r,adelante,1,2 +Avanzar-o4-o5-o6-o7-r,adelante,2,3 +Avanzar-o4-o5-o6-o7-o8,adelante,1,1 +Plan: +Retroceder,atras,1,1 +Ejecutando teoria: +Retroceder,atras,1,1 +Verificacion... +Entorno: +0,1,0,0,0 +No verifica, aplicando heuristicas... +Aplicando heuristica de observacion: +Agrega teoria: Retroceder-o9 +Aplicando heuristica de retraccion: +Se modifica teoria: +Retroceder-r,atras,1,2 +El dato final 'movido' puede tomar ahora cualquier valor +Agrega teoria: Retroceder-r + +Planificando... +Entorno: +0,1,0,0,0 +Teorias: +Avanzar-r,adelante,1,2 +Retroceder-r,atras,1,2 +Rotar a derecha,derecha,1,1 +Rotar a izquierda,izquierda,1,1 +Avanzar-o4-r,adelante,1,2 +Avanzar-o4-o5-r,adelante,15,16 +Avanzar-o4-o5-o6-r,adelante,1,2 +Avanzar-o4-o5-o6-o7-r,adelante,2,3 +Avanzar-o4-o5-o6-o7-o8,adelante,1,1 +Retroceder-o9,atras,1,1 +Plan: +Rotar a derecha,derecha,1,1 +Avanzar-o4-o5-o6-o7-o8,adelante,1,1 +Ejecutando teoria: +Rotar a derecha,derecha,1,1 +Verificacion... +Entorno: +0,0,0,0,1 +No verifica, aplicando heuristicas... +Aplicando heuristica de observacion: +Agrega teoria: Rotar a derecha +Aplicando heuristica de retraccion: +Se modifica teoria: +Rotar a derecha-r,derecha,1,2 +El dato final 'movido' puede tomar ahora cualquier valor +Agrega teoria: Rotar a derecha diff --git a/trunk/doc/teorias.ods b/trunk/doc/teorias.ods new file mode 100644 index 0000000..4964ef1 Binary files /dev/null and b/trunk/doc/teorias.ods differ diff --git a/trunk/src/breve/Celdas.tz b/trunk/src/breve/Celdas.tz index ae29a51..481c28c 100644 --- a/trunk/src/breve/Celdas.tz +++ b/trunk/src/breve/Celdas.tz @@ -8,7 +8,7 @@ @define CELDAS_MAX_VELOCITY 5. @define CELDAS_TURNO 30. -@define CELDAS_SENSOR_THRESHOLD 10. +@define CELDAS_SENSOR_THRESHOLD 6. PhysicalControl : CeldasControl { % This class is used for building simple vehicle @@ -205,24 +205,31 @@ CeldasLightVehicle : CeldasVehicle (aka CeldasVehicles) { return ((rfWheel get-velocity) + (lfWheel get-velocity)) / 2. + to turn-right: - #tright++. - #self rotate around-axis (0,1,0) by (-1.5709/CELDAS_TURNO)*tright. - #if (tright == CELDAS_TURNO): tright=0. - if (tright == 0): self set-global-velocity to 0. + tright++. self rotate around-axis (0,1,0) by (-1.5709/CELDAS_TURNO)*tright. - if (tright == CELDAS_TURNO): tright=0. - else tright++. +#! + if (tright == CELDAS_TURNO): + { + fSensor set-direction to (-1,0,0). + bSensor set-direction to (1,0,0). + lSensor set-direction to (0,0,-1). + rSensor set-direction to (0,0,1). + } +!# + to turn-left: - #tleft++. - #self rotate around-axis (0,1,0) by (1.5709/CELDAS_TURNO)*tleft. - #if (tleft == CELDAS_TURNO): tleft=0. - if (tleft == 0): self set-global-velocity to 0. - self rotate around-axis (0,1,0) by (1.5709/CELDAS_TURNO)*tleft. - if (tleft == CELDAS_TURNO): tleft=0. - else tleft++. - + tleft++. + self rotate around-axis (0,1,0) by (1.5709/CELDAS_TURNO)*tleft. +#! + if (tleft == CELDAS_TURNO): + { + fSensor set-direction to (-1,0,0). + bSensor set-direction to (1,0,0). + lSensor set-direction to (0,0,-1). + rSensor set-direction to (0,0,1). + } +!# + to get-sensor-value: return (fSensor get-sensor-value). @@ -293,7 +300,7 @@ CeldasLightVehicle : CeldasVehicle (aka CeldasVehicles) { teorias{0} set-dato-final name "sensor_l" value ANY. teorias{0} set-dato-final name "movido" value 1. - teorias{1} init named "Retroceder" with-action "atras" executed 2. + teorias{1} init named "Retroceder" with-action "atras".# executed 2. teorias{1} set-dato-inicial name "sensor_f" value 1. teorias{1} set-dato-inicial name "sensor_b" value ANY. teorias{1} set-dato-inicial name "sensor_r" value ANY. @@ -317,7 +324,7 @@ CeldasLightVehicle : CeldasVehicle (aka CeldasVehicles) { teorias{2} set-dato-final name "sensor_l" value 1. teorias{2} set-dato-final name "movido" value 0. - teorias{3} init named "Rotar a izquierda" with-action "izquierda" executed 2. + teorias{3} init named "Rotar a izquierda" with-action "izquierda". # executed 2. teorias{3} set-dato-inicial name "sensor_f" value 1. teorias{3} set-dato-inicial name "sensor_b" value ANY. teorias{3} set-dato-inicial name "sensor_r" value ANY. @@ -339,6 +346,31 @@ CeldasLightVehicle : CeldasVehicle (aka CeldasVehicles) { +to iterate: + # Movimiento del robot + if (avanzando): + { + self set-global-velocity to (CELDAS_MAX_VELOCITY). + } + if (retrocediendo): + { + self set-global-velocity to (-CELDAS_MAX_VELOCITY). + } + if (girando_izq): + { + self set-global-velocity to 0. + self turn-left. + #if (iterate): self rotate around-axis (0,1,0) by (1.570796/CELDAS_TURNO)*iterate. + print "izq: ", (1.570796/CELDAS_TURNO)*iterate. + } + if (girando_der): + { + self set-global-velocity to 0. + self turn-right. + #if (iterate): self rotate around-axis (0,1,0) by (-1.570796/CELDAS_TURNO)*iterate. + print "der: ", (-1.570796/CELDAS_TURNO)*iterate. + } + #print "vel: ", (bodyLink get-velocity). + # Actualiza entorno self update-entorno. @@ -413,7 +445,7 @@ CeldasLightVehicle : CeldasVehicle (aka CeldasVehicles) { if (iterate == CELDAS_TURNO): { # Actualiza entorno segun si se movio o no - if (self near position posicion-inicial with-error 2.0): + if (self near position posicion-inicial with-error 1.0): { sa set-entorno value 0 with-name "movido". } @@ -433,16 +465,6 @@ CeldasLightVehicle : CeldasVehicle (aka CeldasVehicles) { iterate++. } - # Movimiento del robot - if (avanzando): - self set-global-velocity to (CELDAS_MAX_VELOCITY). - if (retrocediendo): - self set-global-velocity to (-CELDAS_MAX_VELOCITY). - if (girando_izq): - self turn-left. - if (girando_der): - self turn-right. - } Stationary : CeldasObstacle (aka CeldasObstacles) { @@ -610,13 +632,26 @@ Link : CeldasSensor (aka CeldasSensors) { des2=0. if(dot(direction,(1,1,1))<0): { - if((dot((self get-location),positiveDirection))>(dot(obsLoc,positiveDirection))): - des2=1. + if(dot((body get-location),positiveDirection) > dot((self get-location),positiveDirection)): + { + if((dot((self get-location),positiveDirection))>(dot(obsLoc,positiveDirection))): + des2=1. + } + else + if((dot((self get-location),positiveDirection))<(dot(obsLoc,positiveDirection))): + des2=1. } else { - if((dot((self get-location),positiveDirection))<(dot(obsLoc,positiveDirection))): + if(dot((body get-location),positiveDirection) < dot((self get-location),positiveDirection)): + { + if((dot((self get-location),positiveDirection))<(dot(obsLoc,positiveDirection))): des2=1. + } + else + if((dot((self get-location),positiveDirection))>(dot(obsLoc,positiveDirection))): + des2=1. + } diff --git a/trunk/src/breve/Laberinto.tz b/trunk/src/breve/Laberinto.tz index 8ab1619..4c38996 100644 --- a/trunk/src/breve/Laberinto.tz +++ b/trunk/src/breve/Laberinto.tz @@ -186,6 +186,7 @@ Control: myControl{ self watch item vehicle. vehicle move to (0, 0, 10). + vehicle rotate around-axis (0,1,0) by 3.1415926. +to iterate: super iterate. diff --git a/trunk/src/sistemaautonomo.cpp b/trunk/src/sistemaautonomo.cpp index cf9eb04..695e538 100644 --- a/trunk/src/sistemaautonomo.cpp +++ b/trunk/src/sistemaautonomo.cpp @@ -129,7 +129,7 @@ bool CSistemaAutonomo::validate_theory(CTeoria* t) #ifdef LOG std::cout << "Aplicando heuristica de generalizacion:\n"; #endif // LOG - this->heuristca_generalizacion(*t); + //this->heuristca_generalizacion(*t); #ifdef DEBUG std::cout << "SA: Aplicando heuristica de retraccion\n"; #endif // DEBUG