From 82c3720ff7124596b2fdd2d214b6b253ebed83f7 Mon Sep 17 00:00:00 2001 From: dufourj Date: Thu, 5 May 2005 18:33:14 +0000 Subject: Implémentation des algos --- 2005/i/robert/src/ai/ai.cc | 60 +++++++++++++++++++++++++++++++++++++++++ 2005/i/robert/src/ai/ai.hh | 6 +++++ 2005/i/robert/src/ai/test_ai.cc | 15 ++++++++++- 3 files changed, 80 insertions(+), 1 deletion(-) (limited to '2005/i/robert') diff --git a/2005/i/robert/src/ai/ai.cc b/2005/i/robert/src/ai/ai.cc index 573a59e..847fe76 100644 --- a/2005/i/robert/src/ai/ai.cc +++ b/2005/i/robert/src/ai/ai.cc @@ -139,6 +139,63 @@ void Ai::run(void) std::cout << "On a fini" << std::endl; } +// Balistique non fiable. +void +Ai::initBalNonFiable (void) +{ + // Lancement du placement pour les matchs + initMatch (); + // Protection des quilles devant le pont + protectQuillePont (); +} + +// Balistique fiable. +void +Ai::initBalFiable (void) +{ + // Lancement du placement pour les matchs + initMatch (); + // Goto pour avance puis tourner de - PI/2 + // Algo de recherche de quille sur ligne du fond +} + +// Va du point de départ au pont pour protéger les quilles. +void +Ai::protectQuillePont (void) +{ + // 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 870,-675 -> Pi" << std::endl; + goTo(1225, -1125, M_PI); + // On change la vitesse max pour reculer + motor_.setMaxSpeed (128, -1); + // Taper la boule + std::cout << "On recule lentement de 200mm" << std::endl; + basic(-200); + // On restaure la vitesse + motor_.setMaxSpeed (64, -1); + // On attend un peu pour protéger + temporisation (15000); // XXX A changer + // XXX à finir + // On se barre des quilles + basic (200); + // On retourne à l'origine + goTo (450, -300, M_PI); + // On avance légèrement + goTo (250, motor_.getY (), -M_PI / 2); + // XXX Faire un fuck the wall en Y + // On met la caméra + // On avance d'une valeur fixe si on a rien + // Si on a quelque chose, on y va + // On remonte, rotation de 0 puis M_PI / 2 + // On pose, on recule de 100, on baisse l'ascenceur + // On pivote à - M_PI / 2 + // On réitère si on est pas au bout 1800 + // On recommence l'algo dans l'autre sens +} + /// Attend. void Ai::wait (int t) { @@ -313,4 +370,7 @@ void Ai::initMatch (void) // On lance le timer de début de match std::cout << "Lancmeent du match" << std::endl; Timer::startRound(); + // On temporise pour laisser Taz sortir + std::cout << "Attente du 15 secondes" << std::endl; + temporisation(15000); } diff --git a/2005/i/robert/src/ai/ai.hh b/2005/i/robert/src/ai/ai.hh index 7e81bcb..a4f6719 100644 --- a/2005/i/robert/src/ai/ai.hh +++ b/2005/i/robert/src/ai/ai.hh @@ -85,6 +85,12 @@ class Ai void resetPwm (void); /// Initialise le robot pour faire un match (placement). void initMatch (); + // Balistique non fiable. + void initBalNonFiable (void); + // Balistique fiable. + void initBalFiable (void); + // Va du point de départ au pont pour protéger les quilles. + void protectQuillePont (void); }; #endif // ai_hh diff --git a/2005/i/robert/src/ai/test_ai.cc b/2005/i/robert/src/ai/test_ai.cc index 0d0aae8..835ee8d 100644 --- a/2005/i/robert/src/ai/test_ai.cc +++ b/2005/i/robert/src/ai/test_ai.cc @@ -71,7 +71,20 @@ main (int argc, char **argv) ai_.stop(); break; case 'r': - ai_.run(); + // Gestion des différents cas/types de robot + if (++i > argc) + throw std::runtime_error ("syntax error"); + if (argv[i][0] == '0') + { + // Pour un robot qui n'est pas fiable en + // asservissement + ai_.initBalNonFiable(); + // XXX Différents types d'ai + } + if (argv[i][0] == '1') + { + ai_.initBalFiable (); + } break; case 'j': if(++i > argc) -- cgit v1.2.3