Bonjour.
Suite à ce post j'ai effectué une implémentation du problème. (je remet la figure) :
avec acc_pos(a0), la première pente et decc_pos(a2) la seconde; h est la hauteur du point en p; C est la consigne. ce code étant exécuté a chaque fois avec un t incrémenté de 1.
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 if(t>=p) { if(t+1>=t2) { speed=C-sum; return 1; } speed-=decc_pos; } else { speed+=acc_pos; if(speed>h) speed=h; } sum+=speed;
Les temps sont calculés de la façon suivante (en double) :
par la suite, on convertit t1 et t2 en int.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 t2=sqrt(2C*(acc_pos+decc_pos))/(acc_pos*decc_pos)); h=2C/sf->t2; t0=h/acc_pos;
Le problème est que quand je teste avec la discrétisation de t2 et t0 (car t discret), j'obtiens, pour acc_pos_==decc_pos=5 C=5820 le résultat suivant:
de même, avec C=582:
Les pics correspondant à l'ajustement de l'intégrale.
c'est clairement un problème de discrétisation... plus précisément, cela se produit car la diminution (t0) commence trop tôt ou trop tard.
Si vous avez une idée...
merci![]()
Partager