summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordufourj2005-05-06 14:37:10 +0000
committerdufourj2005-05-06 14:37:10 +0000
commit1d6fa32f84b92e6dab641beb918cbb809ce1265b (patch)
treeeafc0c6882233d52fe5afd09c015bb5765340c0e
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)
-rw-r--r--2005/i/robert/runtime/rc/config6
-rw-r--r--2005/i/robert/src/ai/ai.cc90
-rw-r--r--2005/i/robert/src/ai/ai.hh1
-rw-r--r--2005/i/robert/src/asserv/asserv.cc6
-rw-r--r--2005/i/robert/src/proto/proto.cc1
5 files changed, 79 insertions, 25 deletions
diff --git a/2005/i/robert/runtime/rc/config b/2005/i/robert/runtime/rc/config
index 9c7f686..041572a 100644
--- a/2005/i/robert/runtime/rc/config
+++ b/2005/i/robert/runtime/rc/config
@@ -3,8 +3,8 @@ asserv.tty = "/dev/ttyS1"
asserv.footing = 0xE3F
asserv.epsilon = 200.00
# Aprs homolgation, passage de 64 96
-asserv.accel = 96 #faut que ca fasse 8 dans l'AVR
-asserv.kp = 0x0FFF
+asserv.accel = 50 #faut que ca fasse 8 dans l'AVR
+asserv.kp = 0x1700 # 0x0FFF -> 0x0B00
asserv.ki = 0x0040
asserv.kd = 0x0FFF
asserv.eSat = 1023 # p E w
@@ -32,7 +32,7 @@ es.ascAccBas = 1
es.pVentouses = 3
-es.pStatTele = 8
+es.pStatTele = 1
es.teleSeuil = 1
motor.pStatPosition = 8
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);
};
diff --git a/2005/i/robert/src/asserv/asserv.cc b/2005/i/robert/src/asserv/asserv.cc
index 8b60a27..082f39b 100644
--- a/2005/i/robert/src/asserv/asserv.cc
+++ b/2005/i/robert/src/asserv/asserv.cc
@@ -308,10 +308,10 @@ void Asserv::setDSample (int dSample)
void Asserv::setAccel(int accel)
{
- accel_ = accel_;
+ accel_ = accel;
//log_ ("setAccel") << "avConv" << accel;
// envoie vers l'AVR
- proto_.send('p',"bb", 'a', accel);
+ proto_.send('p',"bb", 'a', accel_);
}
/// Renvoie l'acclration en unit international (mm/s)
@@ -326,7 +326,7 @@ void Asserv::setMaxSpeed(int maxSLin, int maxSRot)
maxSLin_ = (maxSLin > 0 ? maxSLin : maxSLin_);
maxSRot_ = (maxSRot > 0 ? maxSRot : maxSRot_);
// Envoie l'AVR
- proto_.send('p',"bbb", 'm', maxSLin, maxSRot);
+ proto_.send('p',"bbb", 'm', maxSLin_, maxSRot_);
}
int Asserv::getMaxLSpeed(void)
diff --git a/2005/i/robert/src/proto/proto.cc b/2005/i/robert/src/proto/proto.cc
index 177f5c3..a7ada32 100644
--- a/2005/i/robert/src/proto/proto.cc
+++ b/2005/i/robert/src/proto/proto.cc
@@ -241,6 +241,7 @@ Proto::getFrame(void)
currentFrame_.command = receivedChar;
revState_ = 2;
}
+ // On vrifie que le match n'est pas fini
break;
case 2:
d = hex2digit (receivedChar);