2026-Propulsion/Commande_vitesse.c

36 lines
1.1 KiB
C

#include "Asser_Moteurs.h"
#include "Geometrie_robot.h"
#include "Commande_vitesse.h"
float avance_mm_s, orientation_radian_s;
float get_avance_mm_s(){
return avance_mm_s;
}
float get_orientation_radian_s(){
return orientation_radian_s;
}
/// @brief Commande de la vitesse dans le référentiel du robot
/// @param avance_mm_s : Vitesse d'avance
/// @param orientation_radian_s : Rotation en radian/s
void commande_vitesse(float _avance_mm_s, float _orientation_radian_s){
float vitesse_roue_gauche, vitesse_roue_droite;
avance_mm_s = _avance_mm_s;
orientation_radian_s = _orientation_radian_s;
vitesse_roue_gauche = avance_mm_s - (orientation_radian_s * DISTANCE_ROUES_CENTRE_MM);
vitesse_roue_droite = avance_mm_s + (orientation_radian_s * DISTANCE_ROUES_CENTRE_MM);
AsserMoteur_setConsigne_mm_s(MOTEUR_A, vitesse_roue_droite);
AsserMoteur_setConsigne_mm_s(MOTEUR_B, vitesse_roue_gauche);
}
/// @brief Arrête le robot.
void commande_vitesse_stop(){
AsserMoteur_setConsigne_mm_s(MOTEUR_A, 0);
AsserMoteur_setConsigne_mm_s(MOTEUR_B, 0);
}