summaryrefslogtreecommitdiff
path: root/2005/i/robert/src/ai
diff options
context:
space:
mode:
authordufourj2005-05-06 14:37:10 +0000
committerdufourj2005-05-06 14:37:10 +0000
commit1d6fa32f84b92e6dab641beb918cbb809ce1265b (patch)
treeeafc0c6882233d52fe5afd09c015bb5765340c0e /2005/i/robert/src/ai
parent03f151f322ddcf22796b810a8a2cb02b55ede491 (diff)
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)
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 rinitialise
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 zro 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 dbut 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 paralllement au socle
+ std::cout << "On avance de 540mm" << std::endl;
+ basic(540); // 600 - 60
+ // On se place derrire les quilles en arrire
+ 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)
/*** Prplacement ***/
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 prplacement ***/
/*** Boucle de parcours de la ligne de fond ***/
@@ -210,13 +256,13 @@ Ai::parcourtFond (void)
std::cout << "On lve" << 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 derrire les quilles en arrire
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 protger
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 lgrement
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 rgler dans la config
bool Ai::update (void)
{
scheduler_.schedule(500, true);
- // Gestion des cas critiques
- /// XXX
+ bool retour = 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 sync ();
+ return retour;
}
/// Synchronise les donnes 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);
};