Initialisation du test de l'homologation + fonction pour définir la position
This commit is contained in:
		
							parent
							
								
									2710dadaa2
								
							
						
					
					
						commit
						0e66ae9e4b
					
				| @ -13,6 +13,24 @@ void Localisation_init(){ | |||||||
|     position.angle_radian = 0; |     position.angle_radian = 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void Localisation_set(double x_mm, double y_mm, double angle_radian){ | ||||||
|  |     position.x_mm = x_mm; | ||||||
|  |     position.y_mm = y_mm; | ||||||
|  |     position.angle_radian = angle_radian; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void Localisation_set_x(double x_mm){ | ||||||
|  |     position.x_mm = x_mm; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void Localisation_set_y(double y_mm){ | ||||||
|  |     position.y_mm = y_mm; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void Localisation_set_angle(double angle_radian){ | ||||||
|  |     position.angle_radian = angle_radian; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void Localisation_gestion(){ | void Localisation_gestion(){ | ||||||
|     struct t_angle_gyro_double angle_gyro; |     struct t_angle_gyro_double angle_gyro; | ||||||
|     // Voir http://poivron-robotique.fr/Robot-holonome-localisation-partie-2.html
 |     // Voir http://poivron-robotique.fr/Robot-holonome-localisation-partie-2.html
 | ||||||
|  | |||||||
| @ -3,3 +3,8 @@ | |||||||
| struct position_t Localisation_get(void); | struct position_t Localisation_get(void); | ||||||
| void Localisation_gestion(); | void Localisation_gestion(); | ||||||
| void Localisation_init(); | void Localisation_init(); | ||||||
|  | 
 | ||||||
|  | void Localisation_set(double x_mm, double y_mm, double angle_radian); | ||||||
|  | void Localisation_set_x(double x_mm); | ||||||
|  | void Localisation_set_y(double y_mm); | ||||||
|  | void Localisation_set_angle(double angle_radian); | ||||||
							
								
								
									
										12
									
								
								Strategie.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Strategie.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | |||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void Homologation(void){ | ||||||
|  |     static enum etat_strategie_t{ | ||||||
|  |         STRATEGIE_INIT | ||||||
|  |     }etat_strategie; | ||||||
|  | 
 | ||||||
|  |     switch(etat_strategie){ | ||||||
|  |         case STRATEGIE_INIT: | ||||||
|  |              | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -9,4 +9,5 @@ enum longer_direction_t{ | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| enum etat_action_t cerise_accostage(void); | enum etat_action_t cerise_accostage(void); | ||||||
| enum etat_action_t cerise_longer_bord(enum longer_direction_t longer_direction); | enum etat_action_t cerise_longer_bord(enum longer_direction_t longer_direction); | ||||||
|  | void Homologation(void); | ||||||
| @ -15,8 +15,9 @@ | |||||||
| #include "Trajectoire.h" | #include "Trajectoire.h" | ||||||
| #include "Test.h" | #include "Test.h" | ||||||
| 
 | 
 | ||||||
| int test_accostage(); | int test_accostage(void); | ||||||
| int test_longe(); | int test_longe(void); | ||||||
|  | int test_homologation(void); | ||||||
| 
 | 
 | ||||||
| void affichage_test_strategie(){ | void affichage_test_strategie(){ | ||||||
|     uint32_t temps; |     uint32_t temps; | ||||||
| @ -34,20 +35,28 @@ void affichage_test_strategie(){ | |||||||
| int test_strategie(){ | int test_strategie(){ | ||||||
|     printf("L - longer.\n"); |     printf("L - longer.\n"); | ||||||
|     printf("A - Accoster.\n"); |     printf("A - Accoster.\n"); | ||||||
|  |     printf("H - Homologation.\n"); | ||||||
|     int lettre; |     int lettre; | ||||||
|     do{ |     do{ | ||||||
|         lettre = getchar_timeout_us(0); |         lettre = getchar_timeout_us(0); | ||||||
|     }while(lettre == PICO_ERROR_TIMEOUT || lettre == 0); |     }while(lettre == PICO_ERROR_TIMEOUT || lettre == 0); | ||||||
|     switch(lettre){ |     switch(lettre){ | ||||||
|  |         case 'a': | ||||||
|  |         case 'A': | ||||||
|  |             while(test_accostage()); | ||||||
|  |             break; | ||||||
|  | 
 | ||||||
|  |         case 'h': | ||||||
|  |         case 'H': | ||||||
|  |             while(test_homologation()); | ||||||
|  |             break; | ||||||
|  | 
 | ||||||
|         case 'l': |         case 'l': | ||||||
|         case 'L': |         case 'L': | ||||||
|             while(test_longe()); |             while(test_longe()); | ||||||
|             break; |             break; | ||||||
| 
 | 
 | ||||||
|         case 'a': |          | ||||||
|         case 'A': |  | ||||||
|             while(test_accostage()); |  | ||||||
|             break; |  | ||||||
| 
 | 
 | ||||||
|         case 'q': |         case 'q': | ||||||
|         case 'Q': |         case 'Q': | ||||||
| @ -57,6 +66,53 @@ int test_strategie(){ | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | int test_homologation(){ | ||||||
|  |     int lettre, _step_ms = 1, temps_ms=0, _step_ms_gyro=2,temps_ms_init; | ||||||
|  | 
 | ||||||
|  |     i2c_maitre_init(); | ||||||
|  |     Trajet_init(); | ||||||
|  |     //printf("Init gyroscope\n");
 | ||||||
|  |     Gyro_Init(); | ||||||
|  | 
 | ||||||
|  |     stdio_flush(); | ||||||
|  | 
 | ||||||
|  |     set_position_avec_gyroscope(1); | ||||||
|  | 
 | ||||||
|  |     temps_ms = Temps_get_temps_ms(); | ||||||
|  |     temps_ms_init = temps_ms; | ||||||
|  |     do{ | ||||||
|  |         i2c_gestion(i2c0); | ||||||
|  |         i2c_annexe_gestion(); | ||||||
|  |         // Routines à 1 ms
 | ||||||
|  |         if(temps_ms != Temps_get_temps_ms()){ | ||||||
|  |             temps_ms = Temps_get_temps_ms(); | ||||||
|  |             QEI_update(); | ||||||
|  |             Localisation_gestion(); | ||||||
|  |             AsserMoteur_Gestion(_step_ms); | ||||||
|  | 
 | ||||||
|  |             // Routine à 2 ms
 | ||||||
|  |             if(temps_ms % _step_ms_gyro == 0){ | ||||||
|  |             //    Gyro_Read(_step_ms_gyro);
 | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             if(temps_ms > temps_ms_init + 200){ | ||||||
|  |                 if(cerise_longer_bord(LONGER_VERS_A) == ACTION_TERMINEE){ | ||||||
|  |                     printf("Accostage_terminee\n"); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |         } | ||||||
|  |         lettre = getchar_timeout_us(0); | ||||||
|  |     }while((lettre == PICO_ERROR_TIMEOUT) || (lettre == 0)); | ||||||
|  |     printf("Lettre : %d; %c\n", lettre, lettre); | ||||||
|  |      | ||||||
|  |     if(lettre == 'q' && lettre == 'Q'){ | ||||||
|  |         return 0; | ||||||
|  |     } | ||||||
|  |     return 1; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| int test_longe(){ | int test_longe(){ | ||||||
|     int lettre, _step_ms = 1, temps_ms=0, _step_ms_gyro=2,temps_ms_init; |     int lettre, _step_ms = 1, temps_ms=0, _step_ms_gyro=2,temps_ms_init; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user