Amélioration de la détection de fin de trajet pour les courbes de bézier

This commit is contained in:
Samuel 2023-03-28 23:02:58 +02:00
parent 36c6ebf3f2
commit d1a249e0d5

View File

@ -5,6 +5,7 @@
#include "Asser_Position.h" #include "Asser_Position.h"
double Trajet_calcul_vitesse(double temps_s); double Trajet_calcul_vitesse(double temps_s);
int Trajet_terminee(double abscisse);
double abscisse; // Position entre 0 et 1 sur la trajectoire double abscisse; // Position entre 0 et 1 sur la trajectoire
double position_mm; // Position en mm sur la trajectoire double position_mm; // Position en mm sur la trajectoire
@ -65,13 +66,30 @@ enum etat_trajet_t Trajet_avance(double pas_de_temps_s){
position_consigne=position; position_consigne=position;
Asser_Position(position); Asser_Position(position);
if(abscisse >= 1 ){ if(Trajet_terminee(abscisse)){
trajet_etat = TRAJET_TERMINE; trajet_etat = TRAJET_TERMINE;
} }
return trajet_etat; return trajet_etat;
} }
/// @brief Savoir si un trajet est terminé est trivial sauf pour les courbes de Bézier
/// où les approximations font que l'abscisse peut ne pas atteindre 1.
/// @param abscisse : abscisse sur la trajectoire
/// @return 1 si le trajet est terminé, 0 sinon
int Trajet_terminee(double abscisse){
if(trajet_trajectoire.type != TRAJECTOIRE_BEZIER){
if(abscisse >= 1 ){
return 1;
}
}else{
if(abscisse >= 0.99 ){
return 1;
}
}
return 0;
}
/// @brief Envoie la consigne de position calculée par le module trajet. Principalement pour le débug/réglage asservissement. /// @brief Envoie la consigne de position calculée par le module trajet. Principalement pour le débug/réglage asservissement.
struct position_t Trajet_get_consigne(){ struct position_t Trajet_get_consigne(){
return position_consigne; return position_consigne;