Loading…
Loading…
Cette leçon présente l’interface de vision par ordinateur et est destinée aux débutants dans ce domaine spécifique.

Niveau : Débutant
(Remarque : cette leçon présente l’interface de vision par ordinateur et est destinée aux débutants dans ce domaine spécifique. Elle suppose toutefois 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 découvriront comment les robots utilisent des caméras et l’IA pour comprendre leur environnement grâce à l’interface de vision par ordinateur. Ils apprendront à reconnaître des marqueurs spéciaux appelés AprilTags, qui fournissent des renseignements clés au robot. Grâce à l’apprentissage automatique, le robot a été formé pour identifier ces balises et réagir de manière intelligente. Les élèves programmeront leur robot pour qu’il prenne des décisions en fonction de ce qu’il voit, donnant ainsi vie à la vision artificielle et au comportement autonome de manière ludique et pratique.
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:
apprendre à contrôler un robot équipé de quatre roues omnidirectionnelles pour une mobilité accrue ;
utiliser l’IA et l’apprentissage automatique pour détecter et réagir aux AprilTags ;
mettre en œuvre une logique conditionnelle pour guider le comportement du robot en fonction des données visuelles.
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 capter l’attention de vos élèves et éveiller leur curiosité sur la manière dont les robots utilisent les caméras et l’IA pour prendre des décisions, commencez votre cours en diffusant une vidéo captivante sur votre projecteur ou votre tableau blanc interactif. Nous vous recommandons notamment la vidéo « Tesla Vision : How Tesla Cars See the World » (Tesla Vision : comment les voitures Tesla voient le monde), disponible à l’adresse suivante : https://youtu.be/DQpeteeEuHM. Cette vidéo offre un aperçu fascinant de la manière dont les véhicules Tesla utilisent la vision par caméra et l’IA pour naviguer sur les routes et reconnaître des objets. Elle fournit un exemple concret de technologie autonome qui prépare le terrain pour l’apprentissage de la vision robotique, de la prise de décision et de la programmation conditionnelle.
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 les applications futures potentielles des robots qui utilisent la vision par caméra et l’IA pour reconnaître des objets et prendre des décisions. Demandez-leur de noter une seule idée par papillon adhésif amovible. 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:
Des robots qui livrent des colis en reconnaissant les numéros de maison et les obstacles.
Des robots agricoles autonomes qui détectent la santé des cultures à l’aide d’une caméra.
Des robots alimentés par l’IA qui aident les personnes malvoyantes en identifiant les objets.
Des robots scolaires autonomes qui reconnaissent les badges d’étudiants pour les récupérer en toute sécurité.
Des robots d’entrepôt qui utilisent AprilTags pour trier et gérer les stocks.
Des robots autonomes qui guident les visiteurs dans les musées ou les centres scientifiques.
Des robots de secours en cas de catastrophe qui localisent les survivants à l’aide de marqueurs visuels.
Des robots vendeurs mobiles qui se frayent un chemin dans la foule et réagissent aux signaux visuels.
Des robots nettoyeurs de rues qui détectent et évitent les piétons.
Des robots qui surveillent la faune à l’aide d’une caméra et de l’IA.
Des robots de recyclage autonomes qui trient les matériaux à l’aide de la reconnaissance visuelle.
Des drones de livraison qui atterrissent avec précision à l’aide de marqueurs AprilTag.
Des robots qui aident à l’exploration spatiale en identifiant les caractéristiques du terrain.
Animez une discussion en posant des questions qui incitent à la réflexion:
Quels avantages voyez-vous dans les robots qui utilisent des caméras et l’IA pour reconnaître des objets et prendre des décisions ? (p. ex., ils peuvent effectuer des tâches avec plus de précision, s’adapter à des environnements changeants et réduire le besoin d’une surveillance humaine constante.)
Quels inconvénients potentiels associez-vous aux robots IA équipés de caméras ? (p. ex., ils peuvent mal identifier des objets, rencontrer des difficultés dans des conditions d’éclairage médiocres ou soulever des questions relatives à la confidentialité des données et à la surveillance.)
Quel pourrait être l’impact de l’utilisation de l’interface de vision par ordinateur et de la reconnaissance d’objets sur des secteurs tels que l’industrie manufacturière, la santé ou l’éducation ? (p. ex., les robots pourraient aider à trier des articles, à identifier des patients ou des fournitures, ou même à guider des étudiants dans des environnements d’apprentissage.)
Pouvez-vous envisager des problèmes éthiques ou de sécurité liés aux robots qui prennent des décisions sur la base d’informations visuelles ? (p. ex., si un robot interprète mal un indice visuel, il pourrait prendre une mauvaise décision, et il existe également un risque de biais dans les données d’entraînement de l’IA.)
Dans quels domaines ou applications pensez-vous que les robots dotés d’une vision pourraient être les plus utiles ? (p. ex., les missions de recherche et de sauvetage, la livraison autonome, l’aide aux personnes handicapées ou la surveillance des environnements.)
Quelles implications sociales et économiques potentielles pourraient découler de l’intégration de robots dotés d’une vision basée sur l’IA dans nos communautés ? (p. ex., certains emplois pourraient être remplacés, mais de nouvelles opportunités pourraient voir le jour dans les domaines de la robotique, du développement de l’IA et de l’entretien).
Pouvez-vous imaginer des utilisations innovantes ou inattendues des robots qui utilisent l’interface de vision par ordinateur et l’IA, au-delà de celles dont nous avons discuté ? (p. ex., des robots qui aident à suivre les espèces menacées, participent à des fouilles archéologiques ou assistent les astronautes dans leurs missions spatiales.)
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/navbwgswudo/

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

Lancez la discussion avec les élèves en leur demandant : « Où voyez-vous la caméra sur le robot ? » (p. ex., la caméra du robot est montée au sommet d’un mât vertical qui s’étend depuis la base du robot. Elle est fixée à un petit support et est orientée vers l’avant, ce qui lui permet de filmer l’environnement du robot depuis une position surélevée.)
Poursuivez la discussion en demandant : « Quelles différences remarquez-vous entre les roues de ce robot et celles que nous avons utilisées dans les leçons précédentes ? » (p. ex., dans les leçons précédentes, le robot avait des roues lisses et solides. Seules les roues arrière étaient reliées à des moteurs pour faire bouger le robot, alors que les roues avant étaient conçues pour glisser et soutenir le robot. Dans la leçon actuelle, les roues du robot ont un aspect différent. Elles sont dotées de petits rouleaux ou segments sur les bords, et les quatre roues semblent identiques. Ces nouvelles roues semblent plus complexes et pourraient permettre au robot de se déplacer de différentes manières.)
Expliquez que ces nouvelles roues sont appelées « roues omnidirectionnelles » et que chacune d’entre elles est reliée à son propre moteur. Ces roues spéciales sont équipées de petits rouleaux sur leurs bords, qui permettent au robot de se déplacer non seulement vers l’avant et vers l’arrière, mais aussi latéralement et en diagonale. Cela confère au robot beaucoup plus de flexibilité et de contrôle dans ses mouvements. Montrez les quatre moteurs du robot. Utilisez cette vidéo pour montrer à quel point il serait plus facile pour une voiture de se garer si elle était équipée de roues omnidirectionnelles. (https://www.youtube.com/watch?v=J-TOV-NBD70&t=15s)

Dans les leçons précédentes, nous avons utilisé des blocs de codage à double moteur pour contrôler les mouvements du robot, car celui-ci ne disposait que de deux moteurs. Maintenant que nous travaillons avec des roues omnidirectionnelles, le robot a besoin de quatre moteurs pour se déplacer efficacement : avant gauche, avant droit, arrière gauche et arrière droit. Cela signifie que le code devra être mis à jour pour inclure les quatre moteurs.

Assurez-vous que les élèves remarquent que les moteurs situés à gauche nécessitent des valeurs négatives dans le code. En effet, ils sont installés à l’envers, ce qui les fait tourner dans le sens inverse par défaut. Au lieu d’avoir à saisir manuellement des valeurs négatives à chaque fois, ils peuvent simplifier le processus en ajoutant deux blocs dans la section d’initialisation qui ajustent automatiquement le sens de rotation du moteur. De cette façon, les moteurs se comporteront de manière cohérente et votre code de mouvement sera plus facile à écrire et à comprendre.

Demandez aux élèves d’essayer ce code. Il devrait permettre au robot d’avancer en ligne droite (et il heurtera la grande tour qui se trouve devant lui !). Ensuite, demandez-leur de s’entraîner à faire bouger le robot de différentes manières : pivoter à droite, pivoter à gauche, avancer, reculer, glisser vers la gauche et glisser vers la droite. Ils devraient arriver à la conclusion suivante:

Maintenant que les élèves savent comment manœuvrer le robot, il est temps pour eux de commencer à explorer AprilTag. À ce stade, l’enseignant doit zoomer sur la grande tour située juste en face du robot dans la surface de jeu FTC Sim, où trois AprilTags sont installés.
Ensuite, montrez aux élèves l’un des AprilTags et demandez-leur : « À quoi vous font penser ces AprilTags ? » (p. ex., ils ressemblent à des codes QR.) Expliquez que les AprilTags sont des marqueurs visuels que le robot peut détecter à l’aide de sa caméra. Chaque AprilTag possède un identifiant unique qui permet au robot de reconnaître et de distinguer les différents AprilTags présents dans son environnement. Les AprilTags sont souvent utilisés en robotique pour la navigation, la reconnaissance d’objets et le déclenchement d’actions spécifiques.
Attirez l’attention des élèves sur le fait que chacune des trois balises AprilTags placées sur la tour possède un identifiant unique : 21, 22 et 23. Expliquez que chaque fois que le programme s’exécute, une seule de ces balises s’affiche à l’avant de la tour, directement devant le robot. Cela signifie que le robot devra détecter quelle balise est actuellement visible et réagir en conséquence. Cela introduit le concept de logique conditionnelle basée sur l’identifiant de la balise, qui est essentiel pour la prise de décision autonome.

Pour activer le Vision Portal et la reconnaissance AprilTag, vous devez ajouter les blocs suivants à 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.
Voici un résumé:

Les élèves doivent maintenant tester le code en appuyant sur « Run ». Au début, il peut sembler que rien ne se passe, car le code ne fait que configurer le robot et ne comprend aucune commande de mouvement. 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. Ils devraient pouvoir voir le cube jaune et l’AprilTag directement devant le robot. Encouragez-les à exécuter et à réinitialiser la simulation plusieurs fois. Ils remarqueront que l’AprilTag sur la tour change à chaque fois, passant de l’ID 21 à l’ID 22 à l’ID 23. Cela montre comment la simulation sélectionne aléatoirement l’une des trois balises à chaque exécution.

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.

Les élèves peuvent désormais ajouter une structure conditionnelle pour vérifier combien d’AprilTags le robot peut voir en regardant la longueur de la variable AllDetections. Si la longueur est supérieure à zéro, cela signifie qu’au moins un AprilTag a été détecté. Les élèves doivent ensuite utiliser l’affichage Télémétrie pour afficher un message confirmant qu’un AprilTag a été détecté, comme dans l’exemple ci-dessous. Les élèves devront peut-être cliquer sur « Show Telemetry » pour voir les données affichées par le robot.

Défi : Encouragez les élèves à ajouter du code qui fait tourner le robot avant de vérifier l’ID AprilTag. Cela les aide à observer comment le mouvement affecte ce que le robot peut voir. Si le robot se retourne et s’éloigne de la tour, il se peut qu’il ne détecte aucune balise, car celles-ci ne sont plus dans son champ de vision. Dans ce cas, la liste AllDetections sera vide et l’affichage Telemetry n’indiquera aucune balise détectée. C’est une excellente occasion pour les élèves de comprendre comment l’orientation de la caméra et le positionnement du robot affectent la détection des balises.
L’étape suivante consiste pour les élèves à indiquer quel identifiant AprilTag le robot détecte. Pour ce faire, ils doivent créer une nouvelle variable appelée firstDetection. Étant donné que le robot ne peut voir qu’une seule balise à la fois, cette variable stockera le premier élément de la liste AllDetections. Les élèves utiliseront ensuite la Telemétrie pour afficher l’ID de la balise détectée. Pour ce faire, ils utiliseront AprilTagDetection.id à partir de la variable firstDetection. Enfin, ils devront placer cette partie du code dans une boucle (repeat while...) afin que le robot continue à rechercher des balises et à mettre à jour l’affichage pendant qu’il fonctionne. Voici à quoi devrait ressembler le code à ce stade.

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:
En quoi les roues omnidirectionnelles diffèrent-elles des roues classiques ? Comment cela affecte-t-il les mouvements du robot ?
Que se passe-t-il lorsque les quatre moteurs sont réglés sur la puissance 1 ? Et sur -1 ?
Qu’est-ce que le portail Vision et pourquoi est-il important pour cette leçon ?
Que fait AprilTagProcessor dans votre code ?
Pourquoi devons-nous configurer la caméra avant de démarrer le robot ?
Que sont les AprilTags et comment sont-ils utilisés en robotique ?
Que stocke la variable (liste) AllDetections ?
Comment savoir si le robot a détecté un AprilTag à l’aide de la télémétrie ?
Que se passe-t-il si le robot se retourne et s’éloigne de la tour ? Qu’est-ce que cela vous apprend sur le fonctionnement de la caméra ?
Pourquoi vérifions-nous la longueur de la liste AllDetections avant d’essayer de lire l’ID du tag ?
Comment pourriez-vous utiliser la logique conditionnelle pour que le robot se comporte différemment selon la balise qu’il voit ?
Encouragez les élèves à écrire un code qui comprend trois branches conditionnelles : une lorsque l’ID AprilTag détecté est 21, une lorsque l’ID détecté est 22 et une lorsque l’ID détecté est 23.
Dans ce défi, les élèves utiliseront le bras et la pince du robot pour ramasser le cube jaune. En fonction de l’ID détecté :
· Si l’ID est 21, le robot doit placer le cube sur le pavé de gauche.
· Si l’ID est 22, il doit le placer sur le pavé de droite.
· Si l’ID est 23, il doit déplacer le cube sur le pavé situé derrière le robot.
Rappelez aux élèves que, pour contrôler le bras et la pince, ils doivent utiliser les moteurs actionneurs. Dans la liste déroulante, ils trouveront deux noms de moteurs : armTilt et claw.
· Pour incliner le bras vers l’arrière, utilisez une valeur de -1.
· Pour incliner le bras vers l’avant, utilisez une valeur de 1.
· Pour ouvrir la pince, utilisez une valeur de 1.
· Pour fermer la pince, utilisez une valeur de -1.

Vous trouverez ci-dessous une version de base du code pour aider les élèves à commencer à créer leur propre solution. Le code n’est pas complet, les élèves devront donc remplir les actions pour chaque partie de la condition en fonction de l’ID AprilTag détecté.

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 ils appliquent les concepts de reconnaissance Vision Portal et AprilTag, et comment ils utilisent la logique conditionnelle pour guider le comportement du robot.
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 explorent-ils activement la vue de la caméra du robot, expérimentent-ils les mouvements et manifestent-ils de l’intérêt pour la manière dont les AprilTags influencent le comportement du robot ?
Compréhension de la configuration du Vision Portal: Les élèves sont-ils capables d’expliquer l’objectif du portail Vision et la manière dont il connecte la caméra à l’AprilTagProcessor ?
Détection et logique AprilTag: Les élèves sont-ils capables de détecter les AprilTags, de les stocker dans des variables et d’utiliser une logique conditionnelle pour répondre à différents identifiants de balises ?
Résolution de problèmes et débogage: Les élèves identifient-ils les problèmes dans leur code, résolvent-ils les problèmes de détection et ajustent-ils les mouvements du robot ou les angles de la caméra pour améliorer les résultats ?
Utilisation de la télémétrie: Les élèves utilisent-ils efficacement l’affichage de la télémétrie pour surveiller la détection des balises et les réponses du robot ?
Contrôle des moteurs et des actionneurs: Les élèves sont-ils capables d’utiliser correctement les moteurs armTilt et claw pour manipuler le cube jaune en fonction de l’ID de la balise ?
Réaction face à l’échec et itération: Comment les élèves réagissent-ils lorsque le robot ne détecte pas une balise ou se comporte de manière inattendue ? Sont-ils persévérants, réfléchis et prêts à réviser leur code ?
Documentation du code: Les élèves utilisent-ils des blocs de commentaires pour expliquer leur code et le rendre plus facile à comprendre pour les autres ?
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.
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.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.