Skip to main content

Leçon 3 : Utilisation des capteurs et de l'électroaimant pour placer un disque dans l'objectif

Ajout du capteur de distance au projet

Dans la leçon 2, le robot VR a fait marche arrière jusqu'au point de départ pour déposer le disque. Cela nécessitait que l'utilisateur calcule la distance exacte à parcourir par le robot VR. Cela n'est pas toujours possible. Au lieu de cela, le robot VR peut utiliser les valeurs de capteur signalées pour ramasser et déposer des disques avec une précision constante. 

Dans cette leçon, le capteur de distance sera utilisé pour déterminer où le robot VR doit arrêter de conduire lors du retour à l'objectif. Ce capteur signale la distance entre l'avant du robot VR et l'objet le plus proche à l'aide de la commande get_distance Pour utiliser le capteur de distance pour ramener le robot VR au but, les opérations suivantes doivent se produire : 

  • Le robot VR devra tourner à 180 degrés pour que le capteur de distance soit face l'objectif. La commande turn_to_heading peut être utilisée pour garantir que le robot VR tourne dans le bon cap.
  • Le robot VR utilisera le capteur de distance avec la paroi arrière de l'aire de jeux afin de déterminer où déposer le disque. 
  • Le robot VR se dirigera vers l'objectif. 
Une vue en perspective du robot VR sur le terrain de jeu Disk Mover à l'emplacement du premier disque bleu, avec le disque attaché à l'électroaimant. Le but bleu est derrière le robot.

Pour votre information

La commande turn_to_heading fait tourner le robot VR vers un cap spécifique à l'aide du capteur gyroscopique. La direction dans laquelle le robot VR va tourner (à gauche ou à droite) est déterminée en fonction du cap actuel du capteur gyroscopique. Passez à la commande VEXcode VR Python, lit le point du groupe motopropulseur tourner le trait de soulignement vers le trait de soulignement, avec 90 et les degrés entre parenthèses.

La commande turn_to_heading est utilisée pour diriger le robot VR vers un cap spécifique quelle que soit la position du robot VR. Lorsque vous prenez ou déposez un disque, le robot VR peut déraper. L'utilisation de la commande turn_to_heading garantit que le robot VR se tournera vers la position absolue plutôt que vers une position relative au cap précédent.

Une vue de haut en bas du robot VR au centre d'un cercle illustrant les en-têtes du robot. À la position 12 heures, aligné avec l'avant du robot, il fait 0 degré. Le cap tourne dans le sens des aiguilles d'une montre autour du cercle, avec 90 degrés en position 3 heures, 180 degrés en position 6 heures et 270 degrés en position 9 heures.

Poursuivre la construction du projet 

  • Continuez à travailler sur le  projet Unit8Lesson3.
  • Ajoutez une commande turn_to_heading après le troisième commentaire. Définissez le paramètre sur 180 degrés, de sorte que le projet ressemble maintenant à ceci : 

    def main() :
        #1. Drive to the first disk
        while not down_eye.near_object() :
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        drivetrain.stop()
    
        # 2. Prenez le premier aimant à
        disque.energize(BOOST)
    
        # 3. Conduisez jusqu'à l'
        objectifdrivetrain.turn_to_heading (180, DEGRÉS)
    
        # 4. Déposez le disque dans l'objectif
  • Maintenant que le robot VR est orienté vers l'objectif, le robot VR devra revenir à l'objectif. Ajoutez une boucle while sous la commande turn_to_heading , de sorte que la troisième section du projet ressemble à ceci : 

    	# 3. Conduisez jusqu'à l'objectif
        drivetrain.turn_to_heading(180, DEGRÉS)
        pendant l'état :
            attendez(5, MSEC)
  • Pour revenir à l'objectif, le robot VR utilisera les données du capteur de distance pour déterminer quand le robot VR est à l'intérieur de l'objectif. Comme indiqué dans la leçon précédente, chaque carré de grille sur le terrain de jeu du déplaceur de disque mesure 200 millimètres (mm) par 200 millimètres (mm).Une vue rapprochée du coin inférieur gauche de la cour de récréation, montrant que chaque carré de la grille 10 x 10 sur le sol de la cour de récréation mesure 200 mm sur 200 mm.
  • À l'aide de ces mesures, le centre du but peut être déterminé à environ 200 millimètres (mm) du mur de l'aire de jeux.

    Vue rapprochée du coin inférieur gauche de l'aire de jeux Disk Mover. Le robot VR a un disque bleu attaché à l'électroaimant et fait face à l'objectif bleu. Une mesure de la paroi arrière de la cour de récréation au centre du but bleu est étiquetée 200 millimètres.
  • Le robot VR doit conduire pendant que le capteur de distance signale que le robot VR se trouve à plus de 200 millimètres (mm) du mur de l'aire de jeu. Définissez la condition de la boucle while sur la commande get_distance avec le paramètre millimètres (mm). Ajoutez ensuite l'opérateur de comparaison à plus de (>) 200. La troisième section du projet devrait maintenant ressembler à ceci : 

    	# 3. Conduisez jusqu'à l'
        objectifdrivetrain.turn_to_heading (180, DEGRÉS)
        pendant front_distance.get_distance(MM) > 200 :
            attendez(5, MSEC)
  • Ajoutez une commande drive dans cette boucle while , de sorte que la troisième section du projet ressemble à ceci. Cela demandera au robot VR de rouler vers l'avant pendant que le capteur de distance signale une distance supérieure à 200 millimètres (mm).

    	# 3. Conduisez jusqu'à l'
        objectifdrivetrain.turn_to_heading (180, DEGRÉS)
        pendantfront_distance.get_distance (MM) > 200 :
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
  • Une fois que le robot VR a atteint l'objectif (200 mm du mur), le robot VR devra arrêter de conduire. Ajoutez une commande stop en dehors de la boucle  while , de sorte que la troisième section du projet ressemble à ceci :

    	# 3. Conduisez jusqu'à l'
        objectifdrivetrain.turn_to_heading (180, DEGRÉS)
        tandis quefront_distance.get_distance (MM) > 200
            :drivetrain.drive (FORWARD)
            wait(5, MSEC)
        drivetrain.stop()
  • Maintenant que le robot VR est arrêté dans l'objectif, il peut laisser tomber le disque. Ajoutez une commande energize sous le quatrième commentaire et définissez le paramètre sur « DROP ». La quatrième section du projet devrait maintenant ressembler à ceci :

    	# 4. Déposez le disque dans l'objectif
        magnet.energize(DROP)
  • Le robot VR devra rouler en marche arrière sur une courte distance pour éviter de renverser ou d'entrer en collision avec des disques. Une collision avec un disque pourrait potentiellement faire dérailler le robot VR. Le robot VR devra alors tourner pour être à nouveau face aux disques. Ajoutez les commandes suivantes après la commande finale energize comme indiqué, pour demander au robot VR de rouler en marche arrière sur 100 millimètres (mm) et de revenir à un cap de 0 degré. Assurez-vous que les commandes sont correctement indentées dans votre projet.

    	# 4. Déposez le disque dans l'objectif
        magnet.energize(DROP)
    
    	drivetrain.drive_for(REVERSE, 100, MM)
        drivetrain.turn_to_heading(0, DEGRÉS)
  • Ouvrez le Disk Mover Playground s'il n'est pas déjà ouvert et exécutez le projet.
  • Le robot VR avance, ramasse le premier disque, puis se tourne vers un cap de 180 degrés pour faire face à l'objectif. Le robot VR utilise ensuite les valeurs du capteur de distance pour déterminer quand arrêter la conduite et laisser tomber le disque.

    Une vue latérale du but bleu du terrain de jeu Disk Mover, avec le premier disque bleu tombé dans le but, et le robot VR est tourné et positionné à l'avant du but, prêt à collecter le disque suivant.

Flux de projet pour déposer le premier disque dans l'objectif

Remarquez comment la boucle while fonctionne avec le capteur de distance dans cette partie du projet.

  • Le robot VR avance alors que le capteur de distance est à plus de 200 millimètres du mur.
  • Lorsque le capteur de distance détecte que le mur de l'aire de jeu est à moins de 200 millimètres (mm), le projet passera à la commande suivante en dehors de la boucle while et le robot VR arrêtera de conduire.
  • Le projet se poursuivra, pour mettre sous tension l'électroaimant afin de faire tomber le disque dans l' objectif.
  • Ensuite, le robot VR fera marche arrière et tournera à 180 degrés pour être prêt à faire face au disque suivant.

Sélectionnez le bouton Suivant pour continuer le reste de cette leçon.