Robot's source code

Dependencies:   mbed

Revision:
119:c45efcd706d9
Parent:
118:09bfc62d4867
Child:
120:06643cbec98a
Child:
121:0cc17ba879cb
--- a/main.cpp	Wed May 06 11:23:08 2015 +0000
+++ b/main.cpp	Wed May 06 15:17:16 2015 +0000
@@ -207,9 +207,15 @@
         odometry.setY(400);
         
         //objectifs.push_back(new Obj_clap(0, 0, 0, &ax12_brasG,&ax12_brasD));
-        objectifs.push_back( new Obj_pince(1750, 550, -PI/2, &ax12_pince) );
+        objectifs.push_back( new Obj_pince(1750, 600, 1750, 450, -PI/2, &ax12_pince) );
         objectifs.back()->setId(IDO_PC1);
         
+        objectifs.push_back( new Obj_depot(1000, 400, -PI/2, &ax12_pince) );
+        objectifs.back()->setId(IDO_DEPOT);
+        
+        objectifs.push_back( new Obj_pince(800, 620, 800, 710, PI/2, &ax12_pince) );
+        objectifs.back()->setId(IDO_PC2);
+        
         objectifs.push_back( new Obj_depot(1000, 500, -PI/2, &ax12_pince) );
         objectifs.back()->setId(IDO_DEPOT);
     }
@@ -227,31 +233,30 @@
     // *--------------------------* //
     //              IA              //
     
+    /*while(1)
+    {
+        if(logger.readable())
+        {
+            char c = logger.getc();
+            logger.printf("%c",c);
+            if(c == 'a')
+            {
+                motorL.setSpeed(motorL.getSpeed()+0.05);
+                motorR.setSpeed(motorR.getSpeed()+0.05);
+                logger.printf("%.2f\r\n",motorL.getSpeed());
+            }
+            if(c == 'z')
+            {
+                motorL.setSpeed(motorL.getSpeed()-0.05);
+                motorR.setSpeed(motorR.getSpeed()-0.05);
+                logger.printf("%.2f\r\n",motorL.getSpeed());
+            }
+        }
+    }*/
+    
     #define IA
     #ifdef IA
     
-        logger.printf("Pathfinding ... ");
-        Timer t;
-        t.start();
-        int i = terrain.AStar(1000,400,1750,600,10);
-        t.stop();
-        logger.printf("[done]\r\n");
-        
-        logger.printf("Return : %d in %.3fms\r\n",i,t.read()*1000);
-        
-        for(i=1;i<terrain.path.size()-1;i++)
-        {
-            logger.printf("%d\t%.3f\t%.3f\r\n",i,terrain.path[i].x,terrain.path[i].y);
-            asserv.setGoal(terrain.path[i].x,terrain.path[i].y);
-            while(!asserv.isArrived())wait(0.1);
-        }
-        asserv.setGoal(terrain.path[i].x,terrain.path[i].y);
-        while(!asserv.isArrived())wait(0.1);
-        
-        logger.printf("Finit !! \r\n");
-        
-        while(1);
-    
     while(continuer)
     {
         logger.printf("Recherche d'objectif.......");
@@ -266,7 +271,18 @@
             if(!objectifs[objAct]->isActive()) // Pas la peine de le faire, il n'est pas actif
                 continue;
             //logger.printf("Actif\r\n");
-            int retourAStar = terrain.AStar(odometry.getX(), odometry.getY(), objectifs[objAct]->getX(), objectifs[objAct]->getX(), 5);
+            int retourAStar = terrain.AStar(odometry.getX(), odometry.getY(), objectifs[objAct]->getX(), objectifs[objAct]->getY(), 10);
+            if(retourAStar == 1) // L'objectif est atteignable !!
+            {
+                newObj = true;
+                for(unsigned int i=0;i<terrain.path.size();i++)
+                    logger.printf("%d : %.3f %.3f\r\n",i,terrain.path[i].x,terrain.path[i].y);
+                break;
+            }
+            
+            if(retourAStar == 3) // Overload memoire
+                retourAStar = terrain.AStar(odometry.getX(), odometry.getY(), objectifs[objAct]->getX(), objectifs[objAct]->getY(), 25);
+            
             if(retourAStar == 1) // L'objectif est atteignable !!
             {
                 newObj = true;
@@ -274,9 +290,7 @@
             }
             
             if(retourAStar == 3) // Overload memoire
-            {
-                retourAStar = terrain.AStar(odometry.getX(), odometry.getY(), objectifs[objAct]->getX(), objectifs[objAct]->getX(), 50);
-            }
+                retourAStar = terrain.AStar(odometry.getX(), odometry.getY(), objectifs[objAct]->getX(), objectifs[objAct]->getY(), 50);
             
             if(retourAStar == 1) // L'objectif est atteignable !!
             {
@@ -290,7 +304,7 @@
         if(newObj)
         {
             
-            logger.printf("-> Objectif : %d\r\n",objectifs[objAct]->getId());
+            logger.printf("-> Objectif : %d %d\r\n",objectifs[objAct]->getId(),terrain.path.size());
             
             // Déplacement vers le nouvel objectif //
             for(int i=1;i<terrain.path.size()-1;i++)