From 1d6fa32f84b92e6dab641beb918cbb809ce1265b Mon Sep 17 00:00:00 2001 From: dufourj Date: Fri, 6 May 2005 14:37:10 +0000 Subject: Config rc : amélioriation des paramêtres asserv (accel/kp) diminution des stats Ai : amélioriation de l'algo de parcour du fond (vitesse/tempo) Asserv : correction des setter invalides (setMaxSpeed/setAccel) --- 2005/i/robert/src/ai/ai.cc | 90 ++++++++++++++++++++++++++++++++++++---------- 2005/i/robert/src/ai/ai.hh | 1 + 2 files changed, 72 insertions(+), 19 deletions(-) (limited to '2005/i/robert/src/ai') diff --git a/2005/i/robert/src/ai/ai.cc b/2005/i/robert/src/ai/ai.cc index adce36a..dc6ba18 100644 --- a/2005/i/robert/src/ai/ai.cc +++ b/2005/i/robert/src/ai/ai.cc @@ -53,10 +53,11 @@ Ai::~Ai (void) // On réinitialise init (); // On sync - do { - update (); + do + { + scheduler_.schedule(500, true); } - while (motor_.sync ()); + while (!sync ()); } /// Initialise le robot @@ -167,6 +168,27 @@ Ai::initTest (void) init(); // Reset la PWM à zéro si on a fait de la merde en le posant sur la table resetPwm (); + + // On change la vitesse max pour reculer + std::cout << "On change la vitesse à 2" << std::endl; + setMaxSpeed (20, -1); + setAccel (30); + // Taper la boule + std::cout << "On recule à fond de 460mm" << std::endl; + basic(-300); + std::cout << "Arret d'urgence" << std::endl; + //setAccel (0); + //stop (); + // On restaure la vitesse + temporisation (400); + init (); + std::cout << "On restaure la vitesse à 8" << std::endl; + setAccel (96); + setMaxSpeed (8, -1); + std::cout << "On avance pour voir" << std::endl; + basic(+300); + + /* std::cout << "On tourne -> -PI/2" << std::endl; rotation(-M_PI/2); // On recule dans le mur @@ -187,9 +209,32 @@ Ai::initTest (void) // On lance le timer de début de match std::cout << "Lancmeent du match" << std::endl; Timer::startRound(); - /*** Fin de l'init du match ***/ + // *** Fin de l'init du match *** // - parcourtFond (); + // On avance pour pouvoir aller vers la boule parallèlement au socle + std::cout << "On avance de 540mm" << std::endl; + basic(540); // 600 - 60 + // On se place derrière les quilles en arrière + std::cout << "GoTo 925,-1150 -> Pi" << std::endl; + goTo(925, -1150, M_PI); + // On change la vitesse max pour reculer + std::cout << "On change la vitesse à 2" << std::endl; + setMaxSpeed (20, -1); + setAccel (96); + // Taper la boule + std::cout << "On recule à fond de 460mm" << std::endl; + basic(-460); + std::cout << "Arret d'urgence" << std::endl; + setAccel (0); + stop (); + // On restaure la vitesse + std::cout << "On restaure la vitesse à 8" << std::endl; + setAccel (96); + setMaxSpeed (8, -1); + std::cout << "On avance pour voir" << std::endl; + basic(-300); + */ + } @@ -200,8 +245,9 @@ Ai::parcourtFond (void) /*** Préplacement ***/ std::cout << "Placement dans la ligne - goTo 170" << std::endl; goTo (200, motor_.getY (), - M_PI / 2); + // XXX 1 degré -> 0.017 std::cout << "On avance de 30 cm" << std::endl; - basic (300); + basic (800); /*** Fin du préplacement ***/ /*** Boucle de parcours de la ligne de fond ***/ @@ -210,13 +256,13 @@ Ai::parcourtFond (void) std::cout << "On lève" << std::endl; ascenceur (true); std::cout << "Vitesse lente de rotation 2" << std::endl; - setMaxSpeed (-1, 2); + setMaxSpeed (-1, 1); 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); + temporisation (3000); std::cout << "On lache" << std::endl; ventouses (); std::cout << "On attend" << std::endl; @@ -232,7 +278,7 @@ Ai::parcourtFond (void) std::cout << "On avance de 100" << std::endl; basic (200); } - std::cout << "Fini" << std::endl; + std::cout << "Fini : " << Timer::getRoundTime () << std::endl; } @@ -256,24 +302,24 @@ Ai::protectQuillePont (void) basic(540); // 600 - 60 // On se place derrière les quilles en arrière std::cout << "GoTo 870,-675 -> Pi" << std::endl; - goTo(1225, -1125, M_PI); + goTo(1225, -1200, M_PI); // On change la vitesse max pour reculer std::cout << "On change la vitesse à 2" << std::endl; - motor_.setMaxSpeed (2, -1); + setMaxSpeed (2, -1); // Taper la boule std::cout << "On recule lentement de 200mm" << std::endl; - basic(-200); + basic(-140); // On restaure la vitesse std::cout << "On restaure la vitesse à 8" << std::endl; - motor_.setMaxSpeed (8, -1); + setMaxSpeed (8, -1); // On attend un peu pour protéger std::cout << "On temporise" << std::endl; - temporisation (1500); // 15000 XXX A changer + temporisation (2500); // 15000 XXX A changer // XXX à finir // On se barre des quilles basic (200); // On retourne à l'origine - goTo (450, -300, M_PI); + goTo (600, -300, M_PI); // On avance légèrement goTo (250, motor_.getY (), -M_PI / 2); // XXX Faire un fuck the wall en Y @@ -393,12 +439,11 @@ void Ai::ventouses (void) /// XXX Temps bool Ai::update (void) { scheduler_.schedule(500, true); - // Gestion des cas critiques - /// XXX + bool retour = 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 sync (); + return retour; } /// Synchronise les données avec motor et es. @@ -465,7 +510,7 @@ void Ai::initMatch (void) Timer::startRound(); // On temporise pour laisser Taz sortir std::cout << "Attente du 15 secondes" << std::endl; - temporisation(15000); + temporisation(21000); } void @@ -475,3 +520,10 @@ Ai::setMaxSpeed (int l, int r) while (!update ()); } +void +Ai::setAccel (int a) +{ + motor_.setAccel (a); + while (!update ()); +} + diff --git a/2005/i/robert/src/ai/ai.hh b/2005/i/robert/src/ai/ai.hh index 969bc16..b563410 100644 --- a/2005/i/robert/src/ai/ai.hh +++ b/2005/i/robert/src/ai/ai.hh @@ -94,6 +94,7 @@ class Ai // test void initTest (void); void setMaxSpeed (int l, int r); + void setAccel (int a); void runProtectFond (void); void parcourtFond (void); }; -- cgit v1.2.3