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"
|
#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;
|
||||||
|
Loading…
Reference in New Issue
Block a user