Loading…
Loading…
Embarquez dans une aventure de résolution d'énigmes dans le simulateur FTC, où le codage rencontre la réflexion stratégique et les fonctions personnalisées.

Niveau: Avancé
Embarquez dans une aventure de résolution de défis dans FTC Sim, où le codage rencontre la réflexion stratégique et les fonctions personnalisées. Cette leçon initie les élèves au défi de naviguer avec précision à travers les obstacles et d’utiliser des fonctions pour rationaliser leur code afin d’en améliorer l’efficacité et l’adaptabilité. Grâce à des exercices pratiques, ils apprendront à mettre en œuvre ces fonctions pour résoudre des défis, en améliorant leurs compétences en matière de résolution de problèmes et en approfondissant leur compréhension des concepts de programmation avancés. Cette approche favorise la créativité et dote les élèves des outils nécessaires à une programmation en robotique sophistiquée, alliant le raisonnement logique à l’application pratique des principes de la robotique.
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:
Comprendre le concept d’utilisation de fonctions personnalisées en programmation pour simplifier les tâches complexes et améliorer la réutilisation du code.
Appliquer ces fonctions dans FTC Sim pour naviguer et résoudre des défis, en faisant preuve de réflexion stratégique et de précision.
Développer des stratégies avancées de résolution de problèmes en utilisant des fonctions pour surmonter efficacement les obstacles et les défis dans des environnements robotiques virtuels.
papillons adhésifs amovibles ou une application collaborative de remue-méninges comme Microsoft Whiteboard, Google Jamboard 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 captiver l’attention de vos élèves et éveiller leur curiosité au sujet des robots qui surmontent les obstacles, utilisez votre projecteur ou votre tableau blanc interactif pour partager une vidéo captivante mettant en scène un robot inspiré de l’ancien serpent Ouroboros qui se nourrit lui-même et qui peut surmonter n’importe quel obstacle, que vous pouvez trouver sur ce lien : https://youtu.be/TNSo14slkbs?si=5iu256VwTdKQVVgV. Grâce à ses capteurs avancés et à sa mobilité agile, ce robot traverse sans effort des terrains variés, détectant et manœuvrant de manière autonome les obstacles rencontrés sur son chemin.
Après la présentation de la vidéo, distribuez des papillons adhésifs amovibles à vos élèves et encouragez-les à participer à une séance de remue-méninges sur les différents obstacles que les robots peuvent avoir à surmonter et sur les façons dont ils peuvent les surmonter. Leurs idées peuvent inclure des obstacles physiques dans différents contextes et des capteurs conçus pour les détecter. 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 paillons 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:
Obstacles:
Terrain accidenté: Dans les environnements extérieurs tels que les forêts ou les paysages rocheux.
Marches ou escaliers: On les trouve couramment dans les bâtiments, les maisons ou les environnements urbains.
Passages étroits: On les rencontre dans les espaces restreints tels que les couloirs, les halls ou entre les meubles.
Portes: Dans les environnements intérieurs, les robots peuvent être amenés à ouvrir des portes fermées ou à les franchir.
Obstacles de différentes hauteurs: Rampes, bordures ou plates-formes, par exemple, que l’on trouve souvent dans les paysages urbains ou sur les chantiers de construction.
Environnements encombrés: Incluant des objets tels que des débris, des meubles ou des objets mal placés, fréquents dans les maisons ou les espaces de travail encombrés.
Eau ou flaques d’eau: Présentes dans les espaces extérieurs, les parcs ou les environnements humides.
Branches basses ou obstacles aériens: Dans les espaces extérieurs tels que les parcs, les forêts ou même les espaces intérieurs avec des plafonds bas.
Obstacles en mouvement: Tels que des personnes, des animaux ou des véhicules, rencontrés dans des environnements dynamiques tels que les rues ou les zones bondées.
Portails ou clôtures: On les trouve généralement dans les zones résidentielles, les fermes ou les sites industriels.
Les moyens de surmonter les obstacles:
Roues ou chenilles spécialisées pour traverser les terrains accidentés.
Utilisation de bras extensibles ou de mécanismes de levage pour franchir des marches ou des escaliers.
Capteurs pour détecter et contourner les passages étroits ou les obstacles.
Bras robotiques équipés de pinces pour ouvrir les portes ou manipuler les objets obstruant le chemin.
Systèmes de suspension réglables pour franchir des obstacles de différentes hauteurs.
Caméras et algorithmes de vision par ordinateur pour détecter et éviter les environnements encombrés.
Des joints ou des revêtements imperméables pour protéger contre les dommages causés par l’eau
Capteurs Lidar pour détecter et éviter les obstacles en hauteur.
Animez une discussion en posant des questions qui incitent à la réflexion:
Que font les robots s’ils ne peuvent pas franchir un obstacle ? (p. ex., si un robot ne parvient pas à franchir un obstacle, il peut revenir en arrière et essayer une autre solution ou demander l’aide d’un autre robot ou d’un être humain. C’est comme lorsque vous faites un défi et que vous ne parvenez pas à trouver l’emplacement d’une pièce, vous pouvez essayer une autre pièce ou demander un indice à quelqu’un).
Pourquoi est-il utile que les robots se souviennent des obstacles qu’ils ont rencontrés ? (p. ex., le fait de se souvenir des obstacles permet aux robots d’être plus intelligents et de savoir où ils vont. C’est comme lorsque vous vous souvenez qu’il y a un trou dans le sol sur le chemin de l’école et que vous le contournez le lendemain. Les robots peuvent également tirer des enseignements de leurs expériences).
Comment les robots peuvent-ils utiliser des outils pour surmonter les obstacles ? (p. ex., les robots peuvent avoir des outils spéciaux, comme une pelle ou un crochet, pour écarter les objets de leur chemin ou pour s’accrocher à quelque chose afin de se hisser. C’est un peu comme utiliser une pelle pour creuser un trou ou une échelle pour escalader une clôture).
Pourquoi les robots ont-ils besoin de capteurs pour se déplacer ? (p. ex., Les capteurs permettent aux robots de voir où ils vont et d’éviter de se cogner, un peu comme nous utilisons nos yeux pour regarder autour de nous et éviter de nous cogner contre les murs).
Comment les robots peuvent-ils travailler ensemble pour franchir un obstacle ? (p. ex., Les robots peuvent se parler à l’aide de signaux, de sorte qu’un robot peut informer un autre robot de la présence d’un obstacle, puis ils peuvent trouver ensemble un moyen de le contourner, comme si toi et ton ami tombiez sur une grande flaque d’eau et deviez trouver un moyen de l’enjamber ou de la contourner).
Expliquez que les robots et les véhicules autonomes doivent souvent surmonter des obstacles lorsqu’ils naviguent sur des terrains compliqués. Mentionnez que la prochaine leçon portera sur le codage de robots dans FTC Sim, en utilisant diverses méthodes pour franchir les obstacles et atteindre avec succès leurs destinations finales.
Veuillez encourager les élèves à commencer leur expérience d’apprentissage pratique avec la plate-forme FTC Sim en naviguant vers le lien fourni, https://ftcsim.org/. Demandez-leur d’ouvrir une session à l’aide de leur nom d’utilisateur et de leur mot de passe. Une fois connectés, dirigez-les vers la section « Cours » et guidez-les pour qu’ils choisissent le cours intitulé « FTC Puzzles ». Expliquez aux élèves que ce cours leur permettra d’acquérir les compétences nécessaires pour coder et contrôler efficacement des robots autonomes, en se concentrant sur le franchissement d’obstacles.


Dans la section « FTC Puzzles », guidez les élèves pour qu’ils accèdent au défi intitulé « 1- Road Block »


Invitez les élèves à commencer le code du défi des barrages routiers. Expliquez que le robot doit faire tomber le bloc dans la fosse pour activer le pont. Ajoutez que le robot doit pousser le bloc et attendre que le pont se ferme avant d’avancer.
Pour accéder au panneau de codage, cliquez sur l’icône verte de l’ordinateur sur le côté gauche de l’écran. Vous remarquerez qu’un exemple de code est déjà présent. Il est essentiel d’informer vos élèves que ce code est divisé en trois sections principales, chacune étant marquée par des blocs de commentaires bleus:
Blocs d’initialisation: Cette section contient les renseignements dont le robot a besoin avant de commencer ses tâches.
Blocs d’exécution: La plupart du code que vous écrivez sera placé dans cette section, où les principales actions du robot sont définies.
Blocs en boucle: Ces blocs sont utilisés pour les tâches qui doivent être répétées plusieurs fois. Cependant, pour cette leçon, nous ne travaillerons qu’avec les blocs d’initialisation et d’exécution. La section boucle peut être supprimée pour conserver une structure de code plus propre.


Expliquez que dans la première partie du puzzle, le robot doit se déplacer sur la distance exacte pour pousser le bloc dans la fosse sans y tomber. Les encodeurs seront utilisés pour garantir un mouvement précis. Une distance de 4500 ticks devrait suffire.


Le pont devrait se fermer automatiquement, éliminant ainsi l’obstacle.

Il n’est pas temps d’avancer vers le dernier carré pour hisser le drapeau.


Encouragez les élèves à modifier la pause entre les deux mouvements pour que le pont ait le temps de se fermer complètement avant que le robot ne roule dessus.
Encouragez vos élèves à passer au défi suivant dans la section « Puzzles : 2— Bridge »

Expliquez-leur que dans ce défi, ils devront déplacer le robot pour atteindre le premier bloc jaune et le pousser dans la première fosse. Ensuite, le robot doit manœuvrer pour attraper le deuxième bloc et le déposer dans la deuxième fosse. Enfin, le robot doit rouler jusqu’au dernier pavé pour hisser le drapeau.

Demandez aux élèves de réfléchir au pseudocode permettant d’amener le robot dans cette position. Expliquez que le pseudocode est une méthode de programmation simplifiée et informelle qui décrit un algorithme sans utiliser la syntaxe d’un langage de codage spécifique.
Se déplacer en ligne droite
Tourner à gauche de 90°
Se déplacer en ligne droite
Tourner à gauche de 90°
Se déplacer en ligne droite en poussant le premier bloc dans la première fosse
Reculer en ligne droite
Tourner à droite de 90°
Se déplacer en ligne droite
Tourner à gauche de 90°
Se déplacer en ligne droite en poussant le deuxième bloc
Tourner à gauche de 90°
Se déplacer en ligne droite tout en poussant le deuxième bloc
Tourner à droite de 90°
Se déplacer en ligne droite tout en poussant le deuxième bloc dans la deuxième fosse
Se déplacer en ligne droite jusqu’au pavé
Demandez aux élèves de reconnaître les schémas. Ils devraient se rendre compte que tourner à gauche de 90° degrés et tourner à droite de 90° sont utilisés plus d’une fois. Au lieu de résoudre le défi immédiatement, les élèves devraient créer des fonctions pour ces virages.



Maintenant que le robot possède des fonctions pour tourner à gauche et à droite de 90 degrés, les élèves doivent travailler à deux fonctions pour se déplacer vers l’avant et vers l’arrière. Comme le robot ne se déplacera pas toujours sur la même distance, les élèves doivent apprendre à créer une fonction qui inclut une entrée. L’ajout d’une entrée est possible en cliquant sur l’icône de l’engrenage. Dans ce cas, l’entrée ajoutée sera « ticks”.

Lors de l’utilisation de cette fonction dans le code principal, une valeur peut être ajoutée en tant qu’entrée:

Le code pour avancer peut maintenant être ajouté à la fonction. Les élèves doivent utiliser la variable « ticks » du menu « Variables » pour définir la position. La pause variera en fonction de la vitesse et de la distance. Dans cet exemple, le robot se déplace à une vitesse de 10 %, et on estime que la pause devrait être d’environ 1,5 fois le nombre de ticks. Les élèves devront ajuster cette valeur s’ils utilisent une vitesse différente.

Un code similaire peut être créé pour les déplacements à reculons.

Les fonctions « move forward » et « move backward » ayant été créées, le code suivant devrait permettre au robot d’avancer puis de revenir à sa position initiale.

Les élèves devraient maintenant disposer de toutes les fonctions dont ils ont besoin pour compléter le défi. Leur code principal doit être une simple séquence d’appels à ces fonctions. Cet exemple de code est un bon point de départ. Il doit faire glisser le premier bloc dans la fosse, puis amener le robot en position pour saisir le second bloc. Les élèves doivent voir à quel point il est facile de coder lorsque toutes les fonctions sont créées. Le code doit correspondre au pseudocode de l’élève.


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 suivre la signification de leur code. Voici un exemple des fonctions créées dans le code du deuxième défi (Défi 2— Bridge) avec des commentaires ajoutés.

Amenez les élèves à communiquer les solutions qu’ils ont trouvées aux deux premiers défis en leur posant des questions d’objectivation, par exemple:
Comment avez-vous utilisé les fonctions « move forward » et « move backward » pour faire naviguer le robot à travers le défi ? (p. ex., Nous avons utilisé les fonctions en les appelant dans le code principal et en fournissant les données d’entrée appropriées, à savoir la distance en ticks que nous voulions que le robot parcoure).
Pouvez-vous expliquer pourquoi vous utilisez des fonctions dans votre code ? Comment vous ont-elles aidé à résoudre le défi ? (p. ex., les fonctions nous ont aidés à organiser notre code et à éviter les répétitions. En créant des fonctions pour des actions courantes telles que tourner et se déplacer, nous pouvons appeler ces fonctions chaque fois que nécessaire, ce qui rend notre code principal plus propre et plus facile à comprendre).
Décrivez comment vous avez ajusté le temps de pause dans votre code. Pourquoi est-il important d’ajuster le temps de pause lors de l’utilisation d’encodeurs ? (p. ex., Nous avons ajusté le temps de pause en fonction de la vitesse et de la distance que le robot devait parcourir. Il est important d’ajuster le temps de pause pour s’assurer que le robot a suffisamment de temps pour terminer son mouvement, en particulier lorsque l’on utilise des encodeurs pour obtenir un contrôle précis de la distance).
Comment vous êtes-vous assuré que le robot a poussé le bloc dans la fosse sans tomber lui-même ? (p. ex., Nous avons soigneusement calculé la distance que le robot devait parcourir à l’aide d’encodeurs pour s’assurer qu’il atteignait le bloc sans tomber dans la fosse. Nous avons également ajusté la vitesse et le temps de pause pour contrôler le mouvement).
Expliquez le processus de création et d’utilisation de fonctions avec des entrées dans votre code. En quoi cela vous a-t-il aidé dans la résolution du défi ? (p. ex., Nous avons créé des fonctions avec des entrées en ajoutant une variable (ticks) pour représenter la distance que le robot doit parcourir. Cela nous a permis de réutiliser la même fonction pour différentes distances, rendant notre code plus flexible et adaptable aux différentes situations du défi).
Encouragez les élèves à mettre en pratique les compétences qu’ils viennent d’acquérir pour résoudre les défis n° 3 et n° 4 de FTC Puzzles. Dans ces défis, ils doivent créer des fonctions pour trouver une solution afin de résoudre rapidement chaque défi. Le défi n° 3 est très similaire au défi n° 2, mais il y a 3 blocs jaunes au lieu de 2 à déplacer dans les fosses pour atteindre le dernier bloc et hisser le drapeau. Le défi n° 4 combine les compétences acquises dans la deuxième leçon (Percevoir le chemin : L’utilisation de capteurs pour guider les décisions des robots) avec les compétences acquises dans cette leçon. Les élèves doivent utiliser le capteur de couleur pour décider du côté à utiliser pour accéder au drapeau.

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. L’évaluation de l’efficacité de la leçon doit comprendre l’observation des élèves pendant qu’ils codent et l’engagement d’un dialogue constructif avec eux sur leur processus de réflexion, leurs défis et leurs stratégies. Cette approche permet de mieux comprendre leur compréhension et leur application des concepts enseignés, y compris la manière dont ils résolvent les problèmes et affinent leur code pour obtenir les mouvements et la navigation souhaités avec le robot virtuel. Grâce à ces interactions, les éducateurs peuvent évaluer la compréhension des concepts par chaque élève, fournir une rétroaction ciblée et ajuster l’enseignement en fonction des besoins pour favoriser les résultats d’apprentissage
Voici une liste de « points de repère » pour guider vos observations et votre évaluation:
Engagement et participation: Observez si les élèves s’engagent activement dans la tâche, s’ils expérimentent le code, s’ils participent aux discussions ou s’ils posent des questions.
Compétences en matière de résolution de problèmes: Notez la capacité des élèves à identifier les problèmes dans leur code, à déboguer les erreurs et à appliquer un raisonnement logique pour surmonter les difficultés.
Application des instructions: Vérifiez si les élèves appliquent correctement les instructions et les lignes directrices fournies pour la leçon, par exemple en utilisant les bons blocs ou la bonne syntaxe de code pour le mouvement et la navigation.
Créativité et innovation: Recherchez des approches créatives ou des solutions innovantes que les élèves pourraient appliquer dans leurs stratégies de codage, au-delà des exigences de base de la leçon.
Compréhension des commandes du moteur: Observez la compréhension par les élèves de la manière dont les commandes du moteur affectent le mouvement du robot, y compris la vitesse, la direction et l’exécution de virages ou de manœuvres spécifiques.
Utilisation des encodeurs rotatifs: Évaluer la maîtrise des élèves dans l’utilisation des encodeurs rotatifs pour obtenir un contrôle précis des mouvements, y compris la définition des positions cibles, l’ajustement de la vitesse et la réinitialisation des encodeurs pour les mouvements suivants.
Utilisation des fonctions: Évaluer la capacité des élèves à mettre en œuvre efficacement des fonctions pour segmenter le code, promouvoir la réutilisation du code et améliorer la lisibilité du code, en démontrant une compréhension des principes de la programmation modulaire.
Gestion des entrées: Surveillez la manière dont les élèves gèrent les entrées dans leur code, en veillant à ce qu’ils utilisent correctement les variables ou les paramètres pour adapter leur code à différents scénarios et configurations.
Réaction à l’échec: Soyez attentif à la façon dont les élèves réagissent à l’échec ou à des résultats inattendus, en recherchant la résilience, la persistance et la volonté d’expérimenter et d’apprendre à partir des erreurs.