Cours:MindstormEvitementObstacle

De troyesGEII
Révision datée du 17 octobre 2018 à 09:20 par SergeMoutou (discussion | contributions) (Principe)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher
Retour à la liste des Tps

Rotation à l'aide du gyroscope

On souhaite que le robot puisse faire des rotations d'un certain angle. Il est intéressant d'utiliser le gyroscope pour parvenir à ce résultat.

Principe

On souhaite tout simplement réaliser un programme qui fait tourner le robot d'un angle de 90°.

Indication: une rotation positive est une rotation vers la droite.

L'algorithme sera le suivant :

  • arrêter moteurs
  • attendre 10ms
  • lire gyroscope (valeur entre -180 et 180 d'après la doc mais retourne en fait un angle pouvant dépasser ces limites)
  • calculer l'angle souhaité (position du robot + 90° ...)
  • faire tourner le robot sur lui même (roues en sens opposé)
  • répéter
    • lire gyroscope
    • attendre 2ms
  • tant que angleRobot != angleSouhaité (ou tant que angleRobot < angleSouhaité)
  • arrêter les moteurs

Question.jpg Ecrire un tel programme

création d'une fonction

Il peut être intéressant de faire tourner notre robot de 90° plusieurs fois dans un même programme.

Au lieu de faire un "copier coller", on va écrire une fonction qu'il suffira d'appeler chaque fois que l'on souhaite :

Exemple :
#include ....

void tourner90()
{
  // copier ici les instructions nécessaires à la rotation à 90°
  ...
}

int main()
{
   ....
   tourner90();
   ....
   do {
      ....
      tourner90();
      ....
   } while (conditionPourContinuer);
   ....
   return 0;
}


Question.jpg Ecrire un programme utilisant cette fonction tourne90 pour que le robot "dessine" un carré

Remarque : Vous pourrez :

  • écrire une fonction ligne droite
  • utiliser une boucle for

Pour les plus avancés :

On peut également faire une fonction plus évoluée dont le prototype serait :

void tourne(int angle)

La fonction doit alors tenir compte du paramètre passé (angle) pour calculer la valeur de l'angle désiré.

Question.jpg Ecrire cette fonction tourne et l'utiliser pour "dessiner" un triangle par exemple

Évitement d'obstacles

On place le robot dans un environnement avec des murs qu'il doit bien évidemment éviter. En temps normal le robot se déplace en ligne droite.

Vous allez utiliser le télémètre UltraSon pour détecter les obstacles (mesure de distance) et lorsque le robot se trouve trop près, le robot devra tourner de 90°.

Si jamais le robot touche un obstacle, le programme devra se terminer.

Question.jpg Faire un programme répondant au cahier des charges


Remarque :

  • commencer par un robot qui se déplace en ligne droite et s'arrête s'il touche un obstacle