Créer une voiture sans conducteur
Concevez un véhicule autonome capable de suivre des commandes de conduite.
Plan de leçon
Préparer
- Lisez cette documentation destinée aux enseignants.
- Si nécessaire, prévoyez un cours préalable à l’aide du matériel de mise en route disponible dans le logiciel EV3 Lab ou l’application de programmation EV3. Cela permettra à vos élèves de se familiariser avec l’ensemble LEGO® MINDSTORMS® Education EV3.
Éveiller (30 min)
- Utilisez les idées évoquées dans la section Lancer une discussion ci-dessous pour engager une discussion en lien avec ce projet.
- Présentez le projet.
- Répartissez les élèves en binômes.
- Donnez à vos élèves le temps de rechercher des idées.
Explorer (30 min)
- Demandez à vos élèves de créer plusieurs prototypes.
- Encouragez-les à construire et à programmer.
- Demandez à chaque binôme de construire et de tester deux solutions.
Expliquer (60 min)
- Demandez à vos élèves de tester leurs solutions et de choisir la meilleure.
- Vérifiez qu’ils sont en mesure de créer leurs propres bancs de test.
- Accordez un peu de temps à chaque équipe pour finaliser leur projet et collecter des ressources pour documenter leur travail.
Développer (60 min)
- Laissez le temps à vos élèves de créer leur rapport final.
- Animez une session de partage au cours de laquelle chaque équipe présentera ses résultats.
Évaluer
- Commentez les performances de chaque élève.
- N’hésitez pas à utiliser les rubriques d’évaluation fournies.
Lancer une discussion
De nos jours, il existe de nombreux systèmes de navigation pour les voitures. Certains assument même la responsabilité de conduire les passagers en toute sécurité vers leur destination. Mais avant de déterminer le meilleur itinéraire entre un point A et un point B, les voitures autonomes doivent être en mesure d’exécuter une série de déplacements prédéfinis par l’utilisateur.
Encouragez la réflexion interactive.
Demandez à vos élèves de réfléchir à ces questions :
- Qu’est-ce qu’une voiture autonome et comment cela fonctionne-t-il ?
- Comment la voiture autonome sait-elle où se diriger ?
- Quels déplacements la voiture doit-elle effectuer pour se diriger dans les rues d’une ville sur un axe nord, sud, est, ouest ?
Laissez-leur un peu de temps pour répondre à ces questions.
Incitez vos élèves à documenter leurs idées initiales et à expliquer pourquoi ils ont choisi cette solution pour leur premier prototype. Demandez-leur de décrire comment ils comptent évaluer leurs idées tout au long du projet. Ainsi, lors de la phase de révision et d’adaptation, ils disposeront d’informations spécifiques pour évaluer leur solution et décider si elle est efficace.
Le pseudocode est un excellent outil pour aider les élèves à organiser leurs idées avant de commencer à programmer.
Astuces de construction
Commencez par construire un véhicule. Les élèves peuvent utiliser l’un des modèles de base motrice LEGO® MINDSTORMS® EV3 proposés ou développer leur propre conception. Assurez-vous que l’espace est suffisant au niveau des boutons situés au-dessus de la brique EV3. Dans cette activité, ils serviront à contrôler la direction.
Astuces de codage
Expliquez à vos élèves qu’ils vont programmer leur robot afin qu’il se déplace selon un ensemble d’instructions préenregistrées, qui lui seront transmises via les boutons de la brique EV3. Utilisez les paramètres suivants :
- Appui sur le bouton du haut : le robot avance de 30 cm.
- Appui sur le bouton du bas : le robot recule de 30 cm.
- Appui sur le bouton gauche : le robot tourne de 90 degrés vers la gauche.
- Appui sur le bouton droit : le robot tourne de 90 degrés vers la droite.
Enregistrement d’une action pour faire bouger le robot
Explication du programme
Démarrer le programme.
Créer un bloc Variable appelé « Conduite ».
Attendre qu’un bouton de la brique soit enfoncé.
Jouer le son « Click 2 ».
Enregistrer la valeur numérique du bouton enfoncé dans la variable « Conduite ».
Attendre 2 secondes.
Jouer le son « G02 ».
Lire le nombre enregistré dans la variable « Conduite » et envoyer la valeur à un sélecteur.
Sélecteur numérique :
a. Si Conduite = 0 (condition par défaut), ne rien faire.
b. Si Conduite = 1, faire tourner le robot vers la gauche.
c. Si Conduite = 3, faire tourner le robot vers la droite.
d. Si Conduite = 4, faire avancer le robot tout droit pendant 2 rotations des roues.
e. Si Conduite = 5, faire reculer le robot tout droit pendant 2 rotations des roues.Jouer le son « Game Over 2 ».
Enregistrement de plusieurs actions pour faire bouger le robot
Le bloc Opérations sur tableaux permet d’enregistrer une séquence de données. On le décrit souvent comme un tableau composé d’une seule ligne et de plusieurs colonnes.
Explication de la solution
- Démarrer le programme.
- Créer un bloc Variable appelé « Conduite ». Choisir l’option « Écrire - Tableau de nombres ».
- Créer une boucle. L’exemple de code est défini pour s’exécuter 5 fois.
- Attendre qu’un bouton de la brique soit enfoncé.
- Jouer le son « Click ».
- Lire le bloc Variable « Conduite ». Choisir l’option « Lire - Tableau de nombres ».
- Utiliser le bloc Opérations sur tableaux. Choisir l’option « Écrire à l'indice - Numérique ».
a. Relier le bloc Variable « Conduite ».
b. Relier l’indice de boucle entre l’avant de la boucle et l’emplacement de l’indice sur le bloc Opérations sur tableaux.
c. Relier la valeur entre le bloc Attendre bouton EV3 et l’emplacement de la valeur sur le bloc Opérations sur tableaux.
- Écrire le résultat du bloc Opérations sur tableaux dans le bloc Variable « Conduite ».
- Attendre 2 secondes.
- Jouer le son « Go ».
- Créer une deuxième boucle. L’exemple de code est défini pour s’exécuter 5 fois, tout comme la première boucle.
- Lire le bloc Variable « Conduite ». Choisir l’option « Lire - Tableau de nombres ».
- Utiliser le bloc Opérations sur tableaux. Choisir l’option « Lire à l'indice - Numérique ».
- Sélecteur numérique :
a. Si Conduite = 0 (condition par défaut), ne rien faire.
b. Si Conduite = 1, faire tourner le robot vers la gauche.
c. Si Conduite = 3, faire tourner le robot vers la droite.
d. Si Conduite = 4, faire avancer le robot tout droit pendant 2 rotations des roues.
e. Si Conduite = 5, faire reculer le robot tout droit pendant 2 rotations des roues.
- Jouer le son « Game Over 2 ».
Onglets « 1 » et « 2 »
Solutions de programme EV3 MicroPython
Enregistrement d’une action pour faire bouger le robot
#!/usr/bin/env pybricks-micropython
from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor
from pybricks.parameters import Port, Stop, Button, SoundFile
from pybricks.tools import wait
from pybricks.robotics import DriveBase
# The Left, Right, Up, and Down Buttons are used to command the robot.
COMMAND_BUTTONS = (Button.LEFT, Button.RIGHT, Button.UP, Button.DOWN)
# Configure 2 motors with default settings on Ports B and C. These
# will be the left and right motors of the Driving Base.
left_motor = Motor(Port.B)
right_motor = Motor(Port.C)
# The wheel diameter of the Robot Educator Driving Base is 56 mm.
wheel_diameter = 56
# The axle track is the distance between the centers of each of the
# wheels. This is 118 mm for the Robot Educator Driving Base.
axle_track = 118
# The Driving Base is comprised of 2 motors. There is a wheel on each
# motor. The wheel diameter and axle track values are used to make the
# motors move at the correct speed when you give a drive command.
robot = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)
# Wait until one of the command buttons is pressed.
while not any(b in brick.buttons() for b in COMMAND_BUTTONS):
wait(10)
# Store the pressed button as the drive command.
drive_command = brick.buttons()[0]
brick.sound.file(SoundFile.CLICK)
# Wait 2 seconds and then play a sound to indicate that the robot is
# about to drive.
wait(2000)
brick.sound.file(SoundFile.GO)
wait(1000)
# Now drive the robot using the drive command. Depending on which
# button was pressed, drive in a different way.
# The robot turns 90 degrees to the left.
if drive_command == Button.LEFT:
robot.drive_time(100, -90, 1000)
# The robot turns 90 degrees to the right.
elif drive_command == Button.RIGHT:
robot.drive_time(100, 90, 1000)
# The robot drives straight forward 30 cm.
elif drive_command == Button.UP:
robot.drive_time(100, 0, 3000)
# The robot drives straight backward 30 cm.
elif drive_command == Button.DOWN:
robot.drive_time(-100, 0, 3000)
# Play a sound to indicate that it is finished.
brick.sound.file(SoundFile.GAME_OVER)
wait(2000)
Enregistrement de plusieurs actions pour faire bouger le robot
#!/usr/bin/env pybricks-micropython
from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor
from pybricks.parameters import Port, Stop, Button, SoundFile
from pybricks.tools import wait
from pybricks.robotics import DriveBase
# The Left, Right, Up, and Down Buttons are used to command the robot.
COMMAND_BUTTONS = (Button.LEFT, Button.RIGHT, Button.UP, Button.DOWN)
# Configure 2 motors with default settings on Ports B and C. These
# will be the left and right motors of the Driving Base.
left_motor = Motor(Port.B)
right_motor = Motor(Port.C)
# The wheel diameter of the Robot Educator Driving Base is 56 mm.
wheel_diameter = 56
# The axle track is the distance between the centers of each of the
# wheels. This is 118 mm for the Robot Educator Driving Base.
axle_track = 118
# The Driving Base is comprised of 2 motors. There is a wheel on each
# motor. The wheel diameter and axle track values are used to make the
# motors move at the correct speed when you give a drive command.
robot = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)
# Pressing a button stores the command in a list. The list is empty to
# start. It will grow as commands are added to it.
drive_command_list = []
# This loop records the commands in the list. It repeats until 5
# buttons have been pressed. This is done by repeating the loop while
# the list contains less than 5 commands.
while len(drive_command_list) < 5:
# Wait until one of the command buttons is pressed.
while not any(b in brick.buttons() for b in COMMAND_BUTTONS):
wait(10)
# Add the pressed button to the command list.
drive_command_list.append(brick.buttons()[0])
brick.sound.file(SoundFile.CLICK)
# To avoid registering the same command again, wait until the Brick
# Button is released before continuing.
while any(brick.buttons()):
wait(10)
# Wait 2 seconds and then play a sound to indicate that the robot is
# about to drive.
wait(2000)
brick.sound.file(SoundFile.GO)
wait(1000)
# Now drive the robot using the list of stored commands. This is done
# by going over each command in the list in a loop.
for drive_command in drive_command_list:
# The robot turns 90 degrees to the left.
if drive_command == Button.LEFT:
robot.drive_time(100, -90, 1000)
# The robot turns 90 degrees to the right.
elif drive_command == Button.RIGHT:
robot.drive_time(100, 90, 1000)
# The robot drives straight forward 30 cm.
elif drive_command == Button.UP:
robot.drive_time(100, 0, 3000)
# The robot drives straight backward 30 cm.
elif drive_command == Button.DOWN:
robot.drive_time(-100, 0, 3000)
# Play a sound to indicate that it is finished.
brick.sound.file(SoundFile.GAME_OVER)
wait(2000)
Extensions
Extension Langue française
Option 1
Utilisation d’une programmation basée sur du texte :
- Demandez à vos élèves d’étudier différentes solutions de programme basées sur du texte afin qu’ils puissent comparer différents langages de programmation.
Option 2
Dans le cadre de cette leçon, vos élèves ont créé une voiture autonome qui fonctionnait selon les instructions qui lui étaient communiquées dans un tableau. Que se passerait-il si, à l’avenir, les voitures autonomes pouvaient être programmées pour transgresser les instructions de leurs conducteurs humains ?
Pour intégrer des notions d’arts du langage, demandez à vos élèves :
- de rédiger un argument soutenant l’affirmation selon laquelle les voitures autonomes ne devraient pas être capables de contrôler elles-mêmes leur vitesse malgré les instructions de leur passager ;
- d’inclure des preuves spécifiques de la validé de cette affirmation, en citant des exemples de situations dans lesquelles cela pourrait être préjudiciable pour le passager ;
- de veiller à aborder l’affirmation inverse, autrement dit qu’un contrôle indépendant de la vitesse par les voitures autonomes pourrait être une stratégie efficace pour accroître la sécurité routière ou du conducteur.
Extension Maths
Dans le cadre de cette leçon, vos élèves ont créé une séquence d’instructions « virage par virage » pour une voiture autonome. À l’aide de capteurs et de l’apprentissage automatique, les voitures autonomes peuvent suivre des instructions et modifier l’exécution de ces dernières en fonction de nouvelles conditions.
Pour intégrer des notions de mathématiques et explorer les applications de l’apprentissage automatique dans le domaine des voitures autonomes, donnez à vos élèves un « budget » d’un certain nombre de virages. Ensuite, demandez-leur :
- de créer une grille représentant les rues d’une ville (p. ex., cinq rues allant d’est en ouest et cinq rues qui vont du nord au sud) ;
- de choisir un point de départ et une destination, et, sachant que le meilleur itinéraire est celui qui comporte le moins de virages, d’analyser trois intersections entre le point de départ et la destination ;
- de déterminer la probabilité que leur véhicule arrive à destination « dans le respect du budget » en empruntant une direction aléatoire.
Opportunités d’évaluation
Checklist d’observation de l’enseignant
Créez un barème adapté à vos besoins, par exemple :
- Objectif partiellement atteint
- Objectif atteint
- Objectif dépassé
Utilisez les critères suivants pour évaluer la progression de vos élèves :
- Les élèves identifient les éléments clés d’un problème.
- Les élèves développent de manière autonome une solution opérationnelle et créative.
- Les élèves communiquent clairement leurs idées.
Auto-évaluation
Une fois que vos élèves ont recueilli des données sur les performances, donnez-leur le temps de réfléchir à leurs solutions. N’hésitez pas à leur poser des questions comme :
- Votre solution répond-elle aux critères de la présentation du problème ?
- Pouvez-vous rendre les mouvements de votre robot plus précis ?
- Comment les autres ont-ils résolu ce problème ?
Demandez à vos élèves de réfléchir et de documenter deux façons d’améliorer leurs solutions.
Commentaires des camarades
Encouragez vos élèves à s’évaluer entre eux en évaluant leur propre projet mais aussi ceux des autres. Ce processus d’évaluation permet aux élèves d’apprendre à formuler des commentaires constructifs, à développer leur esprit d’analyse et à utiliser des données objectives pour avancer des arguments.
Monde professionnel
Les élèves qui ont apprécié ce cours pourraient être intéressés par les secteurs professionnels suivants :
- Affaires et finance (entrepreneuriat)
- Fabrication et ingénierie (pré-ingénierie)
Support pour l’enseignant
Les élèves doivent :
Utiliser le processus de conception pour résoudre un problème réel.
Sujets abordés : ingénierie, conception, algorithmique
Collège :
- 3ème, technologie
Lycée général :
- Seconde générale, enseignement d’exploration :
- sciences de l’ingénieur
- méthodes pratiques et scientifiques
- informatique et création numérique
- 1ère, toutes séries générales, option informatique et création numérique
- Tle, toutes séries générales, option informatique et création numérique
- Tle, série S, spécialité informatique et sciences du numérique
Lycée technique :
- STI2D, spécialité systèmes d’information et numérique
Matériel destiné aux élèves
Fiche de travail de l’élève
Vous pouvez télécharger, consulter ou partager cette ressource sous la forme d’une page HTML en ligne ou d’un PDF à imprimer.