cerise guache quasi-fonctionnelle - une bizarrerie au niveau de la position Y...
This commit is contained in:
parent
2537c5d371
commit
c7fb4b5ef8
@ -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();
|
||||||
|
33
Strategie.c
33
Strategie.c
@ -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;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user