Loading…
Loading…

Niveau : Avancé
(Remarque : cette leçon présente l’interface de vision par ordinateur et est destinée aux élèves avancés dans ce domaine spécifique. Elle suppose aussi une expérience préalable avec FTC Sim. Les élèves et le personnel enseignant doivent avoir déjà suivi les leçons classiques d’introduction et être familiarisés avec l’utilisation de la plateforme et la programmation des mouvements des robots.)
Dans cette leçon, les élèves mettront en pratique leurs connaissances en matière de vision robotique et de données AprilTag pour résoudre un défi concret. Contrairement aux leçons précédentes où le robot réagissait à des données statiques, les élèves vont désormais programmer leur robot pour qu’il surveille en continu les propriétés AprilTag pendant qu’il est en mouvement. À l’aide du Vision Portal, ils suivront les changements dans les données de localisation et d’orientation, telles que la distance, l’angle et le cap, et utiliseront ces données pour prendre des décisions en temps réel. Cette approche dynamique initie les élèves à des comportements autonomes plus avancés, où le robot adapte ses actions en fonction des données en temps réel provenant de son environnement.
Ce plan de cours est structuré selon le cadre pédagogique des 5E, un modèle d’enseignement largement reconnu qui comprend cinq phases : engager, explorer, expliquer, élaborer et évaluer. Le cadre pédagogique des 5E engage systématiquement les élèves dans un apprentissage basé sur l’enquête, encourageant l’exploration active et la compréhension de sujets complexes.
Au cours de la leçon, les élèves vont:
suivre les propriétés d’AprilTag telles que l’emplacement et l’orientation pendant que le robot se déplace ;
utiliser les données en temps réel du Vision Portal pour guider le comportement du robot et résoudre un défi ;
appliquer des fonctions et une logique conditionnelle pour créer un code robotique réactif, efficace et adaptatif.
papillons adhésifs amovibles ou une application collaborative de remue-méninges comme Microsoft Whiteboard, FigJam ou Apple Freeform.
appareils pour vos élèves (ordinateurs Windows, ordinateurs Mac, ChromeBook)
navigateur web Google Chrome ou Microsoft Edge (version Chromium)
accès au site web du simulateur FTC (https://ftcsim.org)
compte « élève » créé pour chacun de vos élèves
projecteur ou tableau blanc interactif
Pour éveiller la curiosité des élèves et leur montrer comment les robots peuvent réagir en temps réel aux données visuelles, commencez la leçon en leur montrant la vidéo d’une équipe FIRST Robotics faisant une démonstration du suivi AprilTag, disponible à l’adresse suivante : https://youtu.be/XA15Qq2CXY0?si=DPBT4jvFr9Edxztc. Dans la vidéo, un membre de l’équipe déplace un AprilTag autour d’un robot et celui-ci suit activement le tag en fonction de sa position et de son orientation.
Cette démonstration montre comment les robots peuvent surveiller les propriétés AprilTag telles que la distance, l’angle et l’orientation pendant leur déplacement et adapter leur comportement en conséquence. Elle permet aux élèves d’explorer comment leur propre robot peut utiliser les données AprilTag en temps réel pour prendre des décisions pendant son déplacement, ce qui conduit à des comportements autonomes plus avancés et adaptatifs.
Après la présentation vidéo, distribuez des papillons adhésifs amovibles à vos élèves et encouragez-les à participer à une séance de remue-méninges sur la manière dont les robots peuvent utiliser les données AprilTag en temps réel, telles que les changements de distance, d’angle et d’orientation pendant leurs déplacements, afin de prendre des décisions plus intelligentes. Demandez aux élèves d’écrire une idée par papillon adhésif qui répond à la question : « Comment un robot pourrait-il utiliser les données AprilTag en temps réel tout en se déplaçant pour résoudre un problème concret ? » Attribuez-leur une zone désignée sur le mur de la classe pour qu’ils puissent y apposer leurs idées. Une fois qu’ils ont émis plusieurs idées, demandez-leur de se rassembler dans l’espace de partage pour y apposer leurs papillons adhésifs amovibles. Si une idée a déjà été affichée sur le mur, ils peuvent la placer par-dessus l’idée existante, tandis que, si le concept n’est pas encore affiché, ils doivent trouver un endroit disponible pour l’afficher.
Voici quelques-unes des idées qu’ils peuvent avoir:
Un robot qui suit une personne en détectant une balise placée sur son sac à dos.
Un robot d’entrepôt qui ajuste son parcours en temps réel pour éviter les obstacles tout en suivant une cible mobile.
Un drone qui maintient sa caméra focalisée sur un objet en mouvement à l’aide de l’orientation de la balise.
Un robot qui se déplace dans un labyrinthe en ajustant continuellement sa direction en fonction des données fournies par la balise.
Un robot de livraison qui s’aligne sur un point de dépôt mobile.
Un bras robotisé qui ajuste sa prise lorsque l’objet change de position.
Animez une discussion en posant des questions qui incitent à la réflexion:
Comment un robot peut-il utiliser les données AprilTag en temps réel pour ajuster ses mouvements pendant qu’il se déplace ? (p. ex., il peut continuellement mettre à jour sa direction, ralentir ou accélérer, et rester aligné avec une cible en mouvement.)
Pourquoi est-il important pour un robot de surveiller à la fois l’emplacement et l’orientation d’une balise pendant qu’il se déplace ? (p. ex., cela aide le robot à rester sur sa trajectoire, à éviter de dévier et à réagir avec précision aux changements de position de la balise.)
Quels types de défis exigent qu’un robot réagisse en temps réel aux changements des données des balises ? (p. ex., suivre un objet en mouvement, naviguer dans des environnements dynamiques ou s’adapter à des obstacles changeants.)
En quoi l’utilisation des données AprilTag en temps réel améliore-t-elle la capacité d’un robot à résoudre des tâches complexes par rapport à l’utilisation de données statiques ? (p. ex., cela permet une rétroaction et un ajustement continus, rendant le robot plus adaptatif et plus précis.)
Quels problèmes pourraient survenir si un robot ne mettait pas à jour les données de sa balise pendant qu’il se déplace ? (p. ex., il pourrait perdre la trace de la cible, mal aligner son trajet ou ne pas réussir à accomplir la tâche avec précision.)
Dans quelles situations réelles ce type de comportement réactif des robots pourrait-il être particulièrement utile ? (p. ex., les robots de livraison qui suivent des points de livraison mobiles, les robots de sauvetage qui suivent les survivants ou les drones qui filment des sujets en mouvement.)
Pouvez-vous imaginer des façons créatives ou inattendues dont les robots pourraient utiliser les données AprilTag en temps réel pendant leur déplacement ? (p. ex., des robots jouant à des jeux de poursuite, guidant des personnes dans des zones bondées ou ajustant l’éclairage ou les angles de caméra pendant un spectacle.)
Encouragez les élèves à commencer leur expérience d’apprentissage pratique avec la plateforme FTC Sim en se rendant sur le lien fourni, https://ftcsim.org/. Demandez-leur de se connecter à l’aide de leur nom d’utilisateur et de leur mot de passe uniques. Une fois identifiés, ils devront utiliser le lien suivant pour charger la surface de travail dont ils auront besoin pour la leçon : https://ftcsim.org/puzzle/epdxxxaqbqa/

Dans ce monde FTC Sim, zoomez sur le robot afin de montrer clairement aux élèves la caméra installée et les roues omnidirectionnelles

Combien d’AprilTags voyez-vous ? Combien d’AprilTags pensez-vous que votre robot voit en ce moment ? Que pourrait faire le robot pour en détecter davantage ? (p. ex., le robot ne voit probablement qu’une seule balise, car l’autre est hors de son champ de vision. Pour détecter la deuxième balise, il devrait pivoter ou tourner afin de modifier l’angle de sa caméra.)
Demandez aux élèves de créer des fonctions pour chaque type de mouvement, comme ils l’ont fait dans la deuxième leçon.
Avancer en ligne droite
Reculer en ligne droite
Tourner à gauche
Tourner à droite
Glisser vers la droite
Glisser vers la gauche
Cette approche permet aux élèves d’appeler une seule fonction chaque fois qu’ils veulent que le robot effectue l’un de ces mouvements, au lieu de réécrire le code du moteur à chaque fois. Il est recommandé d’utiliser des vitesses plus lentes (50 % ou moins au lieu de 100 %) pour plus de précision. Voici un exemple de ce à quoi pourrait ressembler leur code.

Rappelez aux élèves que le simple fait de créer les fonctions ne suffit pas à les exécuter. Les fonctions doivent être appelées depuis le code principal juste après Simulator.waitForStart.

Ensuite, vos élèves doivent créer l’initialisation pour activer le Vision Portal et la reconnaissance AprilTag. Ils utiliseront les mêmes blocs que ceux utilisés dans la première leçon. Ils doivent les ajouter à la section d’initialisation du code, avant l’appel à Simulator.waitForStart(). Ces blocs se trouvent dans la section « Vision ».

En fonction du niveau scolaire et de l’expérience en codage des élèves, vous pouvez choisir de leur expliquer le rôle de chaque ligne de code. Si cela semble trop avancé pour votre groupe, vous pouvez simplement fournir la séquence d’initialisation complète et concentrer la leçon sur la manière dont le robot reconnaît les AprilTags à l’étape suivante. Cela permet aux élèves de se familiariser avec le concept de base sans être submergés par les détails de configuration.
Les élèves doivent maintenant tester le code en appuyant sur « Run ». Demandez aux élèves de cliquer sur la petite flèche dans le coin inférieur gauche de l’écran. Cela ouvre la vue de la caméra du robot.

Ensuite, demandez aux élèves d’ajouter la fonction « turn left » à leur code afin que le robot commence à pivoter sur place. Une fois le code mis à jour, demandez-leur d’exécuter le programme et d’observer la fenêtre d’aperçu de la caméra. Lorsque le robot tourne, les élèves devraient le voir effectuer un tour complet à 360 degrés (et plus), révélant ainsi son environnement. Ce mouvement devrait permettre au robot de voir les deux AprilTags, qui étaient auparavant hors de vue.

Demandez aux élèves : « Pourquoi pensez-vous que ces deux balises AprilTag ont été placées à ces emplacements précis ? » (p. ex., la première balise indique l’endroit où le robot doit ramasser le bloc violet, et la seconde balise indique l’endroit où il doit le déposer. Cela aide le robot à se localiser et à se positionner avec précision pour les deux actions.)
Les élèves doivent maintenant s’assurer que le robot continue de fonctionner pendant que le programme est actif. Pour ce faire, ils utiliseront une structure conditionnelle qui vérifie si Simulator.OpModeIsActive est vrai. À l’intérieur de cette condition, ils doivent placer une boucle qui continuera à s’exécuter tant que OpModeIsActive est vrai.

Les élèves doivent maintenant créer une variable qui stockera une liste de toutes les balises AprilTag que le robot peut voir à travers sa caméra. Dans cette simulation, le robot ne doit détecter qu’une seule balise à la fois, car les autres balises sont positionnées derrière la tour et hors de vue. La variable sera nommée AllDetections et aidera le robot à garder une trace des balises AprilTag actuellement visibles.

Les élèves doivent maintenant attribuer une valeur à la variable allDetections en utilisant AprilTagProcessor pour obtenir la liste des balises détectées. Pour ce faire, ils doivent ajouter des blocs qui appellent AprilTagProcessor et récupèrent les détections actuelles. Les blocs qu’ils ajoutent à leur code doivent ressembler à l’exemple ci-dessous.

Il est maintenant temps pour les élèves de déterminer combien d’AprilTags le robot détecte actuellement. Pour ce faire, ils doivent vérifier la longueur de la liste qui contient toutes les balises détectées. Cette liste, nommée AllDetections, contient toutes les AprilTags que le robot peut voir à travers sa caméra à ce moment-là.
En utilisant un bloc qui mesure la longueur de la liste, les élèves peuvent déterminer combien de balises sont visibles. C’est un moyen utile de vérifier si le robot détecte une seule balise, plusieurs balises ou aucune balise, en particulier lorsqu’il se déplace et que son champ de vision change.

Les élèves doivent appuyer sur « Run », puis cliquer sur « Show Telemetry » pour voir les données des capteurs du robot. À mesure que le robot tourne, ils remarqueront que le nombre d’AprilTags visibles change dans l’affichage de la télémétrie. Il peut passer de zéro à un, puis revenir à zéro, puis à nouveau à un, selon la balise qui se trouve actuellement dans le champ de vision du robot. Cela aide les élèves à comprendre comment l’orientation du robot affecte ce qu’il peut détecter.

Les élèves peuvent ajouter le code pour afficher l’ID. Ils devront récupérer chaque balise de la liste à l’aide de la boucle « For each item in list AllDectections », puis utiliser AprilTagDetection.id.

En exécutant le code et en examinant les données télémétriques, ils devraient voir l’ID AprilTag s’afficher chaque fois qu’une balise est détectée. Les élèves devraient constater que l’ID de la balise AprilTag située au-dessus du cube violet est 14 et que celle située au-dessus du pavé cible est 15.

Les élèves vont maintenant commencer à explorer d’autres données qu’ils peuvent obtenir grâce à la détection AprilTag, telles que ftcPose.x, ftcPose.y, ftcPose.z, ftcPose.yaw, ftcPose.pitch, ftcPose.roll, ftcPose.range, ftcPose.bearing et ftcPose.elevation.

Voici comment ils peuvent afficher les données relatives à l’angle:

Demandez aux élèves d’exécuter le code et d’observer l’affichage de télémétrie lorsque le robot commence à tourner à gauche. Pendant qu’il tourne, ils doivent prêter une attention particulière à la valeur de l’angle indiquée. Ils remarqueront que l’angle change progressivement, variant généralement entre environ 30 degrés et -30 degrés selon l’orientation du robot. Aidez-les à comprendre que lorsque la valeur de l’angle est proche de zéro, le robot est probablement orienté directement vers les AprilTags. Cette observation aide les élèves à comprendre comment les données d’angle peuvent être utilisées pour aligner le robot avec une cible pendant le mouvement.

Les élèves doivent maintenant ajouter une structure conditionnelle à leur code qui vérifie si l’angle du robot est inférieur ou égal à zéro. Si cette condition est remplie, le robot doit s’arrêter de bouger. Pour ce faire, les élèves devront créer une fonction d’arrêt personnalisée qui règle la puissance des quatre moteurs sur zéro, arrêtant ainsi efficacement le mouvement du robot. Cette étape aide les élèves à comprendre comment utiliser les données des capteurs pour contrôler le comportement du robot en temps réel et renforce l’importance d’utiliser des fonctions pour garder leur code organisé et efficace.

Les élèves observeront que le robot s’arrête lorsque l’AprilTag est positionné directement au centre du champ de vision de la caméra. À ce moment-là, l’affichage Télémétrie devrait indiquer une valeur d’angle très proche de zéro degré, ce qui signifie que le robot est correctement aligné avec la balise. Les élèves remarqueront peut-être que la valeur angulaire affichée dans Télémétrie est légèrement inférieure à zéro lorsque le robot s’arrête. Cela s’explique par un léger décalage entre le moment où le robot détecte que l’orientation a atteint zéro et celui où il actionne le frein. Pour améliorer la précision et rapprocher le robot de l’angle cible, les élèves peuvent modifier le code afin que le robot tourne plus lentement. Cela lui donnerait plus de contrôle et réduirait les dépassements.

Invitez les élèves à ajouter des commentaires à leur code pour expliquer les différents blocs de codage qu’ils ont utilisés. Les blocs de commentaires sont bleus et disponibles dans la section « Miscellaneous ». Expliquez que les ingénieurs en informatique travaillent en équipe et qu’ils doivent documenter leur code avec des commentaires pour s’assurer que leurs collègues peuvent comprendre la signification de leur code. Voici un exemple de la deuxième version du code pour le deuxième défi avec des commentaires ajoutés.

Demandez aux élèves de communiquer leurs solutions aux défis en leur posant des questions d’objectivation, par exemple:
Que doit savoir votre robot pour s’aligner avec un AprilTag ?
Comment les mouvements du robot affectent-ils ce qu’il peut voir à travers la caméra ?
Que devient la valeur de l’angle lorsque le robot tourne ? Comment pouvez-vous utiliser cette donnée ?
Pourquoi est-il utile de surveiller les données AprilTag pendant que le robot se déplace plutôt qu’une seule fois au début ?
Comment avez-vous décidé à quel moment le robot devait cesser de tourner ?
Que vous indique une valeur de l’angle proche de zéro sur la position du robot ?
Comment avez-vous utilisé la logique conditionnelle pour que le robot réagisse aux données du capteur ?
Quels défis avez-vous rencontrés lorsque vous avez essayé d’arrêter le robot ?
En quoi le réglage de la vitesse du robot a-t-il affecté sa précision ?
Que vous indique la longueur de la liste AllDetections pendant que le robot tourne ?
Comment avez-vous utilisé l’ID AprilTag pour décider de ce que le robot devait faire ?
Quelles autres propriétés de balise pourriez-vous utiliser pour améliorer les performances du robot ?
Encouragez les élèves à relever le défi en ajoutant les dernières étapes à leur code. Tout d’abord, ils doivent programmer le robot pour qu’il se rapproche du cube violet en utilisant la propriété « range », qui indique la distance en ligne droite entre la caméra du robot et l’AprilTag. Une fois que le robot est suffisamment proche, ils doivent utiliser le mécanisme de la pince (servomoteurs présentés dans la première leçon) pour saisir le cube.
Ensuite, les élèves doivent utiliser le deuxième AprilTag (ID 15) pour guider le robot vers la zone cible et y placer le cube, réussissant ainsi le défi. Pour y parvenir efficacement, les élèves devront surveiller et réagir à certaines propriétés spécifiques de l’AprilTag qui fournissent des données précieuses sur le positionnement et l’orientation:
range: distance en ligne droite entre la caméra et le centre de la balise, généralement mesurée en centimètres. Elle est idéale pour contrôler les mouvements vers l’avant et vers l’arrière.
bearing: angle entre la direction actuelle du robot et la balise. Une valeur positive signifie que la balise se trouve à droite ; une valeur négative signifie qu’elle se trouve à gauche. Elle est utile pour contrôler les mouvements latéraux.
yaw: rotation de la balise elle-même, similaire au fait de tourner la tête vers la gauche ou vers la droite. Cela aide le robot à s’aligner parfaitement devant la balise pour un positionnement précis.
Évaluer
L’évaluation de la leçon doit se faire par le biais d’observations et de conversations avec les élèves pendant qu’ils codent. Pour évaluer l’efficacité de la leçon, il faut observer comment les élèves interagissent avec le simulateur FTC, comment les élèves interagissent avec le simulateur FTC, comment ils appliquent les concepts de reconnaissance Vision Portal et AprilTag, et comment ils utilisent les différentes propriétés.
Engagez les élèves dans un dialogue constructif sur leurs processus de réflexion, leurs défis et leurs stratégies. Cela vous aidera à mieux comprendre leur perception de l’influence de la vision par caméra et de l’IA sur la prise de décision des robots. Ces interactions vous permettront également de leur fournir des commentaires ciblés et d’adapter votre enseignement afin de favoriser l’apprentissage.
Voici une liste de « points de repère » pour guider vos observations et votre évaluation:
Engagement et curiosité: Les élèves expérimentent-ils activement les données AprilTag en direct pendant que le robot se déplace ? Sont-ils curieux de savoir comment les changements de distance, d’angle et d’orientation affectent le comportement du robot ?
Compréhension des données AprilTag en temps réel: Les élèves peuvent-ils expliquer comment des propriétés telles que la portée, l’orientation et le lacet influencent le mouvement et l’alignement du robot ? Comprennent-ils comment ces valeurs changent lorsque le robot se déplace ?
Utilisation de la logique conditionnelle et des fonctions: Les élèves utilisent-ils des structures conditionnelles pour permettre au robot de réagir en temps réel aux données des capteurs ? Appliquent-ils des fonctions pour organiser et réutiliser efficacement le code de mouvement et de contrôle ?
Résolution de problèmes et adaptation: Les élèves ajustent-ils leur code en fonction de ce qu’ils observent dans la télémétrie ? Affinent-ils la vitesse, la direction ou la logique des mouvements afin d’améliorer la précision et la réactivité ?
Utilisation de la télémétrie pour obtenir un retour d’information en direct: Les élèves surveillent-ils l’affichage de la télémétrie pour suivre les propriétés d’AprilTag et utilisent-ils ces données pour guider les décisions du robot ? Interprètent-ils correctement les valeurs pendant le mouvement ?
Précision et contrôle des mouvements: Les élèves démontrent-ils leur maîtrise des mouvements du robot en utilisant des vitesses plus lentes et une logique affinée pour s’aligner sur les balises et relever le défi ?
Documentation et communication du code: Les élèves ajoutent-ils des commentaires clairs et pertinents pour expliquer leur code ? Sont-ils capables d’expliquer comment leur robot utilise les données AprilTag pour prendre des décisions ?
Résilience et itération: Comment les élèves réagissent-ils lorsque le robot dépasse la cible, se désaligne ou ne détecte pas une balise ? Persévèrent-ils dans les tests, le débogage et l’amélioration de leur solution ?
Cette approche garantit que l’évaluation ne porte pas uniquement sur le résultat final, mais aussi sur le processus d’apprentissage, l’expérimentation et l’application réfléchie de nouveaux concepts.
C3.1 résoudre des problèmes et créer des représentations de situations mathématiques de façons computationnelles en écrivant et exécutant des codes, y compris des codes comprenant des instructions conditionnelles et d’autres structures de contrôle.
C3.2 lire et modifier des codes donnés, y compris des codes comprenant des instructions conditionnelles et d’autres structures de contrôle, et décrire l’incidence de ces changements sur les résultats.
C3.1 résoudre des problèmes et créer des représentations de situations mathématiques de façons computationnelles en écrivant et exécutant des codes efficaces, y compris des codes comprenant des instructions conditionnelles et d’autres structures de contrôle.
C3.2 lire et modifier des codes donnés, y compris des codes comprenant des instructions conditionnelles et d’autres structures de contrôle, et décrire l’incidence de ces changements sur les résultats et l’efficacité.
C3.1 résoudre des problèmes et créer des représentations de situations mathématiques de façons computationnelles en écrivant et exécutant des codes efficaces, y compris des codes comprenant des événements influencés par un dénombrement prédéfini et/ou un sous-programme et d’autres structures de contrôle.
C3.2 lire et modifier des codes donnés, y compris des codes comprenant des événements influencés par un dénombrement prédéfini et/ou un sous-programme et d’autres structures de contrôle, et décrire l’incidence de ces changements sur les résultats et l’efficacité.
C3.1 résoudre des problèmes et créer des représentations de situations mathématiques de façons computationnelles en écrivant et exécutant des codes, y compris des codes comprenant l’analyse de données afin de prendre des décisions éclairées et de les communiquer.
C3.2 lire et modifier des codes donnés comprenant l’analyse de données afin de prendre des décisions éclairées et de les communiquer, et décrire l’incidence de ces changements sur les résultats et l’efficacité.
C2.1 utiliser le codage pour démontrer sa compréhension des concepts algébriques, y compris les variables, les paramètres, les équations et les inéquations.
C2.2 créer du code pour décomposer des situations en étapes computationnelles pour représenter des concepts et des relations mathématiques, et pour résoudre des problèmes.
C2.3 lire du code pour prédire son résultat, et modifier le code pour ajuster des contraintes, des paramètres et des résultats pour une situation similaire ou pour une nouvelle situation.
C2.1 utiliser des variables, des constantes, des expressions et des instructions d’affectation pour stocker et manipuler des chiffres et des lettres dans un programme.
C2.2 développer des programmes qui utilisent et génèrent des données de divers formats et provenant de diverses sources.
C2.3 développer des programmes comportant des instructions conditionnelles simples et imbriquées.
C2.4 développer des programmes comportant des événements séquentiels, sélectionnés et répétitifs de manière efficace.
C2.5 développer des programmes comprenant l’utilisation d’opérateurs booléens, d’opérateurs de comparaison, d’opérateurs de texte et d’opérateurs arithmétiques.
C2.6 interpréter des erreurs de programmation, et mettre en œuvre des stratégies pour les corriger.
C2.7 écrire des documents internes clairs et utiliser des normes de codage pour améliorer la lisibilité d’un code.