Match 1
This commit is contained in:
parent
8bdffe821d
commit
d94cedd6e2
@ -438,39 +438,48 @@ void IHM_attente_match(int * couleur){
|
||||
|
||||
enum etat_action_t Strategie(int couleur){
|
||||
static enum {
|
||||
STRAT_INIT, // On attend de ne pas voir la tirette dans la detection de l'adversaire
|
||||
STRAT_RECULE_BANDEROLE, // Deplacement relatif
|
||||
STRAT_ALLER_GRADINS_1_A, // Déplacement relatif
|
||||
STRAT_ALLER_GRADINS_1_B, // Cherche gradin
|
||||
STRAT_ALLER_GRADINS_1_C, // Déplacement relatif
|
||||
STRAT_DEPOSE_GRADIN_1A, // Empile gradin
|
||||
STRAT_DEPOSE_GRADIN_1B, // Recule du gradin
|
||||
STRAT_ALLER_PREPA_BACKSTAGE, // Déplacement absolu
|
||||
STRAT_ALLER_BACKSTAGE // Déplacement relatif
|
||||
STRAT_ALLER_PREPA_BACKSTAGE, // Déplacement relaif
|
||||
STRAT_ATTENTE_BACKSTAGE, // Attente
|
||||
STRAT_ALLER_BACKSTAGE, // Déplacement relatif
|
||||
STRAT_FIN
|
||||
|
||||
}etat_strategie = STRAT_RECULE_BANDEROLE;
|
||||
enum etat_action_t etat_action;
|
||||
int translation_x_mm, translation_y_mm;
|
||||
static unsigned long temps_timer;
|
||||
float rotation_rad;
|
||||
|
||||
switch(etat_strategie){
|
||||
case STRAT_INIT:
|
||||
temps_timer = millis();
|
||||
break;
|
||||
case STRAT_RECULE_BANDEROLE:
|
||||
// Déplacement en X
|
||||
translation_x_mm = -300;
|
||||
translation_y_mm = 0;
|
||||
rotation_rad = 0;
|
||||
etat_action = deplacement_relatif(translation_x_mm, translation_y_mm, rotation_rad, 1);
|
||||
if(etat_action == ACTION_TERMINEE){
|
||||
etat_strategie = STRAT_ALLER_GRADINS_1_A;
|
||||
if(millis() - temps_timer > 300){
|
||||
// Déplacement en X
|
||||
translation_x_mm = -300;
|
||||
translation_y_mm = 0;
|
||||
rotation_rad = 0;
|
||||
etat_action = deplacement_relatif(translation_x_mm, translation_y_mm, rotation_rad, 1);
|
||||
if(etat_action == ACTION_TERMINEE){
|
||||
etat_strategie = STRAT_ALLER_GRADINS_1_A;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case STRAT_ALLER_GRADINS_1_A:
|
||||
translation_x_mm = -500;
|
||||
translation_x_mm = -450;
|
||||
rotation_rad = 0;
|
||||
if(couleur == COULEUR_JAUNE){
|
||||
translation_y_mm = -500;
|
||||
translation_y_mm = -450;
|
||||
}else{
|
||||
translation_y_mm = 500;
|
||||
translation_y_mm = 450;
|
||||
}
|
||||
etat_action = deplacement_relatif(translation_x_mm, translation_y_mm, rotation_rad, 1);
|
||||
if(etat_action == ACTION_TERMINEE){
|
||||
@ -480,7 +489,7 @@ enum etat_action_t Strategie(int couleur){
|
||||
|
||||
case STRAT_ALLER_GRADINS_1_B:
|
||||
etat_action = gradin_approche();
|
||||
if(etat_action == ACTION_TERMINEE){
|
||||
if(etat_action == ACTION_TERMINEE || etat_action == ACTION_ECHEC){
|
||||
etat_strategie = STRAT_ALLER_GRADINS_1_C;
|
||||
}
|
||||
break;
|
||||
@ -511,22 +520,31 @@ enum etat_action_t Strategie(int couleur){
|
||||
|
||||
case STRAT_ALLER_PREPA_BACKSTAGE:
|
||||
if(couleur == COULEUR_JAUNE){
|
||||
etat_action = deplacement_absolu(550, 1150, M_PI/2., 0);
|
||||
etat_action = deplacement_relatif(0, 0, 165. / 180 * M_PI, 0);
|
||||
}else{
|
||||
etat_action = deplacement_absolu(3000 - 550, 1150, M_PI/2., 0);
|
||||
etat_action = deplacement_relatif(0, 0, -165. / 180 * M_PI, 0);
|
||||
}
|
||||
if(etat_action == ACTION_TERMINEE){
|
||||
etat_strategie = STRAT_ATTENTE_BACKSTAGE;
|
||||
}
|
||||
break;
|
||||
|
||||
case STRAT_ATTENTE_BACKSTAGE:
|
||||
if (millis() - temps_timer > 95000){
|
||||
etat_strategie = STRAT_ALLER_BACKSTAGE;
|
||||
}
|
||||
break;
|
||||
|
||||
case STRAT_ALLER_BACKSTAGE:
|
||||
etat_action = deplacement_relatif(500, 0, 0, 0);
|
||||
etat_action = deplacement_relatif(1140, 0, 0, 0);
|
||||
if(etat_action == ACTION_TERMINEE){
|
||||
etat_strategie = STRAT_RECULE_BANDEROLE;
|
||||
return ACTION_TERMINEE;
|
||||
etat_strategie = STRAT_FIN;
|
||||
}
|
||||
break;
|
||||
|
||||
case STRAT_FIN:
|
||||
return ACTION_TERMINEE;
|
||||
break;
|
||||
}
|
||||
|
||||
return ACTION_EN_COURS;
|
||||
@ -610,7 +628,6 @@ enum etat_action_t gradin_approche(void){
|
||||
|
||||
case GA_GOTO_EN_FACE:
|
||||
case GA_GOTO_LARGE:
|
||||
Detect_gradin(&detect_gradin);
|
||||
if(detect_gradin.status != 2){
|
||||
nb_erreur++;
|
||||
if(nb_erreur > 100){
|
||||
|
Loading…
Reference in New Issue
Block a user