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.

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. 
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.

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).

-
À 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.

-
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.

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.