]> git.llucax.com Git - z.facultad/75.68/celdas.git/blobdiff - trunk/src/breve/Celdas.tz
Últimos cambios y documentación.
[z.facultad/75.68/celdas.git] / trunk / src / breve / Celdas.tz
index ae29a51d0e9a3474b9a14715087abfd817a88c99..481c28cc6b9a0c10609740d56ea0d4834c879e98 100644 (file)
@@ -8,7 +8,7 @@
 \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
@@ -205,24 +205,31 @@ CeldasLightVehicle : CeldasVehicle (aka CeldasVehicles) {
                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
@@ -293,7 +300,7 @@ CeldasLightVehicle : CeldasVehicle (aka CeldasVehicles) {
                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
@@ -317,7 +324,7 @@ CeldasLightVehicle : CeldasVehicle (aka CeldasVehicles) {
                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
@@ -339,6 +346,31 @@ CeldasLightVehicle : CeldasVehicle (aka CeldasVehicles) {
 \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
@@ -413,7 +445,7 @@ CeldasLightVehicle : CeldasVehicle (aka CeldasVehicles) {
                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
@@ -433,16 +465,6 @@ CeldasLightVehicle : CeldasVehicle (aka CeldasVehicles) {
                        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
@@ -610,13 +632,26 @@ Link : CeldasSensor (aka CeldasSensors) {
                        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