Amélioration de la détection de fin de trajet pour les courbes de bézier
This commit is contained in:
parent
36c6ebf3f2
commit
d1a249e0d5
20
Trajet.c
20
Trajet.c
@ -5,6 +5,7 @@
|
||||
#include "Asser_Position.h"
|
||||
|
||||
double Trajet_calcul_vitesse(double temps_s);
|
||||
int Trajet_terminee(double abscisse);
|
||||
|
||||
double abscisse; // Position entre 0 et 1 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;
|
||||
Asser_Position(position);
|
||||
|
||||
if(abscisse >= 1 ){
|
||||
if(Trajet_terminee(abscisse)){
|
||||
trajet_etat = TRAJET_TERMINE;
|
||||
}
|
||||
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.
|
||||
struct position_t Trajet_get_consigne(){
|
||||
return position_consigne;
|
||||
|
Loading…
Reference in New Issue
Block a user