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