From 9994761107b21577732a4926bf1f2d847ed00913 Mon Sep 17 00:00:00 2001 From: dufourj Date: Fri, 6 May 2005 08:58:15 +0000 Subject: RC Config : correction d'un petit bug de config Ai : update qui sont "censé" fonctionner de manière à renvoyer l'état des buffer de proto suppression de log --- 2005/i/robert/src/ai/ai.cc | 134 ++++++++++++++++++++++++++++++--------------- 1 file changed, 89 insertions(+), 45 deletions(-) (limited to '2005/i/robert/src/ai/ai.cc') diff --git a/2005/i/robert/src/ai/ai.cc b/2005/i/robert/src/ai/ai.cc index 096f529..adce36a 100644 --- a/2005/i/robert/src/ai/ai.cc +++ b/2005/i/robert/src/ai/ai.cc @@ -69,7 +69,7 @@ void Ai::init(void) // on init la vision //oVision_.init(motor_.colorState() ? Group::redSkittle : // Group::greenSkittle); /// XXX - update(); + while (!update()); } /// stop le robot @@ -149,46 +149,90 @@ Ai::initBalNonFiable (void) protectQuillePont (); } +// Match de parcourt du fond du terrain +void +Ai::runProtectFond (void) +{ + // Lancement du placement pour les matchs + initMatch (); + // Protection des quilles devant le pont + parcourtFond (); +} // test void Ai::initTest (void) { + /*** Init du match ***/ init(); - std::cout << "Le jack est en attente" << std::endl; - waitJack(false); - std::cout << "Le jack est entré" << std::endl; // Reset la PWM à zéro si on a fait de la merde en le posant sur la table resetPwm (); - // Attend la première sortie du jack(init) - waitJack(true); - std::cout << "Le jack est sorti" << std::endl; + std::cout << "On tourne -> -PI/2" << std::endl; + rotation(-M_PI/2); + // On recule dans le mur + std::cout << "On se recale" << std::endl; + recale (); + motor_.setPosition(motor_.getX(), -60, -M_PI / 2); + // On avance vers la position de départ en y + std::cout << "On avance de 155mm" << std::endl; + basic (155); // 215 - 60 = 155 + // On rotate de 90 ° + std::cout << "On rotate -> 0" << std::endl; + rotation (0); + // On se recale vers x + std::cout << "On se recale" << std::endl; + recale(); + motor_.setPosition(60, motor_.getY(), 0); + std::cout << "On attend le jack" << std::endl; + // On lance le timer de début de match + std::cout << "Lancmeent du match" << std::endl; + Timer::startRound(); + /*** Fin de l'init du match ***/ + + parcourtFond (); - //début des tests - std::cout << "VItesse default" << std::endl; - basic(200); - basic(200); - - setMaxSpeed(8,-1); - std::cout << "VItesse à 8" << std::endl; - basic(-200); - std::cout << "Re 200" << std::endl; - basic(200); - std::cout << "Av 200" << std::endl; - - setMaxSpeed(4,-1); - std::cout << "VItesse à 4" << std::endl; - basic(-200); - std::cout << "Re 200" << std::endl; - basic(200); - std::cout << "Av 200" << std::endl; - - setMaxSpeed(2,-1); - std::cout << "VItesse à 2" << std::endl; - basic(-200); - std::cout << "Re 200" << std::endl; - basic(200); - std::cout << "Av 200" << std::endl; +} + +// Parcourt la ligne du fond, en aveugle pour relever des quilles et les poser derrière soit +void +Ai::parcourtFond (void) +{ + /*** Préplacement ***/ + std::cout << "Placement dans la ligne - goTo 170" << std::endl; + goTo (200, motor_.getY (), - M_PI / 2); + std::cout << "On avance de 30 cm" << std::endl; + basic (300); + /*** Fin du préplacement ***/ + + /*** Boucle de parcours de la ligne de fond ***/ + while (motor_.getY () > -1700) + { + std::cout << "On lève" << std::endl; + ascenceur (true); + std::cout << "Vitesse lente de rotation 2" << std::endl; + setMaxSpeed (-1, 2); + std::cout << "Tourne un peu" << std::endl; + rotation (M_PI); + std::cout << "Fini le tour" << std::endl; + rotation (M_PI / 2); + std::cout << "On attend" << std::endl; + temporisation (1000); + std::cout << "On lache" << std::endl; + ventouses (); + std::cout << "On attend" << std::endl; + temporisation (1500); + std::cout << "On restaure les vitesses" << std::endl; + setMaxSpeed (-1, 4); + std::cout << "On recule de 100" << std::endl; + basic (-100); + std::cout << "On descend" << std::endl; + ascenceur (false); + std::cout << "On se retourne" << std::endl; + rotation ( -M_PI / 2); + std::cout << "On avance de 100" << std::endl; + basic (200); + } + std::cout << "Fini" << std::endl; } @@ -246,7 +290,6 @@ Ai::protectQuillePont (void) /// Attend. void Ai::wait (int t) { - std::cout << "On attend le putain de Jack" << std::endl; motor_.wait(t); } @@ -343,7 +386,7 @@ void Ai::ascenceur (bool monte) void Ai::ventouses (void) /// XXX Temps à régler dans la config { es_.ventouses(); - update(); + while (!update()); } /// Attend une mise à jour @@ -352,19 +395,22 @@ bool Ai::update (void) scheduler_.schedule(500, true); // Gestion des cas critiques /// XXX - sync (); // On vérifie que le match n'est pas fini if (Timer::getRoundTime () > roundDuration_) throw std::runtime_error ("Fin de match, merci d'avoir participé !"); - return true; + return sync (); } /// Synchronise les données avec motor et es. -void +bool Ai::sync (void) { - motor_.sync(); - es_.sync(); + bool motor = motor_.sync(); + bool es = es_.sync(); + if (es && motor) + return true; + else + return false; } /// Reset la PWM à zéro. @@ -372,9 +418,7 @@ void Ai::resetPwm (void) { motor_.setPwm (0, 0); // synchronise - update(); - // XXX - update(); + while (!update()); } /// Initialise le robot pour faire un match (placement). @@ -417,17 +461,17 @@ void Ai::initMatch (void) waitJack(true); std::cout << "Le jack est sortie" << std::endl; // On lance le timer de début de match - std::cout << "Lancmeent du match" << std::endl; + std::cout << "Lancement du match" << std::endl; Timer::startRound(); // On temporise pour laisser Taz sortir std::cout << "Attente du 15 secondes" << std::endl; - //temporisation(15000); + temporisation(15000); } void Ai::setMaxSpeed (int l, int r) { motor_.setMaxSpeed (l, r); - update (); + while (!update ()); } -- cgit v1.2.3