Bonjour, mon Rover suit un cap. Sur un WPoint il doit tourner à gauche pour suivre le nouveau cap. Lors de la rotation, en passant par le nord, le différentiel de cap autour du Nord (ou du Sud) prend une valeur avec 360°.
De ce fait le différentiel de cap ne peut continuer à évoluer sans erreur pour valider la nouvelle position.
Le passage 0\360 semble de l'ordre des "statistiques circulaires avec sens" que je ne sais pas appliquer à ma fonction().
Auriez-vous une solution à ce problème? Je vous remercie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 float DifferentielCapsGps() {// cap_Rover est le cap théorique à suivre et angle_getAngleRover_Degre est le cap courant du rover //Situation 1: WP2 cap_Rover:180 à 360° _ angle_getAngleRover_Degre:0 à 180° if( (cap_Rover >= 180) && (angle_getAngleRover_Degre <= 180) ){ differentielCapsGps = -1*( (360-(float)cap_Rover) + (float) angle_getAngleRover_Degre ); } //Situation 2: WP3 cap_Rover:0 à 180° _ angle_getAngleRover_Degre:180 à 360° if( (cap_Rover <= 180) && (angle_getAngleRover_Degre <= 180) ){ differentielCapsGps = -360+( (float)cap_Rover - (float)angle_getAngleRover_Degre) ; } return differentielCapsGps; } //FIN DifferentielCapsGps
Partager