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