summaryrefslogtreecommitdiff
path: root/2005/i/robert/src/ai/ai.cc
diff options
context:
space:
mode:
authordufourj2005-05-06 08:58:15 +0000
committerdufourj2005-05-06 08:58:15 +0000
commit9994761107b21577732a4926bf1f2d847ed00913 (patch)
treee601ec85342e40ea4a4b6b6e29f724aac16c92bf /2005/i/robert/src/ai/ai.cc
parent73a8910c6b5cb221534d788f72e2e7ab73210ca8 (diff)
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
Diffstat (limited to '2005/i/robert/src/ai/ai.cc')
-rw-r--r--2005/i/robert/src/ai/ai.cc134
1 files changed, 89 insertions, 45 deletions
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 zro si on a fait de la merde en le posant sur la table
resetPwm ();
- // Attend la premire 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 dpart 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 dbut de match
+ std::cout << "Lancmeent du match" << std::endl;
+ Timer::startRound();
+ /*** Fin de l'init du match ***/
+
+ parcourtFond ();
- //dbut 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 derrire soit
+void
+Ai::parcourtFond (void)
+{
+ /*** Prplacement ***/
+ 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 prplacement ***/
+
+ /*** Boucle de parcours de la ligne de fond ***/
+ while (motor_.getY () > -1700)
+ {
+ std::cout << "On lve" << 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 rgler 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 vrifie 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 donnes 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 zro.
@@ -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 dbut 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 ());
}