summaryrefslogtreecommitdiff
path: root/2005/i/robert/src/ai
diff options
context:
space:
mode:
Diffstat (limited to '2005/i/robert/src/ai')
-rw-r--r--2005/i/robert/src/ai/ai.cc90
-rw-r--r--2005/i/robert/src/ai/ai.hh1
2 files changed, 72 insertions, 19 deletions
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 à régler dans la config
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);
};