Stratégie d'homologation : sans évitement, sans tirette, sans gestion du côté.

This commit is contained in:
Samuel 2023-03-29 23:12:16 +02:00
parent 30977bb4f1
commit 1bc1514b23
4 changed files with 32 additions and 13 deletions

View File

@ -1,5 +1,6 @@
#include "hardware/gpio.h" #include "hardware/gpio.h"
#include "i2c_annexe.h" #include "i2c_annexe.h"
#include "Asser_Position.h"
#include "Geometrie_robot.h" #include "Geometrie_robot.h"
#include "Localisation.h" #include "Localisation.h"
#include "Moteurs.h" #include "Moteurs.h"
@ -61,6 +62,16 @@ void Homologation(uint32_t step_ms){
465,2830, 465,2830,
+30. * DEGREE_EN_RADIAN, +120. * DEGREE_EN_RADIAN); +30. * DEGREE_EN_RADIAN, +120. * DEGREE_EN_RADIAN);
if(parcourt_trajet_simple(trajectoire, step_ms) == ACTION_TERMINEE){
etat_strategie = CALAGE_PANIER_1;
}
break;
case APPROCHE_PANIER_2:
Trajectoire_droite(&trajectoire,Localisation_get().x_mm, Localisation_get().y_mm,
265,2830,
+120. * DEGREE_EN_RADIAN, +120. * DEGREE_EN_RADIAN);
if(parcourt_trajet_simple(trajectoire, step_ms) == ACTION_TERMINEE){ if(parcourt_trajet_simple(trajectoire, step_ms) == ACTION_TERMINEE){
etat_strategie = CALAGE_PANIER_1; etat_strategie = CALAGE_PANIER_1;
} }
@ -68,7 +79,7 @@ void Homologation(uint32_t step_ms){
break; break;
case CALAGE_PANIER_1: case CALAGE_PANIER_1:
if(calage_angle(LONGER_VERS_A, RAYON_ROBOT, 3000 - (RAYON_ROBOT/(RACINE_DE_3/2)), 120. *DEGREE_EN_RADIAN) == ACTION_TERMINEE){ if(calage_angle(LONGER_VERS_A, RAYON_ROBOT, 3000 - (RAYON_ROBOT/(RACINE_DE_3/2.)), 120. *DEGREE_EN_RADIAN) == ACTION_TERMINEE){
etat_strategie = RECULE_PANIER; etat_strategie = RECULE_PANIER;
} }
break; break;
@ -76,8 +87,8 @@ void Homologation(uint32_t step_ms){
case RECULE_PANIER: case RECULE_PANIER:
Trajet_config(250, 500); Trajet_config(250, 500);
Trajectoire_droite(&trajectoire,Localisation_get().x_mm, Localisation_get().y_mm, Trajectoire_droite(&trajectoire,Localisation_get().x_mm, Localisation_get().y_mm,
225, 3000 - (RAYON_ROBOT/(RACINE_DE_3/2)) - 120, 180, 3000 - (RAYON_ROBOT/(RACINE_DE_3/2)) - 80,
120. * DEGREE_EN_RADIAN, +240. * DEGREE_EN_RADIAN); 120. * DEGREE_EN_RADIAN, +270. * DEGREE_EN_RADIAN);
if(parcourt_trajet_simple(trajectoire, step_ms) == ACTION_TERMINEE){ if(parcourt_trajet_simple(trajectoire, step_ms) == ACTION_TERMINEE){
etat_strategie = LANCE_DANS_PANIER; etat_strategie = LANCE_DANS_PANIER;
@ -85,6 +96,7 @@ void Homologation(uint32_t step_ms){
break; break;
case LANCE_DANS_PANIER: case LANCE_DANS_PANIER:
Asser_Position_maintien();
if(lance_balles(step_ms) == ACTION_TERMINEE){ if(lance_balles(step_ms) == ACTION_TERMINEE){
etat_strategie = STRATEGIE_FIN; etat_strategie = STRATEGIE_FIN;
} }
@ -120,7 +132,8 @@ enum etat_action_t lance_balles(uint32_t step_ms){
case LANCE_TEMPO_PROP_ON: case LANCE_TEMPO_PROP_ON:
if (tempo_ms < step_ms){ if (tempo_ms < step_ms){
etat_lance_balle = LANCE_PORTE_OUVERTE; //etat_lance_balle = LANCE_PORTE_OUVERTE;
etat_lance_balle = LANCE_TEMPO_PROP_ON;
i2c_annexe_ouvre_porte(); i2c_annexe_ouvre_porte();
tempo_ms = 6000; tempo_ms = 6000;
}else{ }else{
@ -133,6 +146,8 @@ enum etat_action_t lance_balles(uint32_t step_ms){
etat_lance_balle = LANCE_PROPULSEUR_ON; etat_lance_balle = LANCE_PROPULSEUR_ON;
i2c_annexe_desactive_propulseur(); i2c_annexe_desactive_propulseur();
etat_action = ACTION_TERMINEE; etat_action = ACTION_TERMINEE;
}else{
tempo_ms -= step_ms;
} }
break; break;

View File

@ -27,9 +27,10 @@ extern enum etat_strategie_t{
APPROCHE_CERISE_1_B=2, APPROCHE_CERISE_1_B=2,
ATTRAPE_CERISE_1=3, ATTRAPE_CERISE_1=3,
APPROCHE_PANIER_1=4, APPROCHE_PANIER_1=4,
CALAGE_PANIER_1=5, APPROCHE_PANIER_2=5,
RECULE_PANIER=6, CALAGE_PANIER_1=6,
LANCE_DANS_PANIER=7, RECULE_PANIER=7,
LANCE_DANS_PANIER=8,
STRATEGIE_FIN=254, STRATEGIE_FIN=254,
}etat_strategie; }etat_strategie;

View File

@ -15,7 +15,7 @@
#define MAX_LONGE_MM 240 #define MAX_LONGE_MM 240
// Translation en mm/s pour aspirer les cerises // Translation en mm/s pour aspirer les cerises
#define TRANSLATION_CERISE 45 #define TRANSLATION_CERISE 70
void commande_rotation_contacteur_longer_A(); void commande_rotation_contacteur_longer_A();
void commande_rotation_contacteur_longer_C(); void commande_rotation_contacteur_longer_C();
@ -58,10 +58,9 @@ enum etat_action_t cerise_attraper_bordure(enum longer_direction_t longer_direct
case TURBINE_DEMARRAGE: case TURBINE_DEMARRAGE:
i2c_annexe_ferme_porte(); i2c_annexe_ferme_porte();
//i2c_annexe_active_turbine(); i2c_annexe_active_turbine();
i2c_annexe_active_propulseur();
commande_vitesse_stop(); commande_vitesse_stop();
tempo_ms = 2000; tempo_ms = 1000;
etat_attrape = TURBINE_DEMARRAGE_TEMPO; etat_attrape = TURBINE_DEMARRAGE_TEMPO;
break; break;
@ -90,6 +89,7 @@ enum etat_action_t cerise_attraper_bordure(enum longer_direction_t longer_direct
case ASPIRE_LIBRE: case ASPIRE_LIBRE:
commande_vitesse_stop(); commande_vitesse_stop();
i2c_annexe_desactive_turbine();
etat_action = ACTION_TERMINEE; etat_action = ACTION_TERMINEE;
break; break;
} }

View File

@ -103,11 +103,14 @@ int test_homologation(){
i2c_maitre_init(); i2c_maitre_init();
Trajet_init(); Trajet_init();
//printf("Init gyroscope\n"); //printf("Init gyroscope\n");
//Gyro_Init(); set_position_avec_gyroscope(1);
if(get_position_avec_gyroscope()){
Gyro_Init();
}
stdio_flush(); stdio_flush();
//set_position_avec_gyroscope(1);
multicore_launch_core1(affichage_test_strategie); multicore_launch_core1(affichage_test_strategie);