Skip to main content

Contrôleur : Tank Drive Exploration - C++

Icône Boîte à outils de l'enseignant Boîte à outils de l'enseignant - Le but de cette activité

L'utilisation de l'exemple de projet Tank Control permet aux étudiants de contrôler le Clawbot à l'aide du contrôleur. Les étudiants devront ajuster les paramètres dans les instructions LeftMotor.setVelocity(), RightMotor.setVelocity(), LeftMotor.spin (), RightMotor.spin (), leftMotorSpeed = Controller1.Axis3.position () et rightMotorSpeed = Controller1.Axis2.position() pour contrôler la vitesse de chacun des moteurs du Clawbot et permettre au contrôleur de contrôler les fonctions du moteur.

Pour plus d'informations sur l'une des instructions, consultez l' aide de la  section C++ dans VEXcode V5.

Voici un aperçu de ce que les élèves feront dans cette activité :

  • Explorez l'exemple de projet Tank Control.

  • Comprendre l'utilisation de la structure en boucle infinie while True.

  • Relevez le défi Robo-Slalom !

Icône Conseils pour l'enseignant Conseils à l'enseignant

Si c'est la première fois que l'étudiant utilise VEXcode V5, il peut accéder à de nombreux articles utiles dans la base de connaissances VEX.

Matériel requis :
Quantité Matériel nécessaire
1

Kit de démarrage de salle de classe VEX V5 (avec micrologiciel à jour)

1

VEXcode V5 (dernière version, Windows, macOS)

1

Carnet d'ingénierie

1

Exemple de projet de contrôle de réservoir

2 ou plus

Articles de classe à utiliser comme obstacles

Icône Conseils pour l'enseignant Conseils à l'enseignant - Utilisation de la saisie semi-automatique

La saisie semi-automatique est une fonctionnalité de VEXcode V5 qui prédit le reste de la commande que vous tapez. Pendant que les élèves travaillent dans VEXcode V5, encouragez-les à utiliser la fonction de saisie semi-automatique pour les aider avec la syntaxe. L' article Saisie semi-automatique explique comment utiliser la fonction de saisie semi-automatique.

VEXcode V5 avec la partie Drivetrain d'une commande tapée à gauche, et à droite, une liste déroulante d'options de saisie semi-automatique pour cette commande est affichée.

 

Cette activité vous donnera les outils pour programmer votre contrôleur.

Étape 1 : Commençons à programmer le contrôleur.

  • Ouvrez l' exemple de projet Tank Control.
  • Exemple d'icône de projet d'un char positionné au-dessus d'une manette de jeu, avec l'étiquette « Tank Control » en dessous.

    Procédez comme suit dans votre cahier d'ingénierie :

    Prédisez ce que le Clawbot fera dans le cadre de ce projet. Expliquez plus que le fait que le projet utilise le contrôleur.
    Comment les joysticks déplacent-ils le robot ? Que fait le Clawbot ?

    
    	int main() {
    		// Initializing Robot Configuration. DO NOT REMOVE!
    		vexcodeInit();
    		// Begin project code.
    		
    		// Main Controller loop to set motors to controller axis positions
    		while (true) {
    		  LeftMotor.setVelocity(Controller1.Axis3.position(), percent);
    		  RightMotor.setVelocity(Controller1.Axis2.position(), percent);
    		  LeftMotor.spin(forward);
    		  RightMotor.spin(forward);
    	  
    		  wait(5, msec);
    		}
    	  
    		return 0;
    	}
    

 

Icône Boîte à outils de l'enseignant Boîte à outils de l'enseignant - Réponses

  1. Ce projet utilisera la structure en boucle infinie while True pour vérifier en permanence où se trouvent les positions du joystick gauche et droit. Lorsque le joystick gauche (ou droit) est poussé vers le haut, la vitesse est définie pour la distance à laquelle le joystick est poussé vers l'avant. 
  2. Ainsi, plus le joystick est poussé vers l'avant, plus la vitesse sera réglée rapidement et plus les moteurs se déplaceront rapidement. La même idée fonctionne pour repousser le joystick. Plus le joystick est poussé vers l'arrière, plus les moteurs se déplacent rapidement en marche arrière.
  • Enregistrez, téléchargez et exécutez(C++) l' exemple de projet Tank Control.
  • Pour obtenir de l' aide, consultez les sections de la bibliothèque VEX sur C++ ou consultez le tutoriel dans VEXcode V5 qui explique comment télécharger et exécuter un projet.

    Barre d'outils dans VEXcode V5 avec didacticiels, à droite, surlignée d'une case rouge. À gauche, la barre d'outils affiche un logo V5, une icône globe, puis Fichier, Modifier et Tutoriels.

     

  • Vérifiez vos explications du projet dans votre cahier d'ingénierie et ajoutez des notes pour les corriger au besoin.

Étape 2 : Contrôleur : Contrôle du réservoir

Icône Boîte à outils de l'enseignant Boîte à outils de l'enseignant - The while True Infinite Loop Structures

Cette étape traite de l'importance de la structure en boucle infinie while True. Vous devriez examiner les informations en tant que classe. Vous pouvez modéliser le comportement avec votre Clawbot et votre contrôleur, ou si le temps le permet, demandez aux étudiants d'exécuter le programme sans la structure en boucle infinie while True.

​Quels sont les avantages d'utiliser la structure en boucle infinie while True ?

Voici notre projet sans la structure en boucle infinie while True:


	int main() {
		// Initializing Robot Configuration. DO NOT REMOVE!
		vexcodeInit();
		// Begin project code.
		// Main Controller loop to set motors to controller axis postiions
		
		LeftMotor.setVelocity(Controller1.Axis3.position(), percent);
		RightMotor.setVelocity(Controller1.Axis2.position(), percent);
		LeftMotor.spin(forward);
		RightMotor.spin(forward);
	  
	}

Selon vous, que se passerait-il si ce programme était exécuté ? Discutez-en en groupe. Notez votre prévision dans le cahier d'ingénierie.

Icône Boîte à outils de l'enseignant Boîte à outils de l'enseignant - Comprendre la structure

Sans la boucle infinie while True, la valeur de la vitesse pour chaque moteur est définie dès que le projet est exécuté, et cette valeur reste constante jusqu'à l'arrêt du projet. En d'autres termes, si vous exécutez le projet sans déplacer l'un ou l'autre joystick, car la position par défaut du joystick sur son axe est 0, la vitesse des deux moteurs restera à 0, même si vous déplacez le joystick.

De même, supposons que vous déplaciez le joystick gauche vers le haut aussi loin qu'il ira le long de l'axe 3 et que vous le mainteniez là. Si vous exécutez le projet ci-dessus, le moteur gauche se déplacera à pleine vitesse et restera à cette vitesse même si vous déplacez le joystick vers le bas le long de l'axe 3. En effet, Clawbot reçoit ses instructions initiales du contrôleur dès que le projet est exécuté ; cependant, sans boucle, cette valeur initiale ne peut pas être mise à jour.

La boucle while True Infinite indique au Clawbot de mettre à jour constamment la vitesse et de fonctionner pendant toute la durée du projet. En d'autres termes, la boucle infinie while True, dans ce projet, vous permet de modifier la vitesse de chaque moteur en déplaçant le joystick le long de l'axe 2 ou 3, et le Clawbot répondra en conséquence jusqu'à ce que vous arrêtiez le projet ou éteigniez le Clawbot.

Étape 3 : Naviguez dans un parcours de slalom !

Icône Boîte à outils de l'enseignant Boîte à outils de l'enseignant - Configurer l'activité

Organisez les élèves en petits groupes de 2 ou 4 élèves. Un élève doit être désigné comme le conducteur - la personne qui utilisera le contrôleur pour manœuvrer le Clawbot.

Demandez aux élèves de terminer ce slalom en utilisant le contrôleur pour déplacer le Clawbot le long de l'extérieur de chaque « drapeau ». Le chemin du Clawbot doit l'empêcher de toucher un drapeau et lui permettre de franchir la ligne d'arrivée. Les drapeaux peuvent être tout matériel/objet de classe que vous avez à portée de main (gomme, rouleau de ruban adhésif, boîte à mouchoirs) et peuvent être mis en place avant d'utiliser le Clawbot.

Si le temps le permet, demandez aux élèves de changer de rôle pour donner aux autres la possibilité de conduire le Clawbot. Vous pouvez même transformer cela en une compétition au sein des groupes ou entre les groupes en voyant à quelle vitesse chaque pilote peut naviguer sur le slalom.

Un snowboardeur court en descente sur une pente enneigée, naviguant à travers une série de portes rouges et bleues positionnées en zigzag.

Les slaloms sont des cours que le participant doit parcourir autour des drapeaux ou des marqueurs définis. Les slaloms de ski sont un sport d'hiver populaire et sont inclus dans les Jeux olympiques d'hiver.

Maintenant que le contrôleur est jumelé et que le  projet C++ est téléchargé, vous êtes prêt à déplacer votre Clawbot à l'aide du contrôleur !

  • Ramassez les quatre objets de classe que vous utiliserez comme drapeaux dans votre slalom auprès de l'enseignant.
  • Collaborez pour mettre les drapeaux en place pour que le pilote puisse naviguer dans le Clawbot, selon le diagramme de slalom.
  • Téléchargez le projet Tank Control Example. Si vous avez des questions sur la façon de télécharger un projet, consultez le didacticiel Télécharger et exécuter un projet.

Étape 4 : Robo-Slalom

Une illustration d'un parcours de slalom sur neige, avec une étiquette « Départ » en haut et une ligne d'arrivée en bas. Entre les deux, un chemin en zigzag en pointillés tisse une alternance de drapeaux bleus et rouges.

Utilisez le contrôleur pour déplacer votre Clawbot le long de l'extérieur de chaque « drapeau ». La trajectoire du robot doit l'empêcher de toucher un drapeau et lui permettre de franchir la ligne d'arrivée.

  • Exécutez le projet et faites avancer et reculer le Clawbot, puis tournez à gauche et à droite à l'aide des deux joysticks.
  • Temps qu'il faut au Clawbot pour terminer le cours. Documenter les heures dans le cahier d'ingénierie.
  • À quelle vitesse pouvez-vous faire suivre le cours de slalom à Clawbot ?

Icône Motiver la discussion Motiver la discussion - Réfléchir à l'activité

Q : Le Clawbot a-t-il répondu au contrôleur comme vous vous y attendiez ?

R : Les réponses varieront ; cependant, le but de cette question est de promouvoir la pensée cognitive. Les élèves ont commencé par prédire les comportements avant de les tester, de documenter leurs résultats et de réfléchir.

Q : Quel est le plus grand défi pour faire avancer ou reculer le Clawbot en ligne droite ?

R : Bien que les réponses puissent varier, une réponse commune devrait être que les deux joysticks doivent se déplacer en synchronisation l'un avec l'autre pour s'assurer que les moteurs du Clawbot se déplacent dans la même direction et à la même vitesse

Q : Comment l'utilisation de la boucle à boucle infinie while True  vous permet-elle d'utiliser en permanence le contrôleur pour déplacer le Clawbot ?

R : Sans la boucle infinie while True , le Clawbot n'exécuterait les comportements déterminés par les instructions du projet qu'une seule fois. La boucle while True Infinite indique au Clawbot de mettre à jour constamment la vitesse et de fonctionner pendant toute la durée du projet. En d'autres termes, la boucle while True Infinite vous permet d'utiliser le contrôleur pour déplacer le Clawbot indéfiniment, ou jusqu'à ce que la batterie meure.