Bonjour,
Posté 16 mai 2019 - 09:55
Bonjour,
Posté 16 mai 2019 - 12:32
Alors il y a une fonction mathématique qui est le " Modulo " , qui permet de rester dans une plage donnée et de repartir au début quand on déborde =)
C'est super intéressant pour ce genre de cas .
Quels que exemple :
1 modulo 360 = 1
15 modulo 15 = 0
25 modulo 20 = 5
390 modulo 360 = 30.
Bon attention les informaticiens et les mathématiciens ne sont pas d'accord sur leur implémentation avec les nombres négatifs ...
En maths :
-1 modulo 10 = 9
en informatique généralement tu as -1 modulo 10 = -1 ....
Du coup pour ce que tu souhaites faire ça peut poser problèmes dans certains cas ... Quand tu as des nombres en entré qui peuvent être négatif ^^
Pour la suite tout ce que je vais dire est valable pour le " modulo mathématique " qui se note % ... donc on a : -1 % 10 = 9 ;
Revenons à nos angles et faisons le lien avec les "modulo" .
On a notre angle actuel, l'angle courant et notre angle consigne. Ce qui nous intéresse c'est le delta entre les deux ! =)
Donc on commence par faire : Delta Angle = Angle consigne - Angle courant.
Sur le papier ça a l'air bien :
si on est dans le sens trigo que je dois aller à 15° et que je suis à 0° j'obtiens Delta Angle = 15 donc je dois tourner dans le sens positif de 15°...
par contre ce calcul marche moins bien quand je dois aller à 359° alors que je suis à 0° j'obtiens Delta Angle = 359 c'est positif c'est bien ... Mais j'aurais préféré comme résultat " -1 " qui indique dans quel sens tourner ... et de combien de degré ...
En exploitant un peu les différents cas on comprend que dans un cas " normal " où les deux angles sont compris entre 0 et 360° on peut avoir un delta angle qui va varier entre -360° et 360° ...
Et que du coup quand on a delta angle compris entre -180° et 180° on peut garder le résultat direct mais que quand on est entre 180° et 360° il faut faire regarder delta angle - 360° ... et que quand on a delta angle entre -180° et -360° il faut regarder delta angle + 360° .
Chouette ! On a donc notre bonne formule avec 3 cas à distinguer. On a fini on peut s'arrêter là ! =) Hourra !
Hey minute papillon ... Pourquoi on a parlé de modulo au début si à la fin on les utilise pas ???
à la fin on ne les utilise pas car on a fait que traité le cas particulier avec les deux angles d'entrées entre 0 et 360° !! Mais souvent on peut avoir n'importe quel type d'angle , compris entre -180° et +180° par exemple, on on peut sommer plusieurs angles à la suite et dépasser les 3 tours et il faudrait que ça marche à chaque fois et c'est là qu'intervient le modulo, qui permet de généraliser la formule ! =)
delta angle = ( Angle consigne - Angle cible) % 360 et ensuite on peut séparer notre cas si delta angle est >180 ou pas ...
si on est inférieur à 180 on garde notre delta angle tel quel, si on est supérieur à 180 il faut regarder delta angle - 360° ...
Je vous laisse essayer la formule avec différentes valeurs d'angle pour vérifier que ça marche même sur plusieurs tours =)
ça marche sur la papier ? Cool !
Comment on fait un modulo "mathématique" en informatique ?
Je connais pas de lib qui le fait, en fait j'ai jamais cherché ... J'ai toujours fait un truc du genre :
while ( angle < 0)
angle += 360;
while (angle >= 360)
angle -=360;
Si mon commentaire vous a plus laissez nous un avis !
Nouveau sur Robot Maker ?
Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope aux articles, à la boutique et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être !
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!
0 members, 1 guests, 0 anonymous users