Compare commits
No commits in common. "d7c7d7bc65e96025fb4ca7524f263312ace196ce" and "a506ece7ce7cf7c90ed8489db20abae16badbee9" have entirely different histories.
d7c7d7bc65
...
a506ece7ce
@ -2,7 +2,7 @@
|
||||
#include "config_robot.h"
|
||||
|
||||
#ifdef ROBOT_PROPULSION_2026
|
||||
#define DISTANCE_ROUES_CENTRE_MM 103.
|
||||
#define DISTANCE_ROUES_CENTRE_MM 98.
|
||||
#else
|
||||
#define DISTANCE_ROUES_CENTRE_MM 52.
|
||||
#endif
|
||||
|
||||
@ -7,7 +7,6 @@
|
||||
#include "math.h"
|
||||
|
||||
#define PRECISION_ABSCISSE 0.001f
|
||||
#define NB_MAX_ITERATIONS 3
|
||||
|
||||
|
||||
void Trajectoire_circulaire(struct trajectoire_t * trajectoire, float centre_x, float centre_y, float angle_debut_rad,
|
||||
@ -173,18 +172,16 @@ float Trajectoire_avance(struct trajectoire_t * trajectoire, double abscisse, do
|
||||
if(trajectoire->type == TRAJECTOIRE_CIRCULAIRE || trajectoire->type == TRAJECTOIRE_DROITE){
|
||||
return abscisse + delta_abscisse;
|
||||
}
|
||||
|
||||
|
||||
delta_mm = distance_points(Trajectoire_get_point(trajectoire, abscisse).point_xy, Trajectoire_get_point(trajectoire, abscisse + delta_abscisse).point_xy );
|
||||
|
||||
// Sur les trajectoires de bézier, il peut être nécessaire d'affiner
|
||||
// Les cas où l'algorythme diverge ne devraient pas se produire car distance_cm << longeur_trajectoire.
|
||||
erreur_relative = 1 - delta_mm / distance_mm;
|
||||
int nb_iteration=0;
|
||||
while(fabs(erreur_relative) > PRECISION_ABSCISSE && nb_iteration < NB_MAX_ITERATIONS){
|
||||
while(fabs(erreur_relative) > PRECISION_ABSCISSE){
|
||||
delta_abscisse = delta_abscisse * distance_mm / delta_mm;
|
||||
delta_mm = distance_points(Trajectoire_get_point(trajectoire, abscisse).point_xy, Trajectoire_get_point(trajectoire, abscisse + delta_abscisse).point_xy );
|
||||
erreur_relative = 1 - delta_mm / distance_mm;
|
||||
nb_iteration++;
|
||||
}
|
||||
|
||||
return abscisse + delta_abscisse;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user