Test rotation par rapport à un point : OK

This commit is contained in:
Samuel 2023-03-11 22:03:51 +01:00
parent 2abcdf5d52
commit f26e6a0c5d

79
Test.c
View File

@ -36,8 +36,9 @@ int test_vitesse_moteur(enum t_moteur moteur);
int test_asser_moteur(void); int test_asser_moteur(void);
int test_localisation(void); int test_localisation(void);
int test_avance(void); int test_avance(void);
int test_cde_vitesse(void);
int test_cde_vitesse_rotation(void); int test_cde_vitesse_rotation(void);
int test_cde_rotation_ref_robot(void); int test_cde_rotation_ref_robot(double centre_x_mm, double centre_y_mm);
int test_cde_vitesse_rectangle(void); int test_cde_vitesse_rectangle(void);
int test_cde_vitesse_cercle(void); int test_cde_vitesse_cercle(void);
int test_asser_position_avance(void); int test_asser_position_avance(void);
@ -61,16 +62,13 @@ int mode_test(){
printf("B - pour avance (asser_moteur)\n"); printf("B - pour avance (asser_moteur)\n");
printf("C - pour les codeurs\n"); printf("C - pour les codeurs\n");
printf("D - pour les codeurs (somme en mm)\n"); printf("D - pour les codeurs (somme en mm)\n");
printf("E - Commande en vitesse - rotation pure\n"); printf("E - Commande en vitesse...\n");
printf("F - Commande en vitesse - carré\n");
printf("G - Commande en vitesse - cercle\n");
printf("H - Asser Position - avance\n"); printf("H - Asser Position - avance\n");
printf("I - Asser Position - avance et tourne (gyro)\n"); printf("I - Asser Position - avance et tourne (gyro)\n");
printf("J - Asser Position - avance et tourne (sans gyro)\n"); printf("J - Asser Position - avance et tourne (sans gyro)\n");
printf("K - Trajets aller retour avec Gyro\n"); printf("K - Trajets aller retour avec Gyro\n");
printf("L - pour la localisation\n"); printf("L - pour la localisation\n");
printf("M - pour les moteurs\n"); printf("M - pour les moteurs\n");
printf("N - Rotation dans le référentiel du robot\n");
printf("T - Trajectoire\n"); printf("T - Trajectoire\n");
printf("U - Scan du bus i2c\n"); printf("U - Scan du bus i2c\n");
printf("V - APDS_9960\n"); printf("V - APDS_9960\n");
@ -103,17 +101,7 @@ int mode_test(){
case 'E': case 'E':
case 'e': case 'e':
while(test_cde_vitesse_rotation()); while(test_cde_vitesse());
break;
case 'F':
case 'f':
while(test_cde_vitesse_rectangle());
break;
case 'G':
case 'g':
while(test_cde_vitesse_cercle());
break; break;
case 'H': case 'H':
@ -146,11 +134,6 @@ int mode_test(){
while(test_moteurs()); while(test_moteurs());
break; break;
case 'N':
case 'n':
while(test_cde_rotation_ref_robot());
break;
case 'T': case 'T':
case 't': case 't':
while(test_trajectoire()); while(test_trajectoire());
@ -794,6 +777,48 @@ int test_asser_position_avance(){
return 0; return 0;
} }
int test_cde_vitesse(){
printf("A - Commande en vitesse - rectangle\n");
printf("B - Commande en vitesse - cercle\n");
printf("C - Commande en vitesse - rotation pure\n");
printf("D - Commande en vitesse - rotation par rapport à un point (contacteur longer A)\n");
printf("E - Commande en vitesse - rotation par rapport à un point (contacteur longer C)\n");
int lettre;
do{
lettre = getchar_timeout_us(0);
stdio_flush();
}while(lettre == PICO_ERROR_TIMEOUT || lettre == '\0');
switch(lettre){
case 'a':
case 'A':
while(test_cde_vitesse_rectangle());
break;
case 'b':
case 'B':
while(test_cde_vitesse_cercle());
break;
case 'c':
case 'C':
while(test_cde_vitesse_rotation());
break;
case 'd':
case 'D':
while(test_cde_rotation_ref_robot(RAYON_ROBOT, 0));
break;
case 'e':
case 'E':
while(test_cde_rotation_ref_robot(RAYON_ROBOT/2, -RAYON_ROBOT* RACINE_DE_3/2));
break;
}
}
int test_cde_vitesse_rotation(){ int test_cde_vitesse_rotation(){
int lettre, _step_ms = 1; int lettre, _step_ms = 1;
double vitesse =90.0/2 * 3.14159 /180.0; double vitesse =90.0/2 * 3.14159 /180.0;
@ -806,23 +831,25 @@ int test_cde_vitesse_rotation(){
sleep_ms(_step_ms); sleep_ms(_step_ms);
lettre = getchar_timeout_us(0); lettre = getchar_timeout_us(0);
}while(lettre == PICO_ERROR_TIMEOUT); }while(lettre == PICO_ERROR_TIMEOUT);
Moteur_Stop();
return 0; return 0;
} }
int test_cde_rotation_ref_robot(){ int test_cde_rotation_ref_robot(double centre_x_mm, double centre_y_mm){
int lettre, _step_ms = 1; int lettre, _step_ms = 1;
double vitesse =90.0/2 * 3.14159 /180.0; double vitesse =90.0/4 * 3.14159 /180.0;
printf("Rotation du robot sur lui-même en 8 secondes\nVitesse : %f rad/s\n", vitesse); printf("Rotation du robot par rapport au point (Rayon, O)\nVitesse : %f rad/s\n", vitesse);
commande_rotation(vitesse, RAYON_ROBOT, 0); commande_rotation(vitesse, centre_x_mm, centre_y_mm);
do{ do{
QEI_update(); QEI_update();
AsserMoteur_Gestion(_step_ms); AsserMoteur_Gestion(_step_ms);
sleep_ms(_step_ms); sleep_ms(_step_ms);
lettre = getchar_timeout_us(0); lettre = getchar_timeout_us(0);
}while(lettre == PICO_ERROR_TIMEOUT); }while(lettre == PICO_ERROR_TIMEOUT);
Moteur_Stop();
return 0; return 0;
} }
@ -851,6 +878,7 @@ int test_cde_vitesse_rectangle(){
temps_ms += _step_ms; temps_ms += _step_ms;
lettre = getchar_timeout_us(0); lettre = getchar_timeout_us(0);
}while(lettre == PICO_ERROR_TIMEOUT); }while(lettre == PICO_ERROR_TIMEOUT);
Moteur_Stop();
return 0; return 0;
} }
@ -869,6 +897,7 @@ int test_cde_vitesse_cercle(){
lettre = getchar_timeout_us(0); lettre = getchar_timeout_us(0);
}while(lettre == PICO_ERROR_TIMEOUT); }while(lettre == PICO_ERROR_TIMEOUT);
Moteur_Stop();
return 0; return 0;
} }