Amélioration de la prise des cerises latérales
This commit is contained in:
		
							parent
							
								
									470b5cbc4a
								
							
						
					
					
						commit
						b277df988f
					
				| @ -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(); | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ | |||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include "Monitoring.h" | #include "Monitoring.h" | ||||||
| #include "Localisation.h" | #include "Localisation.h" | ||||||
|  | #include "Asser_Moteurs.h" | ||||||
| 
 | 
 | ||||||
| uint32_t temps_cycle_min = UINT32_MAX; | uint32_t temps_cycle_min = UINT32_MAX; | ||||||
| uint32_t temps_cycle_max=0; | uint32_t temps_cycle_max=0; | ||||||
| @ -41,7 +42,12 @@ void Monitoring_display(){ | |||||||
|         struct position_t position = Localisation_get(); |         struct position_t position = Localisation_get(); | ||||||
|         printf(">pos_x:%ld:%f\n", temps, position.x_mm); |         printf(">pos_x:%ld:%f\n", temps, position.x_mm); | ||||||
|         printf(">pos_y:%ld:%f\n", temps, position.y_mm); |         printf(">pos_y:%ld:%f\n", temps, position.y_mm); | ||||||
|          |         printf(">V_a:%ld:%f\n", temps, AsserMoteur_getVitesse_mm_s(MOTEUR_A, 1)); | ||||||
|  |         printf(">V_b:%ld:%f\n", temps, AsserMoteur_getVitesse_mm_s(MOTEUR_B, 1)); | ||||||
|  |         printf(">V_c:%ld:%f\n", temps, AsserMoteur_getVitesse_mm_s(MOTEUR_C, 1)); | ||||||
|  |         printf(">V_con_a:%ld:%f\n", temps, AsserMoteur_getConsigne_mm_s(MOTEUR_A)); | ||||||
|  |         printf(">V_con_b:%ld:%f\n", temps, AsserMoteur_getConsigne_mm_s(MOTEUR_B)); | ||||||
|  |         printf(">V_con_c:%ld:%f\n", temps, AsserMoteur_getConsigne_mm_s(MOTEUR_C)); | ||||||
| 
 | 
 | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										26
									
								
								Strategie.c
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								Strategie.c
									
									
									
									
									
								
							| @ -154,12 +154,11 @@ void Strategie(enum couleur_t couleur, uint32_t step_ms, uint32_t temps_ms){ | |||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             Trajet_config(250, 500);             |             Trajet_config(250, 500);             | ||||||
|             Trajectoire_droite(&trajectoire, Localisation_get().x_mm, Localisation_get().y_mm, point_x, 3000 - 156, |             Trajectoire_droite(&trajectoire, Localisation_get().x_mm, Localisation_get().y_mm, point_x, 3000 - 175, | ||||||
|                      Localisation_get().angle_radian, angle_fin); |                      Localisation_get().angle_radian, angle_fin); | ||||||
| 
 | 
 | ||||||
|             if(parcourt_trajet_simple_sans_evitement(trajectoire, step_ms) == TRAJET_TERMINE){ |             if(parcourt_trajet_simple_sans_evitement(trajectoire, step_ms) == TRAJET_TERMINE){ | ||||||
|                 etat_strategie = ATTRAPER_CERISE_HAUT; |                 etat_strategie = ATTRAPER_CERISE_HAUT; | ||||||
|                 Strategie_set_cerise_dans_robot(6); |  | ||||||
|             } |             } | ||||||
|             break; |             break; | ||||||
| 
 | 
 | ||||||
| @ -175,6 +174,7 @@ void Strategie(enum couleur_t couleur, uint32_t step_ms, uint32_t temps_ms){ | |||||||
| 
 | 
 | ||||||
|             etat_action = cerise_attraper_bordure(longer_direction, step_ms, recal_pos_x, recal_pos_y); |             etat_action = cerise_attraper_bordure(longer_direction, step_ms, recal_pos_x, recal_pos_y); | ||||||
|             if(etat_action == ACTION_TERMINEE){ |             if(etat_action == ACTION_TERMINEE){ | ||||||
|  |                 Strategie_set_cerise_dans_robot(6); | ||||||
|                 etat_strategie = ALLER_PANIER; |                 etat_strategie = ALLER_PANIER; | ||||||
|             } |             } | ||||||
|             break; |             break; | ||||||
| @ -205,6 +205,7 @@ void Strategie(enum couleur_t couleur, uint32_t step_ms, uint32_t temps_ms){ | |||||||
| 
 | 
 | ||||||
|         case ATTRAPER_CERISE_GAUCHE: |         case ATTRAPER_CERISE_GAUCHE: | ||||||
|             if(cerises_attraper_cerises_gauches(step_ms) == ACTION_TERMINEE){ |             if(cerises_attraper_cerises_gauches(step_ms) == ACTION_TERMINEE){ | ||||||
|  |                 Strategie_set_cerise_dans_robot(10); | ||||||
|                 etat_strategie = ALLER_PANIER; |                 etat_strategie = ALLER_PANIER; | ||||||
|             } |             } | ||||||
|             break; |             break; | ||||||
| @ -273,12 +274,16 @@ enum etat_action_t  Strategie_aller_panier(enum couleur_t couleur, uint32_t step | |||||||
|         // On va en ligne droite
 |         // On va en ligne droite
 | ||||||
|         if(Robot_est_dans_zone_cerise_haut(couleur)){ |         if(Robot_est_dans_zone_cerise_haut(couleur)){ | ||||||
|             Trajectoire_droite(&trajectoire,Localisation_get().x_mm, Localisation_get().y_mm,  |             Trajectoire_droite(&trajectoire,Localisation_get().x_mm, Localisation_get().y_mm,  | ||||||
|                 465,2830, |                 180,2800, | ||||||
|                 Localisation_get().angle_radian,  |                 Localisation_get().angle_radian,  | ||||||
|                 Geometrie_get_angle_optimal(Localisation_get().angle_radian, +120. * DEGRE_EN_RADIAN)); |                 Geometrie_get_angle_optimal(Localisation_get().angle_radian, +120. * DEGRE_EN_RADIAN)); | ||||||
|         }else if (Robot_est_dans_zone_cerise_gauche()){ |         }else if (Robot_est_dans_zone_cerise_gauche()){ | ||||||
| 
 |             Trajectoire_bezier(&trajectoire,Localisation_get().x_mm, Localisation_get().y_mm,  | ||||||
|             /// !!! TODO !!!
 |                 Localisation_get().x_mm + 330, Localisation_get().y_mm - 100, | ||||||
|  |                 745, 3000 - 475, | ||||||
|  |                 180, 3000 - 200, | ||||||
|  |                 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,  | ||||||
| @ -314,7 +319,7 @@ enum etat_action_t  Strategie_aller_panier(enum couleur_t couleur, uint32_t step | |||||||
| 
 | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /// Fonction de localisation aproximatives pour la stratégie.
 | /// Fonction de localisation approximatives pour la stratégie.
 | ||||||
| 
 | 
 | ||||||
| /// @brief Renvoi 1 si le robot est dans le quart supérieur gauche du terrain
 | /// @brief Renvoi 1 si le robot est dans le quart supérieur gauche du terrain
 | ||||||
| /// @return 1 si oui, 0 si non.
 | /// @return 1 si oui, 0 si non.
 | ||||||
| @ -343,6 +348,15 @@ int Robot_est_dans_zone_cerise_gauche(){ | |||||||
| 
 | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | int Robot_est_dans_zone_cerise_droite(){ | ||||||
|  |     if(Localisation_get().x_mm  > 2000 - 630 &&  | ||||||
|  |     Localisation_get().y_mm >1000 && Localisation_get().y_mm < 2000){ | ||||||
|  |         return 1; | ||||||
|  |     } | ||||||
|  |     return 0; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
| int Robot_est_dans_zone_cerise_haut(enum couleur_t couleur){ | int Robot_est_dans_zone_cerise_haut(enum couleur_t couleur){ | ||||||
|     if(couleur == COULEUR_BLEU){ |     if(couleur == COULEUR_BLEU){ | ||||||
|         if(Localisation_get().y_mm  > 2500 && Localisation_get().x_mm < 1000){ |         if(Localisation_get().y_mm  > 2500 && Localisation_get().x_mm < 1000){ | ||||||
|  | |||||||
| @ -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