From 4e4265af3449784aa7c82b98904849025fadc28d Mon Sep 17 00:00:00 2001 From: dufourj Date: Tue, 14 Jun 2005 20:03:47 +0000 Subject: Petite correction dans "l'intégration de la caméra" et ajout de log/commentaires --- 2005/i/robert/src/ai/ai.cc | 67 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 47 insertions(+), 20 deletions(-) (limited to '2005/i') diff --git a/2005/i/robert/src/ai/ai.cc b/2005/i/robert/src/ai/ai.cc index 958aa78..cef6279 100644 --- a/2005/i/robert/src/ai/ai.cc +++ b/2005/i/robert/src/ai/ai.cc @@ -432,26 +432,33 @@ Ai::parcourtFond (void) // On scan tout autour du robot void Ai::scanVision (bool followLine) /// XXX mettre un argument { + std::cout << "On commence le scannage de quiles" << std::endl; double angleDepart = motor_.getA(); std::vector > skittles; for (int i = 0; i < (followLine ? 1 : 4) ; i++) - { + { + std::cout << "On prend la photo" << std::endl; // On prend la photo oVision_.takeShoot(); + std::cout << "On update ovision" << std::endl; // On analyse la photo oVision_.update(); + std::cout << "On sauvegarde la lsite de quilles" << std::endl; // On mets la liste brute dans le vector skittles.push_back(oVision_.getSkittles()); // on tournicote - motor_.rotation(angleDepart + ((i + 1) * M_PI/4)); - } + if (!followLine) + motor_.rotation(angleDepart + ((i + 1) * M_PI/4)); + } analyseSkittles(skittles); + remonteWithCam (); } // XXX Aucun moyen de tourner pour l'instant (donc followLine only) // On analyse les quilles pour ne garder que les prétendants void Ai::analyseSkittles(std::vector > skittlesBrut) { + std::cout << "AnalyseSkittles" << std::endl; goodSkittles_.clear(); // On regarde pour tout les angles for(std::vector >::iterator it = skittlesBrut.begin(); @@ -464,10 +471,11 @@ void Ai::analyseSkittles(std::vector > skittlesBrut) continue; if (it2->vertical) continue; - if (it2->partial) + if (it2->partial) // XXX to manage continue; if (it2->small) continue; + std::cout << "On a une quille une gagnante !" << std::endl; goodSkittles_.push_back(*it2); } } @@ -478,22 +486,41 @@ void Ai::analyseSkittles(std::vector > skittlesBrut) void Ai::remonteWithCam(void) { int x, y , angle, dist; - Zone zeSkittles = goodSkittles_.back(); - oVision_.getLoc(zeSkittles, x, y, angle, dist); - dist -= 9; - rotation(motor_.getA() + angle); - setMaxSpeed(2,1); - basic(dist); - ascenceur(true); - basic (-dist - 5); - rotation(M_PI); - rotation(M_PI / 2); - basic(30); // XXX vérifier valeur - ventouses(); - setMaxSpeed(8, 4); - basic(-30); // XXX Vérifier valeur - ascenceur(false); - rotation(3 * M_PI / 4); + std::cout << "remonteWithCam" << std::endl; + if (goodSkittles_.size () > 0) + { + // On récupère la quille + std::cout << "On récupère la quille" << std::endl; + Zone zeSkittles = goodSkittles_.back(); + // On récupère sa position + oVision_.getLoc(zeSkittles, x, y, angle, dist); + std::cout << "x : " << x << ", y : " << y << + ", a : " << angle << ", d : " << dist << "." << std::endl; + // On enlève la partie avant du robot du au calibrage + dist -= 90; + // On pivote de l'angle demandée + // XXX position relative par rapport à la prise de photo + std::cout << "Rotation" << std::endl; + rotation(motor_.getA() + angle); + std::cout << "Max speed" << std::endl; + setMaxSpeed(2,1); + std::cout << "basic dist/d" << std::endl; + basic(dist); + std::cout << "Ascenceur +" << std::endl; + ascenceur(true); +// basic (-dist - 5); +// rotation(M_PI); +// rotation(M_PI / 2); +// basic(30); // XXX vérifier valeur + ventouses(); + std::cout << "Max speed" << std::endl; + setMaxSpeed(8, 4); + std::cout << "basic - 30" << std::endl; + basic(-30); // XXX Vérifier valeur + std::cout << "Ascenceur -" << std::endl; + ascenceur(false); +// rotation(3 * M_PI / 4); + } } // Va du point de départ au pont pour protéger les quilles. -- cgit v1.2.3