Cours:MindstormSuiviLigne : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(Moteur !)
Ligne 79 : Ligne 79 :
 
*vitesse de rotation
 
*vitesse de rotation
 
*pause dans la boucle
 
*pause dans la boucle
 +
 +
 +
=Ligne multicolore=
 +
 +
Afin d'améliorer le suivi de ligne, on propose d'accoler des bandes de plusieurs couleurs.
 +
 +
On pourra alors savoir si le robot et plutôt au centre, ou s'éloigne sur un des côté.
 +
 +
{{Question|Montrer que le capteur identifie bien toutes les couleurs :}}
 +
Vous pouvez :
 +
*afficher un message différent à l'écran suivant la couleur
 +
*choisir une couleur de led par couleur détectée par le capteur
 +
 +
 +
{{Question|Ecrire alors un programme qui exploite ces différentes couleurs pour effectuer un suivi de ligne}}
 +
 +
 +
=Mode COL_REFLECT=

Version du 28 septembre 2018 à 10:07

Retour à la liste des Tps

Vous allez dans ce TP programmer un robot suiveur de ligne.

Nous utiliserons le capteur de couleur présent sur le robot tour à tour dans les modes COL_COLOR et COL_REFLECT.

détection de couleur : Noir ou pas ?

On souhaite suivre une ligne de couleur noire au sol.

On souhaite dans cette partie utiliser le capteur en détection de couleur (COL_COLOR mode).

Fin du programme

Comme expliqué dans un TP précédent, la plupart des programmes auront une structure de la forme :

....
int main()
{
   // init robot et variables
   ....
   do {
      // lire les entrées
      ....
      // faire des calculs
      ....
      // modifier les sorties
      ....
      // éventuellement une attente pour ne pas modifier trop fréquemment les sorties
      Wait(qques Ms);
   } while( condition pour continuer le programme);
   // fin du programme
   ...
}

Commençons par prévoir l'arrêt du robot en fin de parcours. On utilisera le capteur de contact (touchSensor).

Question.jpg Ecrire un programme qui fait clignoter la led verte et qui se termine lorsque le robot rencontre un obstacle

Il faudra regarder la fonction SetLedPattern

Détection de la ligne

On conserve le programme précédent, les moteurs ne sont toujours pas utilisés, on souhaite vérifier que le capteur de couleur détecte bien la ligne.

Question.jpg Ecrire un programme qui :

  • configure le capteur de couleur en mode COL_COLOR
  • répète
    • lire capteur de couleur
    • si couleur noire
      • allumer led verte
    • sinon
      • allumer led rouge
    • attendre 10ms
  • tant qu'il n'y a pas d'obstacle
  • quitter

Moteur !

Bon tout est en place, au souhaite suivre un des bords de la ligne. On peut par exemple :

  • avancer en tournant à droite si le robot est sur la ligne
  • avancer en tournant à gauche si le robot est à côté de la ligne

Ou le contraire si on veut suivre l'autre bord.

Aux unités près, on peut noter :

  • Vt vitesse de translation
  • Wr vitesse de rotation
  • Vmd = Vt + wr vitesse du moteur droit
  • Vmg = Vt - wr vitesse du moteur gauche

Question.jpg Terminer votre programme de suivi de ligne

Attention : Il faut trouver un compromis entre :

  • vitesse d'avance
  • vitesse de rotation
  • pause dans la boucle


Ligne multicolore

Afin d'améliorer le suivi de ligne, on propose d'accoler des bandes de plusieurs couleurs.

On pourra alors savoir si le robot et plutôt au centre, ou s'éloigne sur un des côté.

Question.jpg Montrer que le capteur identifie bien toutes les couleurs : Vous pouvez :

  • afficher un message différent à l'écran suivant la couleur
  • choisir une couleur de led par couleur détectée par le capteur


Question.jpg Ecrire alors un programme qui exploite ces différentes couleurs pour effectuer un suivi de ligne


Mode COL_REFLECT