diff --git a/Cerveau/Cerveau.ino b/Cerveau/Cerveau.ino index 038b6f9..968ece3 100644 --- a/Cerveau/Cerveau.ino +++ b/Cerveau/Cerveau.ino @@ -320,7 +320,7 @@ void gestion_match(){ rotation_rad = 100; Triangulation_send_immobile(1); - //index_Maitre = DEPLACEMENT_RELATIF; + index_Maitre = MATCH_EN_COURS; } break; @@ -345,6 +345,9 @@ void gestion_match(){ break; case MATCH_EN_COURS: + if(Strategie() == ACTION_TERMINEE){ + index_Maitre = ATTENTE_ORDRE; + } break; case TEST_DEPLACEMENT_ABSOLU: @@ -354,6 +357,46 @@ void gestion_match(){ break; } } + +enum etat_action_t Strategie(void){ + static enum { + STRAT_RECULE_BANDEROLE, // Deplacement relatif + STRAT_ALLER_GRADINS_1, // Déplacement absolu + STRAT_ALLER_PREPA_BACKSTAGE, // Déplacement absolu + STRAT_ALLER_BACKSTAGE // Déplacement relatif + + }etat_strategie = STRAT_RECULE_BANDEROLE; + enum etat_action_t etat_action; + int translation_x_mm, translation_y_mm; + float rotation_rad; + + switch(etat_strategie){ + case STRAT_RECULE_BANDEROLE: + // Déplacement en X + translation_x_mm = -450; + translation_y_mm = 0; + rotation_rad = 0; + etat_action = deplacement_relatif(translation_x_mm, translation_y_mm, rotation_rad, 0); + if(etat_action == ACTION_TERMINEE){ + etat_strategie = STRAT_ALLER_GRADINS_1; + } + break; + + case STRAT_ALLER_GRADINS_1: + etat_action = deplacement_absolu(730, 550, M_PI/2., 0); + if(etat_action == ACTION_TERMINEE){ + etat_strategie = STRAT_RECULE_BANDEROLE; + return ACTION_TERMINEE; + } + + + } + + return ACTION_EN_COURS; + +} + + /// @brief : compare la position actuelle et la position lue par la balise /// Note : Pour l'instant, on ne déclenche un mouvment qu'en cas d'ecart sur la distance, pas sur l'orientation. void compar_cinematique(int consigne_x_mm, int consigne_y_mm, float consigne_orientation_rad,