Interface entre la communication et le déplacement: commandes ok sauf trajectoire

Il reste les trajectoires à gérer, la lecture de position et le forçage de position
This commit is contained in:
Samuel 2026-01-29 21:09:38 +01:00
parent d33bd356cd
commit 530eb4b343

37
main.c
View File

@ -114,6 +114,7 @@ void main(void)
enum etat_trajet_t etat_trajet=TRAJET_EN_COURS;
uint8_t mode=0;
while(1){
@ -156,31 +157,35 @@ void main(void)
if(mise_a_jour_position){
struct msg_propulsion_position_t msg_propulsion_position;
get_données_reçues((uint8_t *) &msg_propulsion_position, sizeof(msg_propulsion_position), REG_PROPULSION_POSITION);
printf("mise à jour de la position, x:%2.2f, y:%2.2f, orientation: %2.2f\n", msg_propulsion_position.position_x_mm,
msg_propulsion_position.position_y_mm, msg_propulsion_position.orientation_rad);
}
if(mise_a_jour_mode){
uint8_t mode;
get_données_reçues(&mode, sizeof(mode), REG_PROPULSION_MODE);
printf("mode:%d\n", mode);
}
if(mise_a_jour_pwm){
struct msg_propulsion_pwm_t msg_propulsion_pwm;
get_données_reçues((uint8_t *) &msg_propulsion_pwm, sizeof(msg_propulsion_pwm), REG_PROPULSION_PWM);
printf("pwm_gauche:%d, pwm_droit:%d\n", msg_propulsion_pwm.pwm_gauche, msg_propulsion_pwm.pwm_gauche);
// Consigne
Moteur_SetVitesse(MOTEUR_A, msg_propulsion_pwm.pwm_droit);
Moteur_SetVitesse(MOTEUR_B, msg_propulsion_pwm.pwm_gauche);
printf("pwm_gauche:%d, pwm_droit:%d\n", msg_propulsion_pwm.pwm_gauche, msg_propulsion_pwm.pwm_droit);
}
if(mise_a_jour_vitesse_roues){
struct msg_propulsion_vitesse_roues_t msg_propulsion_vitesse_roues;
get_données_reçues((uint8_t *) &msg_propulsion_vitesse_roues, sizeof(msg_propulsion_vitesse_roues), REG_PROPULSION_VITESSE_ROUES);
printf("vitesse_roue_gauche:%f, vitesse_roue_gauche:%d\n", msg_propulsion_vitesse_roues.vitesse_gauche_mm_s, msg_propulsion_vitesse_roues.vitesse_droite_mm_s);
printf("vitesse_roue_gauche:%f, vitesse_roue_droite:%f\n", msg_propulsion_vitesse_roues.vitesse_gauche_mm_s, msg_propulsion_vitesse_roues.vitesse_droite_mm_s);
AsserMoteur_setConsigne_mm_s(MOTEUR_A, msg_propulsion_vitesse_roues.vitesse_droite_mm_s);
AsserMoteur_setConsigne_mm_s(MOTEUR_B, msg_propulsion_vitesse_roues.vitesse_gauche_mm_s);
}
if(mise_a_jour_vitesse_robot){
struct msg_propulsion_vitesse_robot_t msg_propulsion_vitesse_robot;
get_données_reçues((uint8_t *) &msg_propulsion_vitesse_robot, sizeof(msg_propulsion_vitesse_robot), REG_PROPULSION_VITESSE_ROBOT);
printf("avance_robot (mm/s) : %f, rotation (rad/s): %f\n", msg_propulsion_vitesse_robot.avance_mm_s,
msg_propulsion_vitesse_robot.rotation_rad_s);
commande_vitesse(msg_propulsion_vitesse_robot.avance_mm_s, msg_propulsion_vitesse_robot.rotation_rad_s);
}
if(mise_a_jour_trajectoire){
@ -218,10 +223,28 @@ void main(void)
QEI_update();
Localisation_gestion();
//gestion_PAMI(step_ms, &asser_pos);
if(asser_pos){
AsserMoteur_Gestion(step_ms);
struct msg_propulsion_pwm_t msg_propulsion_pwm;
switch(mode){
case 0:
Moteur_Stop();
break;
case 1:
/*
get_données_reçues((uint8_t *) &msg_propulsion_pwm, sizeof(msg_propulsion_pwm), REG_PROPULSION_PWM);
Moteur_SetVitesse(MOTEUR_A, msg_propulsion_pwm.pwm_gauche);
Moteur_SetVitesse(MOTEUR_B, msg_propulsion_pwm.pwm_droit);*/
break;
case 2:
case 3:
case 4:
AsserMoteur_Gestion(step_ms);
break;
}
//gestion_PAMI(step_ms, &asser_pos);
/*if(asser_pos){
AsserMoteur_Gestion(step_ms);
}*/
// Récupération des valeurs pour les mettre dans la mémoire d'échange
// TODO
}