cerise guache quasi-fonctionnelle - une bizarrerie au niveau de la position Y...

This commit is contained in:
Samuel 2023-05-08 22:50:00 +02:00
parent 2537c5d371
commit c7fb4b5ef8
3 changed files with 20 additions and 19 deletions

View File

@ -82,7 +82,7 @@ int main() {
AsserMoteur_Init(); AsserMoteur_Init();
Localisation_init(); Localisation_init();
while(mode_test()); //while(mode_test());
i2c_maitre_init(); i2c_maitre_init();
Trajet_init(); Trajet_init();
Balise_VL53L1X_init(); Balise_VL53L1X_init();

View File

@ -85,7 +85,7 @@ void Strategie(enum couleur_t couleur, uint32_t step_ms){
struct objectif_t objectif_1 = { .priorite = 1, .etat = A_FAIRE, .cible = CERISE_BAS}; struct objectif_t objectif_1 = { .priorite = 1, .etat = A_FAIRE, .cible = CERISE_BAS};
struct objectif_t objectif_2 = { .priorite = 2, .etat = A_FAIRE, .cible = CERISE_HAUT}; struct objectif_t objectif_2 = { .priorite = 2, .etat = A_FAIRE, .cible = CERISE_HAUT};
struct objectif_t objectif_3 = { .priorite = 3, .etat = A_FAIRE, .cible = CERISE_GAUCHE}; struct objectif_t objectif_3 = { .priorite = 3, .etat = A_FAIRE, .cible = CERISE_GAUCHE};
struct objectif_t objectif_4 = { .priorite = 4, .etat = A_FAIRE, .cible = CERISE_DROITE}; struct objectif_t objectif_4 = { .priorite = 4, .etat = FAIT, .cible = CERISE_DROITE};
objectifs[0]= objectif_1; objectifs[0]= objectif_1;
objectifs[1]= objectif_2; objectifs[1]= objectif_2;
objectifs[2]= objectif_3; objectifs[2]= objectif_3;
@ -94,8 +94,8 @@ void Strategie(enum couleur_t couleur, uint32_t step_ms){
Localisation_set(2000 - 775., 109., (-60.+CORR_ANGLE_DEPART_DEGREE) * DEGRE_EN_RADIAN); Localisation_set(2000 - 775., 109., (-60.+CORR_ANGLE_DEPART_DEGREE) * DEGRE_EN_RADIAN);
struct objectif_t objectif_1 = { .priorite = 1, .etat = A_FAIRE, .cible = CERISE_BAS}; struct objectif_t objectif_1 = { .priorite = 1, .etat = A_FAIRE, .cible = CERISE_BAS};
struct objectif_t objectif_2 = { .priorite = 2, .etat = A_FAIRE, .cible = CERISE_HAUT}; struct objectif_t objectif_2 = { .priorite = 2, .etat = A_FAIRE, .cible = CERISE_HAUT};
struct objectif_t objectif_3 = { .priorite = 3, .etat = A_FAIRE, .cible = CERISE_DROITE}; struct objectif_t objectif_3 = { .priorite = 3, .etat = FAIT, .cible = CERISE_DROITE};
struct objectif_t objectif_4 = { .priorite = 4, .etat = A_FAIRE, .cible = CERISE_GAUCHE}; struct objectif_t objectif_4 = { .priorite = 4, .etat = FAIT, .cible = CERISE_GAUCHE};
objectifs[0]= objectif_1; objectifs[0]= objectif_1;
objectifs[1]= objectif_2; objectifs[1]= objectif_2;
objectifs[2]= objectif_3; objectifs[2]= objectif_3;
@ -178,12 +178,13 @@ void Strategie(enum couleur_t couleur, uint32_t step_ms){
break; break;
case ALLER_CERISE_GAUCHE: case ALLER_CERISE_GAUCHE:
Trajet_config(300, 250);
angle_fin = Geometrie_get_angle_optimal(Localisation_get().angle_radian, -150. * DEGRE_EN_RADIAN); angle_fin = Geometrie_get_angle_optimal(Localisation_get().angle_radian, -150. * DEGRE_EN_RADIAN);
if(couleur == COULEUR_BLEU){ if(couleur == COULEUR_BLEU){
Trajectoire_bezier(&trajectoire, Localisation_get().x_mm, Localisation_get().y_mm, Trajectoire_bezier(&trajectoire, Localisation_get().x_mm, Localisation_get().y_mm,
740, 3000 - 550, 740, 3000 - 550,
510, 3000 - 1580, 510, 3000 - 1580,
180, 3000 - (1500 - 45), 180, 1500,
Localisation_get().angle_radian, angle_fin); Localisation_get().angle_radian, angle_fin);
}else{ }else{
Trajectoire_bezier(&trajectoire, Localisation_get().x_mm, Localisation_get().y_mm, Trajectoire_bezier(&trajectoire, Localisation_get().x_mm, Localisation_get().y_mm,
@ -196,17 +197,14 @@ void Strategie(enum couleur_t couleur, uint32_t step_ms){
if(parcourt_trajet_simple(trajectoire, step_ms) == ACTION_TERMINEE){ if(parcourt_trajet_simple(trajectoire, step_ms) == ACTION_TERMINEE){
etat_strategie = ATTRAPER_CERISE_GAUCHE; etat_strategie = ATTRAPER_CERISE_GAUCHE;
Trajet_config(500, 500);
} }
break; break;
case ATTRAPER_CERISE_GAUCHE: case ATTRAPER_CERISE_GAUCHE:
// 1 accoster if(cerises_attraper_cerises_gauches(step_ms) == ACTION_TERMINEE){
// 2 Longer en aspirant etat_strategie = ALLER_PANIER;
// 3 avancer en aspirant }
// 4 Revenir au milieu
// 5 accoster
// 6 longer en aspirant
// 7 avancer en aspirant
break; break;
case ALLER_PANIER: case ALLER_PANIER:
@ -243,10 +241,10 @@ void Strategie(enum couleur_t couleur, uint32_t step_ms){
etat_strategie = ALLER_CERISE_HAUT; etat_strategie = ALLER_CERISE_HAUT;
break; break;
case CERISE_GAUCHE: case CERISE_GAUCHE:
etat_strategie = STRATEGIE_FIN; etat_strategie = ALLER_CERISE_GAUCHE;
break; break;
case CERISE_DROITE: case CERISE_DROITE:
etat_strategie = STRATEGIE_FIN; etat_strategie = ALLER_CERISE_DROITE;
break; break;
} }
} }
@ -272,14 +270,16 @@ enum etat_action_t Strategie_aller_panier(enum couleur_t couleur, uint32_t step
if(Robot_est_dans_quart_haut_gauche()){ if(Robot_est_dans_quart_haut_gauche()){
Trajectoire_droite(&trajectoire,Localisation_get().x_mm, Localisation_get().y_mm, Trajectoire_droite(&trajectoire,Localisation_get().x_mm, Localisation_get().y_mm,
465,2830, 465,2830,
+30. * DEGRE_EN_RADIAN, +120. * DEGRE_EN_RADIAN); Localisation_get().angle_radian,
Geometrie_get_angle_optimal(Localisation_get().angle_radian, +120. * DEGRE_EN_RADIAN));
}else{ }else{
// Sinon, on a une courbe de bézier // Sinon, on a une courbe de bézier
Trajectoire_bezier(&trajectoire,Localisation_get().x_mm, Localisation_get().y_mm, Trajectoire_bezier(&trajectoire,Localisation_get().x_mm, Localisation_get().y_mm,
485, Localisation_get().y_mm, 485, Localisation_get().y_mm,
465, 857, 465, 857,
465,2830, 465,2830,
+30. * DEGRE_EN_RADIAN, +120. * DEGRE_EN_RADIAN); Localisation_get().angle_radian,
Geometrie_get_angle_optimal(Localisation_get().angle_radian, +120. * DEGRE_EN_RADIAN));
} }
}else{ // COULEUR_VERT }else{ // COULEUR_VERT
// Si le robot est déjà dans le quart haut droit, // Si le robot est déjà dans le quart haut droit,
@ -356,7 +356,7 @@ enum etat_action_t lance_balles_dans_panier(enum couleur_t couleur, uint32_t ste
break; break;
case RECULE_PANIER: case RECULE_PANIER:
Trajet_config(250, 500); Trajet_config(120, 250);
if(couleur == COULEUR_BLEU){ if(couleur == COULEUR_BLEU){
point_x = 180; point_x = 180;
point_y = 3000 - (RAYON_ROBOT/(RACINE_DE_3/2)) - 80; point_y = 3000 - (RAYON_ROBOT/(RACINE_DE_3/2)) - 80;
@ -372,6 +372,7 @@ enum etat_action_t lance_balles_dans_panier(enum couleur_t couleur, uint32_t ste
if(parcourt_trajet_simple_sans_evitement(trajectoire, step_ms) == ACTION_TERMINEE){ if(parcourt_trajet_simple_sans_evitement(trajectoire, step_ms) == ACTION_TERMINEE){
etat_lance_balles_dans_panier = LANCE_DANS_PANIER; etat_lance_balles_dans_panier = LANCE_DANS_PANIER;
Trajet_config(500, 500);
} }
break; break;

View File

@ -73,8 +73,8 @@ void i2c_annexe_couleur_balise(uint8_t couleur, uint16_t masque_led){
} }
void i2c_annexe_active_turbine(void){ void i2c_annexe_active_turbine(void){
donnees_emission[ADRESSE_TURBINE_PORTE - ADRESSE_DEBUT_W] |= 0x01; //donnees_emission[ADRESSE_TURBINE_PORTE - ADRESSE_DEBUT_W] |= 0x01;
donnees_a_envoyer=1; //donnees_a_envoyer=1;
} }
void i2c_annexe_desactive_turbine(void){ void i2c_annexe_desactive_turbine(void){
donnees_emission[ADRESSE_TURBINE_PORTE - ADRESSE_DEBUT_W] &= 0xFE; donnees_emission[ADRESSE_TURBINE_PORTE - ADRESSE_DEBUT_W] &= 0xFE;