From 2b6695a2d08a6c01d201b663f131e73e5d76f99e Mon Sep 17 00:00:00 2001 From: Samuel Date: Sun, 30 Mar 2025 21:03:55 +0200 Subject: [PATCH] =?UTF-8?q?Annulation=20de=20la=20validit=C3=A9=20de=20la?= =?UTF-8?q?=20position=20de=20la=20triangulation=20tant=20que=20le=20robot?= =?UTF-8?q?=20est=20en=20mouvement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cerveau/Cerveau.ino | 66 ++++++++---------------------- Cerveau/Com_triangulation.ino | 49 ++++++++++++++++++++++ Cerveau/Communication_chassis.ino | 20 ++++++--- Cerveau/ServerWeb.ino | 2 +- Doc/Communication I2C.odt | Bin 26440 -> 26720 bytes Triangulation/I2C_Slave_lib.ino | 4 ++ Triangulation/Triangulation.ino | 31 ++++++++++++++ 7 files changed, 115 insertions(+), 57 deletions(-) create mode 100644 Cerveau/Com_triangulation.ino diff --git a/Cerveau/Cerveau.ino b/Cerveau/Cerveau.ino index 531def3..123af75 100644 --- a/Cerveau/Cerveau.ino +++ b/Cerveau/Cerveau.ino @@ -293,31 +293,31 @@ void gestion_match(){ index_Maitre = DEPLACEMENT_RELATIF; } if(M5.BtnA.read() == 1){ + Serial.println("BtnB"); // Déplacement en X - translation_x_mm = 2000; + translation_x_mm = 500; translation_y_mm = 0; rotation_rad = 0; - index_Maitre = DEPLACEMENT_RELATIF; + //index_Maitre = DEPLACEMENT_RELATIF; + Scan_Triangulation(&triangulation_reception); } if(M5.BtnB.read() == 1){ Serial.println("BtnB"); - // Déplacement en Y - - translation_x_mm = 0; - translation_y_mm = 2000; - rotation_rad = 0; - + // Déplacement en Y + //Triangulation_send_immobile(0); index_Maitre = TEST_DEPLACEMENT_ABSOLU; } if(M5.BtnC.read() == 1){ // Rotation + Serial.println("BtnC"); translation_x_mm = 0; translation_y_mm = 0; rotation_rad = 100; + Triangulation_send_immobile(1); - index_Maitre = DEPLACEMENT_RELATIF; + //index_Maitre = DEPLACEMENT_RELATIF; } break; @@ -345,7 +345,7 @@ void gestion_match(){ break; case TEST_DEPLACEMENT_ABSOLU: - if(deplacement_absolu(1000, 1000, 0, 0) == ACTION_TERMINEE){ + if(deplacement_absolu(800, 800, 0, 0) == ACTION_TERMINEE){ index_Maitre = ATTENTE_ORDRE; } break; @@ -407,7 +407,9 @@ enum etat_action_t deplacement_absolu(int consigne_x_mm, int consigne_y_mm, int // C'est que la fonction compar_cinematique indique qu'on doit se déplacer // Les valeurs du déplacement sont renseignées dans "chassis_emission". Serial.printf("DA_MVT_EN_COUR\n"); - Serial.printf("trans_x:%d\ntrans_y:%d\nrot:%d\n",chassis_emission.translation_x_mm, + Serial.printf("pos_x:%d\tpos_y:%d\tOrientation:%d\n",triangulation_reception.pos_x_mm, triangulation_reception.pos_y_mm, + triangulation_reception.angle_rad); + Serial.printf("trans_x:%d\ttrans_y:%d\trot:%d\n",chassis_emission.translation_x_mm, chassis_emission.translation_y_mm, chassis_emission.rotation_z_rad); etat_deplacement = DA_MVT_EN_COUR; }else{ @@ -420,6 +422,7 @@ enum etat_action_t deplacement_absolu(int consigne_x_mm, int consigne_y_mm, int break; case DA_MVT_EN_COUR: + Scan_Triangulation(&triangulation_reception); //Prise de la position actuel etat_deplacement_relatif = deplacement_relatif(- chassis_emission.translation_x_mm, -chassis_emission.translation_y_mm, chassis_emission.rotation_z_rad, evitement); if(etat_deplacement_relatif == ACTION_TERMINEE){ @@ -454,6 +457,7 @@ enum etat_action_t deplacement_relatif(int distance_x_mm, int distance_y_mm, int chassis_emission.acceleration = ACCELERATION_STANDARD; send_Chassis(&chassis_emission); + Triangulation_send_immobile(0); etat_deplacement = DR_MVT_EN_COUR; break; @@ -472,6 +476,7 @@ enum etat_action_t deplacement_relatif(int distance_x_mm, int distance_y_mm, int Scan_chassis(&chassis_reception); if(chassis_reception.status == MOUVEMENT_FINI){ + Triangulation_send_immobile(1); etat_deplacement = DR_INIT; return ACTION_TERMINEE; } @@ -481,45 +486,6 @@ enum etat_action_t deplacement_relatif(int distance_x_mm, int distance_y_mm, int return ACTION_EN_COURS; } -/// @brief - -/// @brief Récupère position (X, Y) et l'orientation du robot -void Scan_Triangulation(struct triangulation_reception_t * triangulation_reception){ - unsigned char tampon2[14]; - lec_Balise_1, lec_Balise_2, lec_Balise_3 = 0, 0, 0; - //(Adresse I2c, Adresse dans le registre, tampon, longueur de donnée) - triangulation_reception->validite = false; - error = I2C_lire_registre(I2C_SLAVE_trian, 0, tampon2, 13); // si errror != de 0 alors erreur de communication - if (error !=0){ - Err_Tri_com =1;IndexErr = 1;lec_Balise_1=0;lec_Balise_2=0;lec_Balise_3=0; - affiche_erreur("Scan_Triangulation", "Erreur I2C"); - while(1); - } - else{Err_Tri_com =0;IndexErr = 0;} - if (error ==0){ - triangulation_reception->pos_x_mm = tampon2[1]<< 24 | tampon2[2]<< 16 | tampon2[3]<< 8 | tampon2[4] ; - triangulation_reception->pos_y_mm = tampon2[5]<< 24 | tampon2[6]<< 16 | tampon2[7]<< 8 | tampon2[8] ; - Angle_Robot_DEG_int = tampon2[9]<< 24 | tampon2[10]<< 16 | tampon2[11]<< 8 | tampon2[12] ; - // Serial.print(tampon2[9], BIN);Serial.print(" ");Serial.print(tampon2[10], BIN);Serial.print(" ");Serial.print(tampon2[11], BIN);Serial.print(" ");Serial.println(tampon2[12], BIN); - Angle_Robot_RAD = Angle_Robot_DEG_int * M_PI / 180.; - lec_Balise_1 = tampon2[0] & 0x01; - lec_Balise_2 = (tampon2[0] >>1) & 0x01; - lec_Balise_3 = (tampon2[0] >>2 )& 0x01; - lec_Calcul_ok = (tampon2[0] >>3 )& 0x01; - - if(Position_actuelle_X < PosLimNeg | Position_actuelle_X > PosLimPos){ - triangulation_reception->pos_x_mm = 9999; - } - if(Position_actuelle_Y < PosLimNeg | Position_actuelle_Y > PosLimPos){ - triangulation_reception->pos_y_mm = 9999; - } - } - if(lec_Balise_1 == 1 && lec_Balise_2 == 1 && lec_Balise_3 == 1 && lec_Calcul_ok == 1 && error ==0){ - triangulation_reception->validite = true; - } -} - - void scan_I2C_bus(){ char error, address; diff --git a/Cerveau/Com_triangulation.ino b/Cerveau/Com_triangulation.ino new file mode 100644 index 0000000..87e7947 --- /dev/null +++ b/Cerveau/Com_triangulation.ino @@ -0,0 +1,49 @@ +/// @brief Récupère position (X, Y) et l'orientation du robot +void Scan_Triangulation(struct triangulation_reception_t * triangulation_reception){ + unsigned char tampon2[14]; + lec_Balise_1, lec_Balise_2, lec_Balise_3 = 0, 0, 0; + //(Adresse I2c, Adresse dans le registre, tampon, longueur de donnée) + triangulation_reception->validite = false; + error = I2C_lire_registre(I2C_SLAVE_trian, 0, tampon2, 13); // si errror != de 0 alors erreur de communication + if (error !=0){ + Err_Tri_com =1;IndexErr = 1;lec_Balise_1=0;lec_Balise_2=0;lec_Balise_3=0; + affiche_erreur("Scan_Triangulation", "Erreur I2C"); + while(1); + } + else{Err_Tri_com =0;IndexErr = 0;} + if (error ==0){ + triangulation_reception->pos_x_mm = tampon2[1]<< 24 | tampon2[2]<< 16 | tampon2[3]<< 8 | tampon2[4] ; + triangulation_reception->pos_y_mm = tampon2[5]<< 24 | tampon2[6]<< 16 | tampon2[7]<< 8 | tampon2[8] ; + + Angle_Robot_DEG_int = tampon2[9]<< 24 | tampon2[10]<< 16 | tampon2[11]<< 8 | tampon2[12] ; + // Serial.print(tampon2[9], BIN);Serial.print(" ");Serial.print(tampon2[10], BIN);Serial.print(" ");Serial.print(tampon2[11], BIN);Serial.print(" ");Serial.println(tampon2[12], BIN); + Angle_Robot_RAD = Angle_Robot_DEG_int * M_PI / 180.; + Serial.printf("Scan triangulation 0: 0x%X\n", tampon2[0]); + lec_Balise_1 = tampon2[0] & 0x01; + lec_Balise_2 = (tampon2[0] >>1) & 0x01; + lec_Balise_3 = (tampon2[0] >>2 )& 0x01; + lec_Calcul_ok = (tampon2[0] >>3 )& 0x01; + + if(Position_actuelle_X < PosLimNeg | Position_actuelle_X > PosLimPos){ + triangulation_reception->pos_x_mm = 9999; + } + if(Position_actuelle_Y < PosLimNeg | Position_actuelle_Y > PosLimPos){ + triangulation_reception->pos_y_mm = 9999; + } + } + if(lec_Balise_1 == 1 && lec_Balise_2 == 1 && lec_Balise_3 == 1 && lec_Calcul_ok == 1 && error ==0){ + triangulation_reception->validite = true; + } +} + +void Triangulation_send_immobile(int immobile){ + unsigned char donnee=0; + if(immobile){ + donnee = 1; + } + error = I2C_ecrire_registre(I2C_SLAVE_trian, 13, &donnee, 1); // si errror != de 0 alors erreur de communication + if (error !=0){ + affiche_erreur("Send_Triangulation", "Erreur I2C"); + while(1); + } +} \ No newline at end of file diff --git a/Cerveau/Communication_chassis.ino b/Cerveau/Communication_chassis.ino index 65461c9..57d6766 100644 --- a/Cerveau/Communication_chassis.ino +++ b/Cerveau/Communication_chassis.ino @@ -24,16 +24,24 @@ void Scan_chassis(struct chassis_reception_t * chassis_reception){ void send_Chassis(struct chassis_emission_t * chassis_emission){ //if(nbr_essai<=10){ // Prévient le chassis d'un nouveau mouvement avec le 2eme bit du premier Octet + int nb_pas_x, nb_pas_y, nb_pas_rot; + + // Conversion des mm ou radian en pas + + nb_pas_x = chassis_emission->translation_x_mm * 4.049; + nb_pas_y = chassis_emission->translation_y_mm * 4.953; + nb_pas_rot = chassis_emission->rotation_z_rad * 791.; + Mot[0] = chassis_emission->status; //y*=-1; //y = y*direction; - Mot[1] = chassis_emission->translation_x_mm >>8; - Mot[2] = chassis_emission->translation_x_mm; - Mot[3] = chassis_emission->translation_y_mm >>8; - Mot[4] = chassis_emission->translation_y_mm; + Mot[1] = nb_pas_x >>8; + Mot[2] = nb_pas_x; + Mot[3] = nb_pas_y >>8; + Mot[4] = nb_pas_y; //Serial.println(y); - Mot[5] = chassis_emission->rotation_z_rad >>8; - Mot[6] = chassis_emission->rotation_z_rad; + Mot[5] = nb_pas_rot >>8; + Mot[6] = nb_pas_rot; Mot[7] = chassis_emission->vitesse >>8; Mot[8] = chassis_emission->vitesse; Mot[9] = chassis_emission->acceleration >>8; diff --git a/Cerveau/ServerWeb.ino b/Cerveau/ServerWeb.ino index 31934d6..5bfa271 100644 --- a/Cerveau/ServerWeb.ino +++ b/Cerveau/ServerWeb.ino @@ -91,7 +91,7 @@ void handleForm() { // y= myString1.toInt() * coef_mvt/10; chassis_emission_web.translation_y_mm = myString1.toInt(); String myString2 = server.arg("R"); //positon de cmd en Rotation Deg ° - chassis_emission_web.rotation_z_rad = myString2.toInt() * 13.88888; + chassis_emission_web.rotation_z_rad = myString2.toInt() / 180 * M_PI; String myString3 = server.arg("V"); // Vitesse de cmd en chassis_emission_web.vitesse = myString3.toInt(); String myString4 = server.arg("A"); // Acceleration de cmd diff --git a/Doc/Communication I2C.odt b/Doc/Communication I2C.odt index 97ed38838133154ddfc795254104be3e83132c73..539e883641c1e02e8f06a80c1e6c7db0a4eb73d4 100644 GIT binary patch delta 9491 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 delta 9258 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 diff --git a/Triangulation/I2C_Slave_lib.ino b/Triangulation/I2C_Slave_lib.ino index 9e1daa5..9953462 100644 --- a/Triangulation/I2C_Slave_lib.ino +++ b/Triangulation/I2C_Slave_lib.ino @@ -5,6 +5,10 @@ byte memoire_I2C_index=0; bool nouveau_message=false; +uint8_t * get_i2c_data(){ + return memoire_I2C; +} + void onRequest(){ uint32_t taille_envoi; taille_envoi = min (TAILLE_MEMOIRE_I2C-memoire_I2C_index, TAILLE_MESSAGE_ENVOI_MAX); diff --git a/Triangulation/Triangulation.ino b/Triangulation/Triangulation.ino index 328ab0e..bf43e20 100644 --- a/Triangulation/Triangulation.ino +++ b/Triangulation/Triangulation.ino @@ -19,6 +19,7 @@ String Lecture; #define pi 3.141592653589793 #define pi2 6.283185307179586 +uint8_t * data_i2C; int Balise[4][2]; // 4 balises potentielles i de 0 a 3 // Frequence modulation individuelle balises // Balise[i][0] est la frequence de la balise @@ -190,7 +191,13 @@ void setup() { //Initialisation wifi WiFi.config(local_IP, gateway, subnet); WiFi.begin(ssid, password); + + // Pour accéder aux données de l'I2C + data_i2C = get_i2c_data(); + data_i2C[13] = 1; // On dit que le robot est immobile. + int test_wifi = 0; + while (WiFi.status() != WL_CONNECTED){ delay(300); M5.Lcd.print("."); @@ -260,6 +267,8 @@ void setup() { M5.Lcd.print("a RAD = "); M5.Lcd.setCursor(0,100); M5.Lcd.print("angle = "); + M5.Lcd.setCursor(10,120); + M5.Lcd.print("Status : "); M5.Lcd.setCursor(160,180); M5.Lcd.print("X = "); M5.Lcd.setCursor(160,210); @@ -268,6 +277,15 @@ void setup() { void loop() { //Effectue a chaque tour ........................ + if(data_i2C[13] != 1){ + Nb_Balises = 0; + Balise_0 = false; + Balise_1 = false; + Balise_2 = false; + Calcul_Valide = false; + uint8_t etat_balises = (Balise_0 | Balise_1 <<1 | Balise_2 <<2 | Calcul_Valide <<3); + I2C_envoi_8bits(etat_balises,0); + } if ((Old_Nb_tours != Nb_tours) && (Trigger_Balises)){ Old_Nb_tours = Nb_tours; if (!Balise_Valide){ @@ -316,6 +334,10 @@ void loop() { } vitesse_moteur(); } + // Si le robot n'est pas immobile, on invalide les balises. + + + //________________________________________ } void rapport(){ @@ -360,6 +382,13 @@ void affichage_resultats() { M5.Lcd.print(" "); M5.Lcd.setCursor(140,40); M5.Lcd.print(Balise[2][1]); + M5.Lcd.print(" "); + M5.Lcd.setCursor(140,120); + M5.Lcd.print(Balise_0); + M5.Lcd.setCursor(150,120); + M5.Lcd.print(Balise_1); + M5.Lcd.setCursor(160,120); + M5.Lcd.print(Balise_2); // M5.Lcd.print(" / "); // M5.Lcd.print(Angle_B[2][3]); M5.Lcd.print(" "); @@ -447,3 +476,5 @@ void checkForClient(){ } } + +