summaryrefslogtreecommitdiff
path: root/2005/i
diff options
context:
space:
mode:
authordufourj2005-05-05 18:33:14 +0000
committerdufourj2005-05-05 18:33:14 +0000
commit82c3720ff7124596b2fdd2d214b6b253ebed83f7 (patch)
tree3be71836cbf823d27b0b864f747924c489bcddb8 /2005/i
parent2ddd21b024ff07b71012f5643a692add13f35024 (diff)
Implémentation des algos
Diffstat (limited to '2005/i')
-rw-r--r--2005/i/robert/src/ai/ai.cc60
-rw-r--r--2005/i/robert/src/ai/ai.hh6
-rw-r--r--2005/i/robert/src/ai/test_ai.cc15
3 files changed, 80 insertions, 1 deletions
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)